我々は、cgroups
プロセスのCPU使用量を制限することが可能であることを知っています。例は次のとおりです。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30142 root 20 0 104m 2520 1024 R 99.7 0.1 14:38.97 sh
pidが30142のプロセスがあります。次のように制限できます。
mkdir -p /sys/fs/cgroup/memory/foo
echo 1048576 > /cgroup/memory/foo/memory.limit_in_bytes
echo 30142 > /cgroup/memory/foo/tasks
ご覧のとおり、プロセスを制限するには、まずこれを実行してから、そのpidに基づいて制限できます。名前に基づいてプロセスを制限することは可能ですか?プロセスを実行する前にプロセスを制限できますか?
答え1
制御グループはpidに基づいており、名前にプロセスを制限する直接的な方法はありません。 (制御グループは階層的であるため、これは意味があります。デフォルトでは、グループにはそのメンバープロセスの将来の子も含まれており、名前で別のグループに再接続するのは驚くべきことです。)
制御グループを使用する一般的な方法は、親プロセスを制御グループにリンクし、子プロセスが親プロセスグループを継承するという事実に依存することです。ただし、特定のグループでプロセスを開始できるツールがありますcgexec
。
cgexec -g memory:foo yourcommand
Debian ではこれを見つけることができますcgroup-tools
。