第24章 cgroups-v2 を使用したアプリケーションへの CPU 時間配分の制御
一部のアプリケーションが CPU 時間を多く使用し過ぎて、環境全体の健全性に悪影響を与える場合があります。アプリケーションを コントロールグループバージョン 2 (cgroups-v2
) に配置し、それらのコントロールグループの CPU 制限を設定できます。その結果、アプリケーションの CPU 消費を調整できます。
ユーザーには、コントロールグループに割り当てられる CPU 時間の配分を調整する方法が 2 つあります。
24.1. cgroups-v2 のマウント
RHEL 8 は、システムの起動プロセス中に、デフォルトで cgroup-v1
仮想ファイルシステムをマウントします。cgroup-v2
機能を使用してアプリケーションのリソースを制限するには、システムを手動で設定します。
前提条件
- root 権限がある。
手順
systemd
システムおよびサービスマネージャーによるシステムブート中に、デフォルトでcgroups-v2
をマウントするようにシステムを設定します。# grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="systemd.unified_cgroup_hierarchy=1"
これにより、必要なカーネルコマンドラインパラメーターが現在のブートエントリーに追加されます。
systemd.unified_cgroup_hierarchy=1
パラメーターをすべてのカーネルブートエントリーに追加するには、次の手順に従います。# grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
- システムを再起動して、変更を有効にします。
検証
必要に応じて、
cgroups-v2
ファイルシステムがマウントされていることを確認します。# mount -l | grep cgroup cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,seclabel,nsdelegate)
cgroups-v2
ファイルシステムが/sys/fs/cgroup/
ディレクトリーに正常にマウントされました。必要に応じて、
/sys/fs/cgroup/
ディレクトリーの内容を確認します。# ll /sys/fs/cgroup/ -r—r—r--. 1 root root 0 Apr 29 12:03 cgroup.controllers -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.max.depth -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.max.descendants -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.procs -r—r—r--. 1 root root 0 Apr 29 12:03 cgroup.stat -rw-r—r--. 1 root root 0 Apr 29 12:18 cgroup.subtree_control -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.threads -rw-r—r--. 1 root root 0 Apr 29 12:03 cpu.pressure -r—r—r--. 1 root root 0 Apr 29 12:03 cpuset.cpus.effective -r—r—r--. 1 root root 0 Apr 29 12:03 cpuset.mems.effective -r—r—r--. 1 root root 0 Apr 29 12:03 cpu.stat drwxr-xr-x. 2 root root 0 Apr 29 12:03 init.scope -rw-r—r--. 1 root root 0 Apr 29 12:03 io.pressure -r—r—r--. 1 root root 0 Apr 29 12:03 io.stat -rw-r—r--. 1 root root 0 Apr 29 12:03 memory.pressure -r—r—r--. 1 root root 0 Apr 29 12:03 memory.stat drwxr-xr-x. 69 root root 0 Apr 29 12:03 system.slice drwxr-xr-x. 3 root root 0 Apr 29 12:18 user.slice
/sys/fs/cgroup/
ディレクトリーはルートコントロールグループとも呼ばれ、デフォルトでは、インターフェイスファイル (cgroup
で始まる) と、cpuset.cpus.effective
などのコントローラー固有のファイルが含まれます。さらに、/sys/fs/cgroup/init.scope
、/sys/fs/cgroup/system.slice
、および/sys/fs/cgroup/user.slice
など、systemd
に関連するディレクトリーがいくつかあります。
関連情報
- コントロールグループについて
- Linux カーネルリソースコントローラーとは
-
cgroups(7)
、sysfs(5)
の man ページ