cgroups:pidではなくプロセス名でCPU使用率を制限することは可能ですか?

cgroups:pidではなくプロセス名でCPU使用率を制限することは可能ですか?

我々は、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

おすすめ記事