44.2. Linux カーネルリソースコントローラーとは
コントロールグループの機能は、カーネルリソースコントローラーで有効化します。RHEL 8 は、コントロールグループバージョン 1 (cgroups-v1
) および コントロールグループバージョン 2 (cgroups-v2
) のさまざまなコントローラーをサポートします。
コントロールグループサブシステムとも呼ばれるリソースコントローラーは、1 つのリソース (CPU 時間、メモリー、ネットワーク帯域幅、ディスク I/O など) を表すカーネルサブシステムです。Linux カーネルは、systemd
システムおよびサービスマネージャーが自動的にマウントされるリソースコントローラーの範囲を指定します。/proc/cgroups
エントリーで現在マウントされているリソースコントローラーのリストを検索します。
cgroups-v1
では、以下のコントローラーを使用できます。
-
blkio
- ブロックデバイスへの入出力アクセスに制限を設定できます。 -
cpu
- コントロールグループのタスクに対して、Completely Fair Scheduler (CFS) スケジューラーのパラメーターを調整できます。これは、同じマウントでcpuacct
コントローラーとともにマウントされます。 -
cpuacct
- コントロールグループ内のタスクが使用する CPU リソースに関する自動レポートを作成します。これは、同じマウント上のcpu
コントローラーとともにマウントされます。 -
cpuset
- コントロールグループタスクが CPU の特定のサブセットでのみ実行されるように制限したり、指定メモリーノードでのみメモリーを使用できるようにタスクに指示したりできます。 -
デバイス
- コントロールグループのタスクに関してデバイスへのアクセスを制御できます。 -
freezer
- コントロールグループのタスクを一時停止または再開するのに使用できます。 -
memory
- コントロールグループ内のタスクでメモリー使用を設定し、そのタスクによって使用されるメモリーリソースに関する自動レポートを生成するのに使用できます。 -
net_cls
- 特定のコントロールグループタスクから発信されたパケットを識別できるようにするために Linux トラフィックコントローラー (tc
コマンド) を有効にするクラス識別子 (classic
) でネットワークパケットをタグ付けします。net_cls
のサブシステムnet_ filter
(iptables) でも、このタグを使用して、そのようなパケットに対するアクションを実行することができます。net_filter
は、ファイアウォール識別子 (fwid
) でネットワークソケットをタグ付けします。これにより、(iptables
コマンドで) Linux ファイアウォールが、特定のコントールグループタスクから発信されたパケットを識別できるようになります。 -
net_prio
- ネットワークトラフィックの優先度を設定します。 -
pids
- コントロールグループ内の多数のプロセスと子に制限を設定できます。 -
perf_event
-perf
パフォーマンス監視およびレポートユーティリティーにより、監視するタスクをグループ化できます。 -
rdma
- コントロールグループ内のリモートダイレクトメモリーアクセス/InfiniB 固有のリソースに制限を設定できます。 -
hugetlb
- コントロールグループ内のタスクで大容量の仮想メモリーページの使用を制限するのに使用できます。
cgroups-v2
では、次のモードを使用できます。
-
io
-cgroups-v1
のblkio
へのフォローアップ -
memory
-cgroups-v1
のメモリー
へのフォローアップ -
pids
-cgroups-v1
のpids
と同じ -
RDMA
-cgroups-v1
のrdma
と同じ -
cpu - cpu
-cgroups-v1
のcpu
とcpuacct
へのフォローアップ -
cpuset
- コア機能 (cpus{,.effective}
,mems{,.effective}
) のみを新しいパーティション機能でサポートします。 -
perf_event
- サポートは継承され、明示的な制御ファイルはありません。perf
コマンドにv2 cgroup
をパラメーターとして指定でき、対象のcgroup
内のタスクすべてがプロファイリングされます。
リソースコントローラーは、cgroups-v1
階層または cgroups-v 2
階層のいずれかで使用できますが、両方を同時に使用することはできません。
関連情報
-
cgroups(7)
の man ページ -
/usr/share/doc/kernel-doc-<kernel_version>/Documentation/cgroups-v1/
ディレクトリー内のドキュメント (kernel-doc
パッケージをインストールした後)。