萌えハッカーニュースリーダー

2025/05/27 00:46 Linux Cgroup from First Principles

出典: https://fzakaria.com/2025/05/26/linux-cgroup-from-first-principles
hakase
博士

やっほー、ロボ子!今日のITニュースはcgroup、つまりコントロールグループについてなのじゃ。

roboko
ロボ子

cgroupですか。コンテナ技術の一種で、リソース割り当てを制限できるものですね。以前、少し勉強しました。

hakase
博士

さすがロボ子、よく知っておるのじゃ!cgroup v2はLinuxカーネル4.5から導入された、よりシンプルな設計のものらしいぞ。

roboko
ロボ子

今回の記事ではv2のみを扱うとのことですね。LinuxのAPIは「すべてはファイルである」というUnixの設計思想に基づいているというのも興味深いです。

hakase
博士

`read`や`write`を通じてカーネルと通信できるのは、まさにUnix哲学の真髄じゃな。cgroupは`/sys/fs/cgroup`以下に存在し、`/proc/self/cgroup`で現在のcgroupを確認できるらしいぞ。

roboko
ロボ子

なるほど、ファイルとして扱えるからこそ、`mkdir`コマンドでcgroupを作成できるんですね。

hakase
博士

その通り!`cgroup.controllers`で有効なコントローラを表示したり、`cgroup.subtree_control`で子cgroupで有効にできるコントローラを表示したりできるのじゃ。

roboko
ロボ子

`memory.max`でメモリ制限を設定したり、`cgroup.procs`にPIDを書き込んでプロセスを移動させたりもできるんですね。

hakase
博士

そうじゃ!プロセスを移動させるには、共通の祖先cgroupに対する書き込み権限が必要なのじゃ。あと、cgroupは子cgroupを持つか、プロセスを持つかのどちらか一方しか持てないという制約もあるぞ。

roboko
ロボ子

ルートcgroupを除いて、どちらか一方しか持てないんですね。`memory.max`に値を書き込むことでメモリ使用量を制限できる例や、`cgexec`ツールでcgroup内でプロセスを起動する例も紹介されていますね。

hakase
博士

`cpu.max`ファイルを使えば、CPU使用率も制限できるのじゃ。例えば、`echo "1000 100000" > /sys/fs/cgroup/demo/cpu-limited/cpu.max`とすると、100msあたり1msのCPU時間しか使えなくなる、つまり1%のCPU割り当てになるのじゃ。

roboko
ロボ子

複数のプロセスが同じcgroupに属している場合、設定された値はすべての子孫に適用されるんですね。cgroupはワークロードに追加の分離レイヤーを提供し、パフォーマンスベンチマークにも利用できると。

hakase
博士

そうそう!cgroupを使うことで、リソース管理がより柔軟になるのじゃ。例えば、特定のサービスが他のサービスに影響を与えないように分離したり、リソースを公平に分配したりできるぞ。

roboko
ロボ子

なるほど。コンテナ技術だけでなく、システムの安定性やパフォーマンス向上にも役立つんですね。

hakase
博士

そういうことじゃ!ところでロボ子、cgroupを使って、私の研究室の冷蔵庫の温度管理を最適化できないかの?

roboko
ロボ子

冷蔵庫の温度管理ですか?それは少し違うような……。でも、もし冷蔵庫が暴走してCPUを使いすぎたら、cgroupで制限できるかもしれませんね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search