1.3. Linux カーネルにおけるリソースコントローラー

cgroup サブシステムとも呼ばれるリソースコントローラーは、CPU 時間やメモリーなどの単一リソースを表します。Linux カーネルは、systemd によって自動的にマウントされる一定範囲のリソースコントローラーを提供します。現在マウントされているリソースコントローラーの一覧は、/proc/cgroups で確認するか、または lssubsys モニタリングツールを使用して確認できます。Red Hat Enterprise Linux 7 では、systemd はデフォルトで以下のコントローラーをマウントします。

Red Hat Enterprise Linux 7 で利用可能なコントローラー

  • blkio: ブロックデバイスへの入力アクセスまたはブロックデバイスからの出力アクセスの制限を設定します。
  • cpu: cgroup タスクに CPU へのアクセスを提供するために CPU スケジューラーを使用します。これは同一のマウント時に cpuacct コントローラーと共にマウントされます。
  • cpuacct: cgroup 内のタスクで使用される CPU リソースについての自動レポートを作成します。これは同一のマウント時に cpu コントローラーと共にマウントされます。 
  • cpuset: 個別の CPU (マルチコアシステム上) およびメモリーノードを cgroup 内のタスクに割り当てます。
  • devices: cgroup 内のタスクについてデバイスへのアクセスを許可または拒否します。
  • freezer: cgroup 内のタスクを一時停止または再開します。
  • memory: cgroup 内のタスクによって使用されるメモリーに対する制限を設定し、それらのタスクによって使用されるメモリーリソースについての自動レポートを生成します。
  • net_cls: Linux トラフィックコントローラー (tc コマンド) が特定の cgroup タスクから発信されるパケットを識別することを可能にするクラス識別子 (classid) を使用して、ネットワークパケットにタグを付けます。net_cls のサブシステム net_filter (iptables) もこのタグを使用してパケットなどに対してアクションを実行できます。net_filter は、Linux ファイアウォール (iptables コマンド) が特定の cgroup タスクから発信されるパケット (skb->sk) を識別することを可能にするファイアウォール識別子 (fwid) を使用して、ネットワークソケットにタグを付けます。
  • perf_event: perf ツールを使用した cgroup のモニタリングを可能にします。
  • hugetlb: サイズの大きい仮想メモリーページの使用を許可し、これらのページへのリソース制限を施行します。
Linux カーネルは、systemd で設定できるリソースコントローラーの幅広い範囲の調整可能なパラメーターを公開します。これらのパラメーターの詳細については、カーネル関連のドキュメント (コントローラー固有のカーネルについてのドキュメント にある参照情報の一覧) を参照してください。