cgroups概要
cgroupはリソースごとにコントローラーが存在し、コントローラーはcgroupfsという特別なファイルシステムを介して使います。 このファイルシステムは、ストレージデバイス上に存在するわけではなく、メモリ上にだけ存在します。
Ubuntu20.04では /sys/fs/cgroup ディレクトリ以下に、各コントローラーに対応するcgroupファイルシステムがマウントされています。
cgroupsは、Linuxカーネルの一部として提供されており、コマンドラインツール(通常は「cgroup-tools」パッケージに含まれています)やAPIを介して操作することができます。
cgroupsはファイルとして扱う
cgroupfsという名前の仮想ファイルシステムにディレクトリーを作成することにより、システム上の cgroup 階層を管理できます。
デフォルトのパスは/sys/fs/cgroup/
です。
新規プロセスを作ってみる
次のように、cgroup配下にフォルダーを作成することで新規プロセスを作成することができます。
mkdir /sys/fs/cgroup/Example/
/sys/fs/cgroup/Example/ ディレクトリーには、memory および pids コントローラー用のコントローラー固有のファイルも含まれます。
これらのファイルは、linux kernelに含まれる、cgroupsによって自動的に作成されたものです。
cat /sys/fs/cgroup/cgroup.controllers
実際にlinux環境下で上記のコマンドを打つとプロセスが見えると思います。
ブラウザを開いてcgroupsを見てみる。
1.まずはブラウザを開き、ターミナルでtop
コマンドを入力します。
top
この時に開いたブラウザのPIDをtop
で確認しましょう。
今回だと、PID:2331ですね。
2.PIDをメモしたらq
を押してtop
コマンドを終了します。
3./proc
配下にあるプロセスを確認しょう。
cat /proc/2331/cgroup
プロセスが属する cgroup を表示するには、cat proc/<PID>/cgroup
コマンドを実行します。
4./sys/fs/cgroup
配下を調べる
先ほど調べた結果を、/sys/fs/cgroup
配下で調べましょう。
プロセスに関する情報が記述されてますね!