第1章 コントロールグループ (Cgroups) の概要
1.1. コントロールグループとは
コントロールグループ (このガイドでの略称 cgroup) は、Linux カーネルの機能のことで、システムで実行されているプロセスのグループを階層的に順序付けて、そのグループ間で CPU 時間、システムメモリー、ネットワーク帯域幅、またはこのようなリソースの組み合わせなど、リソースの割り当てが可能になります。cgroup を使用することにより、システム管理者は、システムリソースの割り当て、優先順位付け、拒否、管理、および監視をきめ細かく制御できます。ハードウェアリソースをアプリケーションとユーザー間でスマートに分割できるため、全体的な効率が向上します。
制御グループは、プロセスを階層的にグループ化してラベル付けして、そのようなグループにリソース制限を適用する方法を提供します。従来は、全プロセスは、同様のシステムリソースを受け取っていました。このリソースは、管理者がプロセスの nice 値で調節できていました。このアプローチでは、これらのアプリケーションの相対的な重要性に関係なく、プロセス数が多いアプリケーションは、少数のプロセスを含むアプリケーションよりも多くのリソースを受け取っていました。
Red Hat Enterprise Linux 7 では、cgroup 階層のシステムを systemd ユニットツリーにバインドすることにより、リソース管理設定をプロセスレベルからアプリケーションレベルに移行します。したがって、systemctl コマンドを使用するか、systemd ユニットファイルを変更することで、システムリソースを管理できます。詳細は、2章コントロールグループの使用 を参照してください。
以前のバージョンの Red Hat Enterprise Linux では、システム管理者が libcgroup パッケージの cgconfig コマンドを使用してカスタム cgroup 階層を構築していました。このパッケージは非推奨になり、デフォルトの cgroup 階層と簡単に競合する可能性があるため、使用はお勧めしません。ただし、libcgroup は、net-prio サブシステムを使用する場合など、systemd がまだ適用されていない特定のケースに対応するために引き続き利用できます。3章libcgroup ツールの使用を参照してください。
前述のツールは、Linux カーネルの cgroup コントローラー (サブシステムとも呼ばれます) とやり取りするための高レベルのインターフェイスを提供します。リソース管理用の主要な cgroup コントローラーは、cpu、memory、および blkio です。デフォルトで有効になっているコントローラーのリストについては、Red Hat Enterprise Linux 7 で利用可能なコントローラー を参照してください。リソースコントローラーとその設定可能なパラメーターの詳細は、コントローラー固有のカーネルドキュメント を参照してください。