cgroups v2を使用してプロセスのCPU使用量を制限しようとしています。階層がすでに作成されており、制限が設定されているので、cgroup.procsファイルにpidを作成するだけです。パスはすべて/sys/fs/cgroup/system.slice/myfolder/myfolder/myfolder/cgroup.procs
です。私のファイルsの権限はですdrwxr-xr-x myuser mygroup
。 cgroup.procsファイルの権限はです-rwxrwxrwx myuser mygroup
。しかし、次のコマンドを実行しようとすると:
sudo -H -u myuser bash -c 'echo some_existing_pid > /sys/fs/cgroup/system.slice/myfolder/myfolder/myfolder/cgroup.procs'
次のエラーが発生します。
bash: line 1: echo: write error: Permission denied
考えられる理由は何ですか?
オペレーティングシステム:Ubuntu 22.04
答え1
私の最初の推測は、移動プロセスを許可しないことです外の元のcgroup。カーネルが使用する規則は、プロセスをcgroup Aからcgroup Bに移動する前に、そのプロセスを属するcgroupに移動する権限が必要です。共通の祖先AとBの両方。
(systemdに組み込まれているcgroup階層管理を使用することをお勧めします。つまり、.slice単位を作成して階層を定義し、プロセスを.scope単位に移動することですsystemd-run
。)