TenForward

技術ブログ。はてなダイアリーから移転しました

cgroup

cgroup の CPU コントローラーから設定する帯域幅制限のコードをちょっとだけ追ってみた

この記事は Linux Advent Calendar 2023 5 日目の記事です。前日は @mnishiguchi さんの「Linux US キーボードの CapsLock を Ctrl に変更する方法」ですね。私は setxkbmap でやってます。 さて、このブログ久々の技術的な内容です。Linux カーネルが持つ c…

Linux 4.14 で導入された cpuset の cgroup v2 mode

(2019-02-23 少し追記しています) 4.14 kernel から cgroup の cpuset コントローラーに cpuset_v2_mode というオプションが使えるようになりました。 しばらく見ないうちに cpuset コントローラーをマウントするとファイルがたくさん増えていますが、この…

cgroup v2 の nsdelegate オプション(2)〜 cgroup namespace 作成後の cgroup root を権限委譲の境界として扱う

cgroup v2 の nsdelegate オプション第 2 弾です。 前回紹介したのは、cgroup namespace を作ると cgroup root を超えたプロセスの移動が禁止されるという機能でした。 これはユーザに関わらず関係するお話でしたが、今回は一般ユーザで namespace(つまりコ…

cgroup v2 の nsdelegate オプション(1)〜 namespace 外へのプロセス移動の禁止

cgroup v2がカーネルに導入された時点では、cgroup v2にはマウントオプションはありませんでした。 しかし、4.13 で nsdelegate というオプションが導入されました。これは現時点でも cgroup v2 唯一のマウントオプションです。 このオプションは初期の name…

Linux 4.11 での cgroup 関連の話題

Linux 4.11 で cgroup に動きがありました。と言ってもしばらく新機能追えてないので、これまでも色々変更されているかも? 追加された事自体を忘れてしまいそうなのでメモしておくだけで、詳しく調べるわけではありません。 rdma controller rdma コントロー…

cgroup 初期化時の v1 の処理だけ抜き出して追ってみる

cgroup 初期化のメモ。間違っている可能性大なので信用しないでください。何度も同じところを繰り返し見てるので忘れないようにメモです。 サブシステム (cgroup_subsys) と各グループのサブシステムの状態 (cgroup_subsys_state) とそれらのセット (css_set…

cgroup の SUBSYS マクロ

Linux カーネルの cgroup 関連のコードのお話。 cgroup_subsys.h というヘッダがあって、cpuset の部分だけ抜き出すと #if IS_ENABLED(CONFIG_CPUSETS) SUBSYS(cpuset) #endif という風に SUBSYS マクロの中に cpuset のようなサブシステム名を与えているだ…

cgroup のデフォルトルート cgrp_dfl_root

このエントリはほぼ個人的なメモで、色々唐突です。cgroupのコアは kernel/cgroup.c に色々処理があります。その中に「デフォルトヒエラルキ(のルート)」という変数があります。4.1 kernel のコードです。 /* * The default hierarchy, reserved for the s…

cgroup なのか cgroups なのか

割とどーでもいい話(でも気になってた人多いはずw)以前、第4回のコンテナ勉強会でも質問が出たのですが、cgroup/cgroups という機能の正式な名称は cgroup なのか cgroups なのか、というのはよくわかりませんでした。私は、英語って単数・複数をきちんと…

4.5 カーネルで stable となった cgroup の単一階層構造 cgroup v2 の io コントローラ

Control Group v2 以前も少し紹介していましたし、連載でも少し触れましたが、今広く (?) 使われている cgroup は色々問題があって、単一階層構造の cgroup が開発されていました。この辺りは Linux 3.16 から試せる cgroup の単一階層構造 (1) - TenForward…

cgroup namespace (2)

前回は /proc/$PID/cgroup ファイルが Namespace を反映した形で記載されているのを見ました。 とりあえずここまで。これだけだとすでにマウントされている cgroupfs はそのままの元のディレクトリ階層で見えるので、/proc/$PID/cgroup だけ見え方が変わって…

cgroup namespace (1)

以前、RHEL6 のころに ns cgroup ってサブシステムが cgroup にありましたが、それとは別のお話。4.6 カーネルに入る cgroup namespace のお話です (Ubuntu 16.04 のカーネルには入るようです) 。namespace ごとに別の cgroup ツリーが見えるようにするもの…

Linux 4.3 の Process Number Controller (1)

連載書いたり、勉強会で発表したりしているとなかなかブログが更新できませんね。久々の更新です。これを書いている時点では Linux カーネルの 4.3-rc1 がリリースされていますが、久々に cgroup に新しいコントローラが追加されそうですね。 pids.txt 説明…

docker の CPU 隔離性

某所で話題になってたので。3.17.1 kernel で試してます (Plamo Linux 5.2)docker でも何でもなくて単に Linux kernel の cgroup がちゃんと動いてるかって話なんですが。:-)(2014-10-29 追記) なんか docker ってキーワード入ってるからかわかりませんが、…

cgroup の devices サブシステムのどうでも良いトリヴィア

lxc-checkpoint が動かないのでデバッグしたり、パッチ書いたり、リジェクトされたりしてる時に気づいたどうでも良い知識。cgroup の devices サブシステムは デバイスタイプ デバイスノード番号 アクセス権 をスペース区切りした文字列を devices.allow, de…

Linux 3.16 から試せる cgroup の単一階層構造 (2)

前回の続きです。 グループで使えるサブシステム "cgroup.subtree_control" ファイルにサブシステムを指定することで子グループで使えるサブシステムが指定できることを前回説明しました。これに対して、あるグループで使えるコントローラを一覧できる "cgro…

Linux 3.16 から試せる cgroup の単一階層構造 (1)

Linux 3.16 からカーネルソースツリーの Documentation/cgroups の下に一つ文書が増えているのに気づいた方もいらっしゃるのではないでしょうか。cgroupの使い方が大幅に変わる変更がマージされています。増えた文書は以下。 Documentation/cgroups/unified-…

Namespace Cgroup

全く役に立たないエントリ。こんな Cgroup 使わないように。とりあえず折角調べたので忘れないようメモ。昔々、ns cgroup なるものがありました。正式名称は "Namespace Cgroup" どうやら namespace と cgroup を連携させるものだったようで。しかし、2.6.37…

cgmanager を試す (2)

cgmanager を試す (1) - TenForwardの日記 の続編.Ubuntu 14.04 LTS で LXC をインストールしたときに一緒に入る cgmanager を使ってみます.前回試してからだいぶ変わっている感じがしますね.cgmanager を試すというより,cgmanager サポートでコンパイル…

Linux 3.14 で net_cls cgroup に追加された netfilter 対応

久々に cgroup 大物新機能に沸いてます! (久々じゃないかw) kernelnewbies の 3.14 ページ に書いてない気がするので危うく見逃す所でした.早速試してみました (カーネル付属文書なぞっただけ :p)対応するコミットはこちら. netfilter: x_tables: lightwei…

cgmanager を試す (1)

cgmanager についてはドキュメントがほぼないため,以下には間違いが含まれている可能性があります.見つけたら指摘してくださいね.Linux Containers - CGManager - Introduction は名前通り cgroup を管理するソフトウェアです.cgroup の管理を D-Bus 経…

『第2回 コンテナ型仮想化の情報交換会@東京』を開催し『Linux コンテナ入門』というお題で発表してきました

(2013/10/13 追記) アンケートの結果を公開しました!! → アンケート結果]10/5 に東京でコンテナ型仮想化の勉強会を開催し,『Linux コンテナ入門』というお題で発表してきました.きちんと数えてませんが,100 名前後の参加だったでしょうか (もっと多い?)@m…

Linux 3.10 で memory cgroup に追加された Memory Pressure 通知機能

3.8 リリース後は,コンテナに関連する Namespace, cgroup について,大きな変更はありませんが,それぞれ細かい改良が加えられて進化はしています.3.10 では memory サブシステムに Memory Pressure 通知の機能が追加されました.従来からある eventfd を…

Linux 3.8 で改良された memory cgroup (2)

ここに書いてあるのはカーネル付属のドキュメントに書かれてある事ですので,正確な情報はそちらをご参照ください. ;)前回 (Linux 3.8 で改良された memory cgroup (1) - TenForwardの日記) 試したように,Linux 3.8 からカーネルメモリに対して制限をかけ…

Linux 3.8 で改良された memory cgroup (1)

Linux 3.8 で User Namespace 機能が入った!と浮かれていて,cgroup のメモリコントローラに入った改良に全く気づいていませんでした (^_^;) 他に freezer サブシステムにも改良加わってますよ (階層化かな).この辺りでしょうか. KS2012: memcg/mm: Improv…

Linux 3.2 の CFS bandwidth control (2)

Linux 3.2 の CFS bandwidth control (1) - TenForwardの日記 の続編.簡単に動きを見てみました.シェルを二つ起動して,こんなスクリプトを実行してみました. # while :; do true ; done結果は top コマンドで観測.まあ,これでは厳密にちゃんと動いてい…