Everyday Deadlock

by hayamiz.com

性能測定ツールPerfMonger 0.5.0リリース

2013/11/29

本日、いい肉の日(11/29)にPerfMonger 0.5.0を肉リリースしました。

PerfMongerは性能測定ジャンキーのためのリアルタイム性能測定・可視化ツールです。 現在は、Linuxを対象プラットフォームとして開発しています。

Linuxサーバにおいてリアルタイムな性能測定を行うためには top(1) や iostat(1) 、mpstat(1) などのコマンドが用いられますが、これらのコマンドでは

  • 0.1秒間隔でCPU使用率やI/O性能を測定したい
  • CPU使用率やI/O性能の時間変化を記録しておき、あとから手軽に集計処理をしたい
  • ターミナル上の文字ではなくリアルタイムなグラフでCPU利用率やI/O性能を確認したい

といった要望に応えることができませんでした。 これを可能にするのが性能測定ツールPerfMongerです。

インストール

新しくリリースしたPerfMonger 0.5.0からは、RHEL(+CentOS) 5/6を対象としたrpmパッケージをyumレポジトリ(package.hayamiz.com)から提供しはじめました。 RHEL(+CentOS)をお使いの方は、下記の2行のコマンドを実行するだけですぐにPerfMongerを使いはじめることができます。

rpm -Uvh http://package.hayamiz.com/hayamiz-repos-1.0.0-0.noarch.rpm
yum install perfmonger

また、その他Linuxディストリビューションを利用している方は、ソースコードからビルドすることで利用することができます。

wget http://hayamiz.com/~haya/files/perfmonger-0.5.0.tar.gz
tar xvf perfmonger-0.5.0.tar.gz
cd perfmonger-0.5.0/
./configure
make install

PerfMongerのはじめかた

まずは、何も引数を指定せずに perfmonger コマンドを実行してみます。 すると、利用可能なサブコマンド一覧が表示されます。

$ perfmonger
Usage: -e [options] COMMAND [args]

  -h, --help                       Show this help
  -v, --version                    Show version number

Commands:
    record    Record system performance information
    stat      Run a command and record system performance during execution
    plot      Plot system performance graphs collected by 'record'
    bukko     Gather all possible system config information
    server    Launch self-contained HTML5 realtime graph server
    summary   Show a summary of a perfmonger log file

100MBのファイルを作るときの性能を測定してみる

CPUやI/O負荷がそれなりにかかる処理として、ここでは試しにddコマンドで100MBのファイルを作るときの性能測定を行ってみることにします。 PerfMongerをインストールしたマシンのターミナルで、次のコマンドを実行してみましょう。

perfmonger stat -- dd if=/dev/urandom of=/tmp/100mb.dat bs=1M count=100

すると、次のように

  • 実行時間
  • CPU使用率の内訳
  • 各種I/O性能

の測定結果のまとめが表示されます。

$ perfmonger stat -- dd if=/dev/urandom of=/tmp/100mb.dat bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 40.6064 s, 2.6 MB/s

Execution time: 40.6925

== Performance summary of 'dd if=/dev/urandom of=/tmp/100mb.dat bs=1M count=100' ==

record duration: 40.00 sec

* Average CPU usage (MAX: 200 %)
  * Non idle portion: 131.04
       %usr: 27.10
       %sys: 101.97
       %irq: 1.14
      %soft: 0.84
     %other: 0.00
  * Idle portion: 68.96
    %iowait: 3.23
      %idle: 65.73

* Average DEVICE usage: vda
        read IOPS: 11.31
       write IOPS: 17.30
  read throughput: 0.10 MB/s
 write throughput: 2.57 MB/s
     read latency: 6.72 msec
    write latency: 123.30 msec
      read amount: 4.00 MB
     write amount: 102.62 MB

* Average DEVICE usage: dm-0
        read IOPS: 16.01
       write IOPS: 656.86
  read throughput: 0.11 MB/s
 write throughput: 2.57 MB/s
     read latency: 10.17 msec
    write latency: 213.34 msec
      read amount: 4.20 MB
     write amount: 102.63 MB

* TOTAL DEVICE usage: vda, dm-0
        read IOPS: 27.32
       write IOPS: 674.16
  read throughput: 0.21 MB/s
 write throughput: 5.13 MB/s

さて、perfmonger statを実行したカレントディレクトリを見てみると、perfmonger.log というファイルが新たに作られています。 このファイルには、PerfMongerが1秒毎に測定したCPU利用率やI/O性能情報がJSON形式で1行1レコードとして記録されています。つまり、このファイルを直接利用することでより正確に測定情報を集計したり、グラフ化したりすることができます。

また、perfmonger.logに記録された測定結果のまとめをもう一度確認したいときは、perfmonger summaryコマンドを利用することができます。

$ perfmonger summary perfmonger.log

== Performance summary of 'perfmonger.log' ==

record duration: 40.00 sec

* Average CPU usage (MAX: 200 %)
  * Non idle portion: 131.04
       %usr: 27.10
       %sys: 101.97
       %irq: 1.14
      %soft: 0.84
     %other: 0.00
  * Idle portion: 68.96
    %iowait: 3.23
      %idle: 65.73

(略)

グラフ化したいときには、perfmonger plotコマンドが使えます。 ただし、gnuplotがインストールされている必要があります。

$ perfmonger plot perfmonger.log

リアルタイムに性能をグラフ表示する

PerfMonger をインストールしたマシンで次のコマンドを実行してみます。

$ perfmonger server
PerfMonger Realtime Monitor: http://localhost:20202/dashboard

[2013-11-29 15:14:48] INFO  WEBrick 1.3.1
[2013-11-29 15:14:48] INFO  ruby 2.0.0 (2012-12-01) [i686-linux]
[2013-11-29 15:14:48] INFO  WEBrick::HTTPServer#start: pid=11782 port=20202
(...)

すると、グラフ表示用のHTTPサーバが立ち上がり、サーバのURLを表示してくれます。 表示されたURL(上の例では http://localhost:20202/dashboard )にアクセスすると、CPU利用率がリアルタイムで表示されます。

試しに、この hayamiz.comが動いているさくらVPSのサーバ上でperfmonger serverを起動したものを、下にiframeでライブデモ表示しています。 まだまだ安定運用できるほど作りこんでいないので、見るタイミングによっては止まっているかもしれませんが。。。

hayamiz.com サーバでの perfmonger server ライブデモ

PerfMongerはまだまだ undocumented な機能が多いので、更に使い込んでみたいという方はTwitterで @hayamiz に話しかけてみてください。 また、GitHub上で開発しているので、pull requestやIssuesへのバグ報告・機能要望なども歓迎します。

Debianのパッケージングとか面倒なのでだれかやって欲しいです。

category: technology
tags: software, release, and perfmonger
このエントリーをはてなブックマークに追加

この記事にコメントする

comments powered by Disqus


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