cgroup v1をアンインストールした後でも、/sys/fs/cgroupの下にまだ空のディレクトリがあるのはなぜですか?

cgroup v1をアンインストールした後でも、/sys/fs/cgroupの下にまだ空のディレクトリがあるのはなぜですか?

cgroupちょうどバージョン1を削除しました。cgroup2、私のシステムには1つのインストールのみを残します。

$ mount | grep -i cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=4096k,nr_inodes=1024,mode=755)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)

私の印象は、どちらもcgroup 1のアーティファクトでは/sys/fs/cgroupないということです。バージョン1を/sys/fs/cgroup/unifiedアンインストールした後もこれらのエントリがまだ存在するのはなぜですか?cgroup

$ ls -lh
drwxr-xr-x  2 root root 40 Dec 25 18:57 blkio
lrwxrwxrwx  1 root root 11 Dec 25 18:57 cpu -> cpu,cpuacct
lrwxrwxrwx  1 root root 11 Dec 25 18:57 cpuacct -> cpu,cpuacct
drwxr-xr-x  2 root root 40 Dec 25 18:57 cpu,cpuacct
drwxr-xr-x  2 root root 40 Dec 25 18:57 cpuset
drwxr-xr-x  2 root root 40 Dec 25 18:57 devices
drwxr-xr-x  2 root root 40 Dec 25 18:57 freezer
drwxr-xr-x  2 root root 40 Dec 25 18:57 memory
lrwxrwxrwx  1 root root 16 Dec 25 18:57 net_cls -> net_cls,net_prio
drwxr-xr-x  2 root root 40 Dec 25 18:57 net_cls,net_prio
lrwxrwxrwx  1 root root 16 Dec 25 18:57 net_prio -> net_cls,net_prio
drwxr-xr-x  2 root root 40 Dec 25 18:57 perf_event
drwxr-xr-x  2 root root 40 Dec 25 18:57 pids
drwxr-xr-x  2 root root 40 Dec 25 18:57 rdma
drwxr-xr-x  2 root root 40 Dec 25 18:57 systemd
dr-xr-xr-x 13 root root  0 Dec 26 21:37 unified

残りの一時ディレクトリはカーネルインタフェースではありませんか?

$ find . | grep -v unified
./freezer
./cpuset
./cpu
./cpuacct
./cpu,cpuacct
./rdma
./perf_event
./blkio
./memory
./devices
./net_prio
./net_cls
./net_cls,net_prio
./pids
./systemd

この空のディレクトリはcgroupsv1でどのように機能しますか?

ベストアンサー1

これは、自己内部記録にはcgroup v2を使用しますが、リソース制御にはまだcgroup v1を使用するsystemdの「ハイブリッド」モードにあるためです。 ~からcgroup委任文書:

systemdは3つのcgroup設定モードをサポートしています。具体的には:

  1. つかむ- これは最も簡単なモードで、純粋なcgroup v2ロジックを公開します。このモードでは、/sys/fs/cgroupcgroup APIファイルシステムが唯一マウントされ、利用可能なすべてのコントローラが排他的に公開されます。

  2. 遺産- これは従来のcgroup v1モードです。このモードでは、各コントローラは独自のcgroupファイルシステムを/sys/fs/cgroup/<controller>//sys/fs/cgroup/systemd/

  3. 雑種- 統合モードとレガシーモードが混在しています。/sys/fs/cgroup/unified/cgroup v2階層を含む追加の階層があることを除いて、設定はデフォルトで以前のバージョンと似ています。 (このモードでは、統合階層にコントローラが接続されておらず、コントローラはすべてレガシーモードと同じように別々の階層としてインストールされます。つまり、リソース/sys/fs/cgroup/unified/管理ではなく純粋で排他的にコアcgroup v2機能に関連しています。)の互換性 cgroup v1 を維持しながら、いくつかの cgroup v2 機能も提供します。このモデルは一時的な方法です。自由時間があまりない限り、これにあまり注意を払わないでください。

明らかに、既存のモデルとハイブリッドモデルには未来はありません。今日のソフトウェアを開発し、統合パターンに焦点を当てていない場合は、明日ではなく昨日のためのソフトウェアを書くことです。主に互換性のためにサポートされ、新機能は提供されません。

単にリソースディレクトリを削除すると、systemdは必要なディレクトリ階層にアクセスできなくなるため、ほとんどのリソース制御ディレクティブを実行できません。

systemd.unified_cgroup_hierarchy=1 cgroup_no_v1=all代わりに、内部記録およびリソース制御にcgroup v2を使用する「統合」モードを使用してsystemdを起動するには、カーネルコマンドラインからシステムを起動できます(またはcgroup_no_v1=allv240 +で参照)。今回のパッチ)。

cgroup_no_v1=allすべての古いcgroup階層を無効にして、誰もそれをキャプチャして人質にすることができないようにカーネルに指示し、ディストリビューションでデフォルトで設定された混合階層ではsystemd.unified_group_hierarchy=1なく統合cgroup階層を使用するようにsystemdに指示します。

起動すると、期待どおりにすべてが/sys/fs/cgroupの下にあることがわかります。

% ls -l /sys/fs/cgroup | head
total 0
drwxr-xr-x  2 root root 0 Feb 17 17:19 dev-hugepages.mount/
drwxr-xr-x  2 root root 0 Feb 17 17:19 dev-mqueue.mount/
drwxr-xr-x  2 root root 0 Feb 17 17:19 init.scope/
drwxr-xr-x  2 root root 0 Feb 17 17:19 sys-fs-fuse-connections.mount/
drwxr-xr-x  2 root root 0 Feb 17 17:19 sys-kernel-config.mount/
drwxr-xr-x  2 root root 0 Feb 17 17:19 sys-kernel-debug.mount/
drwxr-xr-x  2 root root 0 Feb 17 17:19 sys-kernel-tracing.mount/
drwxr-xr-x 21 root root 0 Feb 21 13:00 system.slice/
drwxr-xr-x  4 root root 0 Feb 17 17:19 user.slice/

おすすめ記事