Hatena::ブログ(Diary)

ablog このページをアンテナに追加 RSSフィード Twitter

2014-12-09

prociostat.pl と visualize_prociostat.R で Linux のプロセスのボトルネックを分析する

今日もモツ鍋を堪能されていた模様の @ さんが Linuxプロセスのアクティビティを追跡してグラフ化するツールPerl + R で作られたということで早速使ってみました。

プロセスユーザーモードCPUを使えているのか、I/O待ちになっているのかといった傾向を分析することができます。Oracle Database はCPUを使えているのか、どんな理由で待機している(CPUを使えていない)か見ることができるよう実装されていますが、そんなものはないプログラムでも /proc ファイルシステムを参照してプログラムの外側からボトルネック分析が可能になります。素晴らしい!

こんな感じのグラフができます。

f:id:yohei-a:20141209235041j:image:w640


ツール

prociostat.pl
$ perl prociostat.pl -C -p 13674 # PID:13674 の情報を取得
# perl prociostat.pl -C # 全てのプロセスの情報を取得
visualize_prociostat.R
# yum install R
  • 使用例)
$ Rscript visualize_prociostat.R process.13674.txt

使用例

$ grep -R foo . > /dev/null 2>&1 & 
[1] 14520
$ perl prociostat.pl -C -p 14520
pid 14520 uid   501 user  20.16 sys   8.16 r  11112370176 w            0 cmd grep-Rfoo.
^CBye! ←Ctrl+Cで停止
$ ls -1
process.14520.txt ★出力された CSV ファイル
prociostat.pl
visualize_prociostat.R
$ head process.14520.txt 
↓CSVの中身はこんな感じ
time,delta_utime,delta_stime,delta_delayacct_blkio_ticks,delta_read_bytes,delta_write_bytes
1418136011,4,4,9,23072768,0
1418136012,1,3,3,1216512,0
1418136013,1,2,1,315392,0
1418136014,2,4,1,237568,0
1418136015,6,5,13,22831104,0
1418136016,1,6,2,552960,0
1418136017,2,4,3,2043904,0
1418136018,0,2,2,573440,0
1418136019,1,2,1,1232896,0
  • visualize_prociostat.R でグラフ化(png)する
$ export LANG=C
$ Rscript visualize_prociostat.R process.14520.txt
$ ls -1
process.14520.txt
process.14520.txt.png ★生成されたグラフ(png)
prociostat.pl
visualize_prociostat.R
  • process.14520.txt.png を開いてみる

f:id:yohei-a:20141209235356p:image:w640

*1I/OブロッキングによりプロセスCPUをできなかった tick 数

*2CSVに出力されるので、EXCELなどでグラフ化することもできます

*3:/proc/<pid>/* を参照しているのでアクセス権がないと情報取得できない

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元