ユーザーモードでのプロセスアカウンティングから見てみます。現在実行されているプロセスですね。これによりそのプロセスがユーザーモードで使用した時間がそのプロセス内の情報として保存される。そのプロセスの使用時間を追加する。使ったかを最初に計算して、その値を全体での値にも足しこんでいる、という処理になっています。システムモードの方も見てみます。要した時間のいずれだったのかを判定して、足しこみを行っているのが分かります。プロセスアカウンティングのおおまかな処理はこんな感じです。タイマ割り込みを利用してプロセスごとの統計を取ったあと、それを全体の統計に足しこむというのをひたすら繰り返しているわけですね。ツールはこれらの値をどうやって参照するかという話があります。ファイルシステムを経由して取得することができます。/proc/${PID}/statにそれぞれあります。使用率の値としてみることができるようです。統計を見ることができるようになりました。取れなかったようです。プロセスアカウンティングの実装を見てみます。ものに比べるとだいぶ単純(?)な内容になっているのがわかります。計算箇所はどこにもありませんね。上でどのように計算されているのかカーネルのコードを実際に追ってみてみました。状態の数を数えて計算しているCPU使用時間は各プロセスごとのCPU使用時間をタイマ割り込み時に足しこんでいき、システム全体の値にそれを加算するというので取っているというのが分かりました。重要な情報が取れるようになったことも分かりました。こんな具合でカーネルのコードに潜っていくと、普段目にしている値の本来の意味であるとか、どういうタイミングで更新されているのかという点に理解が深まっていい具合です。見るに大変お世話になっています。追記この辺りの話をまとめて本に書きました。よろしければご一読ください。15:28これは素晴らしいです。久しぶりにnaoyaさんの技術ネタ記事が読めて幸せです。17:35有用な記事をありがとうございます。