TenForward

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

Documentation/cgroups/cpuacct.txt

kernel 付属文書の cgroups/cpuacct.txt を訳してみました.誤訳がある可能性はかなり大きいです.

CPU Accounting Controller
-------------------------

CPU アカウンティングコントローラは,cgroup を使ったタスクのグループ化
と,これらのタスクの CPU 使用率のアカウンティングを行います.

CPU アカウンティングコントローラは,複数の階層構造のグループをサポート
します.アカウンティンググループは,自分のグループの子供の全てと,グルー
プの直接のタスクの全ての CPU 消費を累積します.

アカウンティンググループは,まず最初に cgroup ファイルシステムをマウン
トすることで作ることができます.

  # mkdir /cgroups
  # mount -t cgroup -ocpuacct none /cgroups

上記の手順で,初期の親アカウンティンググループは /cgroups として見えま
す.

  # cd /cgroups
  # mkdir g1
  # echo $$ > g1

上記の手順は,新しいグループ g1 を作成し,現在のシェルプロセス (bash)
をその中に入れています.この bash と子プロセスが消費する CPU 時間は
g1/cpuacct.usage から取得出来ます.同じものが /cgroups/cpuacct.usage
からも得られます.

cpuacct.stat ファイルは,cgroup から得られた CPU 時間をさらにユーザお
よびシステム時間に分割した統計情報を表示します.現在では,以下の統計情
報が表示されます.

  user: cgroup のタスクが消費したユーザ時間
  system: cgroup のタスクが消費したシステム時間

user と system は USER_HZ が単位です.

cpuacct コントローラはユーザとシステム時間の収集に percpu_counter イン
ターフェースを使用します.これには二つの側面があります.

- 理論的には,ユーザとシステム時間に対して間違った値を示す可能性があり
  ます.これは,32bit システムで percpu_counter_read() は同時書き込み
  に対する安全性がないためです.
- ユーザとシステム時間が若干古い情報である可能性があります.これは
  percpu_counter がバッチ処理のためです.