1.3. Linux カーネルのリソースコントローラー
cgroup サブシステムとも呼ばれるリソースコントローラーは、CPU 時間やメモリーなど、単一のリソースを表します。Linux カーネルは、systemd によって自動的にマウントされる一連のリソースコントローラーを提供します。
/proc/cgroups で現在マウントされているリソースコントローラーのリストを検索するか、lssubsys 監視ツールを使用します。Red Hat Enterprise Linux 7 では、systemd はデフォルトで以下のコントローラーをマウントします。
Red Hat Enterprise Linux 7 で利用可能なコントローラー
blkio: ブロックデバイスへの入出力アクセスを制限します。cpu: CPU スケジューラーを使用して、cgroup タスクが CPU にアクセスできるようにします。これは、同じマウントでcpuacctコントローラーとともにマウントされます。cpuacct: cgroup 内のタスクが使用する CPU リソースに関する自動レポートを作成します。これは、同じマウント上のcpuコントローラーとともにマウントされます。cpuset: マルチコアシステムとメモリーノードで個別の CPU を cgroup のタスクに割り当てます。devices: cgroup 内のタスクのデバイスへのアクセスを許可または拒否します。freezer: cgroup 内のタスクを一時停止または再開します。memory: cgroup 内のタスクでメモリー使用を設定し、それらのタスクによって使用されるメモリーリソースについての自動レポートを生成します。NET_cls: 特定の cgroup タスクから発信されたパケットを識別できるようにするために Linux トラフィックコントローラー (tc コマンド) を有効にするクラス識別子 (classic) でネットワークパケットをタグ付けします。net_clsのサブシステムnet_filter(iptables) でも、このタグを使用して、そのようなパケットに対するアクションを実行することができます。net_filterは、ファイアウォール識別子 (fwid) でネットワークソケットをタグ付けします。これにより、Linux ファイアウォール (iptables コマンド) が、特定の制御グループタスクから発信されたパケットを識別できるようになります。perf_event: perf ツールを使用して cgroup の監視を有効にします。hugetlb: サイズの大きい仮想メモリーページの使用を許可し、これらのページへのリソース制限を施行します。
Linux カーネルは、systemd で設定できるリソースコントローラー用のさまざまな調整可能なパラメーターを公開します。これらのパラメーターの詳細な説明は、カーネルのドキュメントを参照してください (コントローラー固有のカーネルドキュメント のリファレンス一覧)。