CPU 使用率を制限するために root 以外のユーザーとして cgroup v2 を使用: 権限が拒否されました。

CPU 使用率を制限するために root 以外のユーザーとして cgroup v2 を使用: 権限が拒否されました。

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。)

関連情報