iostatやmpstatの痒いところに手が届く性能測定ツール PerfMonger 0.2.0をリリースしました。
どんなもの?
システムが処理するI/Oリクエスト数やCPU利用率を任意の時間間隔で測定して、 測定結果をJSON形式で出力するためのツールです。
なんのため?
システムの処理するI/Oリクエスト数やCPU利用率の測定には、
一般的にsysstat
のiostat(1)
やmpstat(1)
が用いられています。
しかしこれらのツールはモニタリング感覚が最短で1秒なので、
0.1秒ごとに記録したい場合には役に立ちません。
また出力は人間が読みやすいようにフォーマットされているため、
後からスクリプト言語で手軽に集計しようと思うとひと手間です。
そこで任意の時間粒度でこれらを測定し、JSONで出力するためにPerfMongerを作りました。 v0.1.0ではI/Oリクエスト数しか測定できませんでしたが、v0.2.0ではCPU利用率も測定可能になりました。
使い方
インストール
$ tar xvf perfmonger-0.2.0.tar.gz
$ cd perfmonger-0.2.0
$ ./configure
$ sudo make install
CPU使用率を測る
オプション無しで起動するとCPU使用率測定モードで起動します。
$ perfmonger
{"time": 1359989791.4342, "cpuinfo": {"nr_cpu": 2, "all": {"%usr": 0.00, "%nice": 0.00, "%sys": 0.00, "%iowait": 0.00, "%irq": 0.00, "%soft": 0.00, "%steal": 0.00, "%guest": 0.00, "%idle": 0.00}, "cpus": [{"%usr": 0.00, "%nice": 0.00, "%sys": 0.00, "%iowait": 0.00, "%irq": 0.00, "%soft": 0.00, "%steal": 0.00, "%guest": 0.00, "%idle": 100.00}, {"%usr": 0.00, "%nice": 0.00, "%sys": 0.00, "%iowait": 0.00, "%irq": 0.00, "%soft": 0.00, "%steal": 0.00, "%guest": 0.00, "%idle": 100.00}]}}
{"time": 1359989792.4347, "cpuinfo": {"nr_cpu": 2, "all": {"%usr": 5.97, "%nice": 0.00, "%sys": 3.48, "%iowait": 0.00, "%irq": 0.00, "%soft": 0.00, "%steal": 0.00, "%guest": 0.00, "%idle": 90.55}, "cpus": [{"%usr": 6.00, "%nice": 0.00, "%sys": 6.00, "%iowait": 0.00, "%irq": 0.00, "%soft": 0.00, "%steal": 0.00, "%guest": 0.00, "%idle": 88.00}, {"%usr": 6.00, "%nice": 0.00, "%sys": 1.00, "%iowait": 0.00, "%irq": 0.00, "%soft": 0.00, "%steal": 0.00, "%guest": 0.00, "%idle": 93.00}]}}
(snipped)
1行ごとに1回の測定結果が出力されています。出力されるJSONを読みやすい形にしてみると次のようになります。
{"time": 1359989792.4347,
"cpuinfo": {"nr_cpu": 2,
"all": {"%usr": 5.97, "%nice": 0.00, "%sys": 3.48,
"%iowait": 0.00, "%irq": 0.00, "%soft": 0.00,
"%steal": 0.00, "%guest": 0.00, "%idle": 90.55},
"cpus": [{"%usr": 6.00, "%nice": 0.00, "%sys": 6.00,
"%iowait": 0.00, "%irq": 0.00, "%soft": 0.00,
"%steal": 0.00, "%guest": 0.00, "%idle": 88.00},
{"%usr": 6.00, "%nice": 0.00, "%sys": 1.00,
"%iowait": 0.00, "%irq": 0.00, "%soft": 0.00,
"%steal": 0.00, "%guest": 0.00, "%idle": 93.00}]}}
測定間隔は-i
オプションで指定可能です。例えば0.1秒間隔でCPU使用率を測定する場合は次のようにするとできます。
$ perfmonger -i 0.1
I/Oリクエスト処理数を測る
-d sda
とすると、/dev/sda
のI/Oリクエスト処理数の測定を行います。
-d
オプションは複数指定することができます。
測定間隔は同様に-i
オプションです。
$ perfmonger -i 0.1 -d sda
{"time": 1359990319.8935, "ioinfo": {"devices": ["sda"], "sda": {"r/s": 1540.0000, "w/s": 0.0000, "r_await": 0.3636, "w_await": 0.0000}, "total": {"r/s": 1540.0000, "w/s": 0.0000, "r_await": 0.3636, "w_await": 0.0000}}}
{"time": 1359990319.9932, "ioinfo": {"devices": ["sda"], "sda": {"r/s": 1270.0000, "w/s": 0.0000, "r_await": 0.3150, "w_await": 0.0000}, "total": {"r/s": 1270.0000, "w/s": 0.0000, "r_await": 0.3150, "w_await": 0.0000}}}
{"time": 1359990320.0934, "ioinfo": {"devices": ["sda"], "sda": {"r/s": 1420.0000, "w/s": 0.0000, "r_await": 0.4225, "w_await": 0.0000}, "total": {"r/s": 1420.0000, "w/s": 0.0000, "r_await": 0.4225, "w_await": 0.0000}}}
(snipped)
ツイート