第24章 cgroups-v2 を使用したアプリケーションへの CPU 時間配分の制御
一部のアプリケーションが CPU 時間を多く使用し過ぎて、環境全体の健全性に悪影響を与える場合があります。アプリケーションを コントロールグループバージョン 2 (cgroups-v2) に配置し、それらのコントロールグループの CPU 制限を設定できます。その結果、アプリケーションの CPU 消費を調整できます。
ユーザーには、コントロールグループに割り当てられる CPU 時間の配分を調整する方法が 2 つあります。
24.1. cgroups-v2 のマウント リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8 は、システムの起動プロセス中に、デフォルトで cgroup-v1 仮想ファイルシステムをマウントします。cgroup-v2 機能を使用してアプリケーションのリソースを制限するには、システムを手動で設定します。システムリソースの使用を制御するには、systemd を使用します。特別な場合にのみ、cgroups 仮想ファイルシステムを手動で設定する必要があります。たとえば、cgroup-v2 階層に同等のものがない cgroup-v1 コントローラーを使用する必要がある場合などです。
前提条件
- 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/ディレクトリー (root control group とも呼ばれる) は、デフォルトで、インターフェイスファイル (cgroupで始まる) とcpuset.cpus.effectiveなどのコントローラー固有のファイルを提供します。さらに、/sys/fs/cgroup/init.scope、/sys/fs/cgroup/system.slice、および/sys/fs/cgroup/user.sliceなど、systemdに関連するディレクトリーがいくつかあります。