~Linux、MySQLからAJAXまでCentOS7のコントロールグループ(CGROUP)とリソース管理CentOS7のコントロールグループ(CGROUP)の概要、systemdユニットタイプ、リソース管理などについてまとめました。※目次をクリックすると目次の下部にコンテンツが表示されます。・コントロールグループとは、リソース管理(CPU時間、システムメモリー、ネットワーク帯域幅など)の目的で、プロセスを名前付きグループのツリーに編成するための概念。・システムリソースの割り当て、優先制御、アクセス制限、モニターなどの管理ができる。・ハードウェアリソースを複数のアプリやユーザーにスマートに割り当てることができ、効率性が向上する。・これらのグループは、プロセスを階層的にグループ化し、ラベル付けを行う方法や、(その)リソース制限をこれらのグループに適用する方法を提供する。・これまでは、管理者がプロセスのnice値で調節できる同様の量のシステムリソースがすべてのプロセスに割り当てられていた。このアプローチでは、アプリケーションの相対的な重要度を問わず、数多くのプロセスが使用されるアプリケーションに対して、多くのリソースが割り当てられていた。・CentOS7では、cpgroup階層のシステムをsystemdユニットツリーにバインドすることにより、リソース管理設定をプロセスレベルからアプリケーションレベルに移行している。・CentOS7では、コントロールグループはsystemdで排他的に管理される。・cgroupsは、systemdユニットファイルで設定され、systemdのコマンドラインインターフェース(CLI)ツールで管理できる。・前のバージョンでは、システム管理者はlibcgroupパッケージのcgconfigコマンドを使用してカスタムcgroup階層を作成する。このパッケージを使用するとデフォルトのcgroup階層との競合が容易に生じるため、現在非推奨になっている。libcgroupはとくにnet-prioサブシステムを使用する場合などsystemdがまだ適用されない特定のケースに対応するために依然として使用することができる。initプロセスの子プロセス。・リソース制御用に3つのユニットタイプを提供。1サービス・ユニット設定ファイルに基づいてsystemdが起動したプロセスまたはプロセスのグループ。・サービスは指定されたプロセスをカプセル化し、これらのプロセスが1つのセットとして起動したり、停止したりできるようにする。・サービスの名前は以下のように指定される。name.service2スコープ・外部で作成されたプロセスのグループ。・スコープはfork()により任意のプロセスで起動し、停止された後に、ランタイム時にsystemdによって登録されたプロセスをカプセル化する。ユーザーセッション、コンテナーおよび仮想マシンはスコープとして処理される。・スコープの名前は以下のように指定される。name.scope3スライス・階層的に編成されたユニットのグループ。・スライスにはプロセスが含まれず、スコープやサービスが置かれる階層を編成する。実際のプロセスはスコープやサービスに含まれる。この階層ツリーでは、スライスユニットのすべての名前は階層内の場所へのパスに対応する。・ダッシュ(“-“)文字はパスコンポーネントの区切り文字として機能する。スライスの名前は以下のようになる。parent-name.sliceこれは、parent-name.sliceというスライスはparent.sliceのサブスライスであることを意味する。このスライスにはparent-name-name2.sliceなどの独自のサブスライスを持たせることができる。・rootスライスは以下のように表示される。・cgroupサブシステムとも呼ばれる。・CPU時間やメモリーなどの単一リソースを表す。・Linuxカーネルは、systemdによって自動的にマウントされる一定範囲のリソースコントローラーを提供する。12lssubsysモニタリングツール以下に示すようにlibcgroup-toolsパッケージに含まれている。・blkioブロックデバイスへの入力アクセスまたはブロックデバイスからの出力アクセスの制限を設定する。・cpucgroupタスクにCPUへのアクセスを提供するためにCPUスケジューラーを使用する。・cpuacctcgroup内のタスクで使用されるCPUリソースについての自動レポートを作成する。内のタスクに割り当てる。・devicescgroup内のタスクについてデバイスへのアクセスを許可または拒否する。・freezercgroup内のタスクを一時停止または再開する。・memorycgroup内のタスクによって使用されるメモリーに対する制限を設定し、それらのタスクによって使用されるメモリーリソースについての自動レポートを生成する。・net_clsLinuxトラフィックコントローラー(tcコマンド)が特定のcgroupタスクから発信されるパケットを識別することを可能にするクラス識別子(classid)を使用して、ネットワークパケットにタグを付ける。・perf_eventperfツールを使用したcgroupのモニタリングを可能にする。・hugetlbサイズの大きい仮想メモリーページの使用を許可し、これらのページへのリソース制限を施行する。・デフォルトで、systemdはスライス、スコープ、サービスの階層を自動作成し、cgroupツリーの統一された構造を提供する。・systemctlコマンドを使用すると、カスタムスライスを作成してこの構造をさらに変更することができる。・systemdは重要なカーネルリソースコントローラーの階層を/sys/fs/cgroup/ディレクトリーに自動マウントする。●サービス、スコープ、スライスのcgroupツリーへのマップ・サービス、スコープ、スライスはcgroupツリー内のオブジェクトに直接マップされる。・これらのユニットがアクティブになると、それぞれがユニット名から作成されるcgroupパスに直接マップされる。例)test-waldo.sliceにあるex.servicecgroupのtest.slice/test-waldo.slice/ex.service/にマップされる。※すべてのユーザーセッションは、仮想マシンやコンテナープロセスと共に分離したスコープユニットに自動的に置かれる事に注意。・systemd-cglsコマンドによって、cgroupのコンテンツを再帰的に表示できる。・プロセスはサービス、スコープに含まれ、サービス、スコープはスライスに置かれている。・-.sliceはツリー全体のrootで暗黙的に識別されるため表示されていない。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。