Everyday Deadlock

by hayamiz.com

性能測定しましょうか: PerfMonger 0.2.0リリース

2013/02/04

iostatやmpstatの痒いところに手が届く性能測定ツール PerfMonger 0.2.0をリリースしました。

どんなもの?

システムが処理するI/Oリクエスト数やCPU利用率を任意の時間間隔で測定して、 測定結果をJSON形式で出力するためのツールです。

なんのため?

システムの処理するI/Oリクエスト数やCPU利用率の測定には、 一般的にsysstatiostat(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)
category: technology
tags: linux, system, and performance
このエントリーをはてなブックマークに追加

この記事にコメントする

comments powered by Disqus


このエントリーをはてなブックマークに追加