こんにちわ。エンジニアの吉田です。
Linuxで cat /proc/stat が出力するcpuの値を見ていたところ、マニュアルに載っていない
10個目の値があったので、なんだろうと思い調査してみました。
(ちなみに、確認していたLinuxのKernelのバージョンは2.6.35です。)
まず、cat /proc/stat の結果から cpu という文字列でgrepした結果が以下のような感じです。
[root@localhost ~]# cat /proc/stat | grep cpu
cpu 7217 6329 25998 154652671 39215 0 422 6715 0 0
cpu0 4356 4567 14124 77298971 33018 0 130 4617 0 0
cpu1 2860 1762 11874 77353700 6196 0 292 2097 0 0
各値が何を意味するかは、man proc ドキュメント内の /proc/stat の説明を見るとわかるはずです。
man procの説明では、左から順番に以下のものであると書かれていました。
- user
- nice
- system
- idle
- iowait (kernel2.5.41から)
- irq (kernel2.6.0-test4から)
- softirq (kernel2.6.0-test4から)
- steal (kernel2.6.11から)
- guest (kernel2.6.24から)
9個しか説明がないけど、cat /proc/stat では値が10個並んでいる。。。
これはなんだろうと思い、調べてみます。
「proc stat tenth column」などといった単語で調べてみると以下のサイトが見つかりました。
■Gentoo Forums :: View topic - /proc/stat interpretation
http://forums.gentoo.org/viewtopic-t-849981-start-0.html
どうやら、10個目の値は guest_nice というものを示す値のようですね。
ヒントを得たので、kernelのgitリポジトリに guest_nice がいつ追加されたのかを追ってみます。
「guest_nice」でググってみると、kernel_stat.h というファイルに変更が入っていそうなことがわかりました。
gitリポジトリからkernel_stat.hの変更履歴を調べてみたところ、どうやら、下記のコミットで
fs/proc/stat.c というファイルに guest_nice という項目が追加されたようなことがわかりました。
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commit;h=ce0e7b28fb75cb003cfc8d0238613aaf1c55e797
というわけで、 /proc/stat で出力されるcpuの値は以下の10個みたいですね。(guest_niceはkernel2.6.33からあるみたい)
- user
- nice
- system
- idle
- iowait (kernel2.5.41から)
- irq (kernel2.6.0-test4から)
- softirq (kernel2.6.0-test4から)
- steal (kernel2.6.11から)
- guest (kernel2.6.24から)
- guest_nice (kernel2.6.33から)
kernelがオープンソースって素敵ですね。
デワデワ。