2008/04/09

vmstatのちょっとした謎

ベンチマークテストを実行して気づいたのだが、CentOSの(ということは、Red HatやFedoraでも?)vmstatコマンドのCPU値がちょっと謎。実際にコマンドを実行してみる。
[root@dc3 03]# vmstat 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 1 53644 9608 160 123704 0 0 4776 4988 227 35 1 8 34 56 1
1 1 53644 3060 116 142552 0 0 10 29670 5002 3292 0 43 0 54 2
0 2 53644 3488 104 142320 0 0 6 29871 6021 4053 2 40 0 56 2
[CTRL]+[C]
[root@dc3 03]#
CPU列には、us、sy、id、waおよびstの五つの値が表示されている。
それぞれどういう意味なのか、調べてみる。まずは日本語のman page。
CPU
これらは CPU の総時間に対するパーセンテージである。
us: カーネルコード以外の実行に使用した時間 (ユーザー時間、nice 時間を含む)。
sy: カーネルコードの実行に使用した時間 (システム時間)。
id: アイドル時間。Linux 2.5.41 以前では、IO 待ち時間を含んでいる。
wa: IO 待ち時間。Linux 2.5.41 以前では、0 と表示される。
なぜか、st値の説明がない。
では、英語版ではどうか。
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
つまり、stは仮想マシンに関係している。
CentOS 5.1では、kernelおよびkernel-xenは、2.6.18なので、id値にwa値が含まれない(つまり、wa値>id値があり得る)。本当のアイドル時間とI/O待ち時間が分離されて表示される。

0 件のコメント: