2014-12-09
prociostat.pl と visualize_prociostat.R で Linux のプロセスのボトルネックを分析する
はじまった URL
今日もモツ鍋を堪能されていた模様の @hasegaw さんが Linux のプロセスのアクティビティを追跡してグラフ化するツールを Perl + R で作られたということで早速使ってみました。
プロセスがユーザーモードでCPUを使えているのか、I/O待ちになっているのかといった傾向を分析することができます。Oracle Database はCPUを使えているのか、どんな理由で待機している(CPUを使えていない)か見ることができるよう実装されていますが、そんなものはないプログラムでも /proc ファイルシステムを参照してプログラムの外側からボトルネック分析が可能に、素晴らしい!
こんな感じのグラフができます。
ツール
prociostat.pl
- プロセスのCPU使用率、I/Oバイト数、I/O待機時間*1を秒単位でCSVに記録する Perl スクリプト*2
- Perlスクリプトで参照しているのは /proc/<pid>/stat、/proc/<pid>/io など
- 他のユーザーで実行しているプロセスの情報を取得したい場合は root で実行する必要があります*3。
- prociostat.pl を実行したカレントディレクトリにCSV(process.<PID>.txt)が出力される
- 使用例)
$ 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! $ ls ls -1 process.14520.txt ★出力された CSV ファイル prociostat.pl visualize_prociostat.R $ head process.14520.txt 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 を開いてみる
トラックバック - http://d.hatena.ne.jp/yohei-a/20141209/1418136905
リンク元
- 21 https://www.google.co.jp/
- 10 http://t.co/Hu8xaIRvWL
- 7 http://t.co/3qoNolC0sc
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCIQFjAA&url=http://d.hatena.ne.jp/yohei-a/20110711/1310396665&ei=NA2HVOvFHoOF8gW8vIHYAw&usg=AFQjCNHmjnd_tBzPnCLQTnpfYs--fk5gMw&sig2=6_OeTEMOUQGjg-lyd0yQ6Q&bvm=bv.81449611,d
- 2 http://search.yahoo.co.jp/search;_ylt=A3xTiH8rHYdUhAcA5paJBtF7?p=google+chrome+旧バージョン インストール&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=&a
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=21&ved=0CBwQFjAAOBQ&url=http://d.hatena.ne.jp/yohei-a/20100107/1262863743&ei=Gg6HVNjZHoKuPP2sgUA&usg=AFQjCNGVqEhDy7aOi3OEb5_CAHBTg5sTCg
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&ved=0CEUQFjAF&url=http://d.hatena.ne.jp/yohei-a/20081219/1229648872&ei=ZBeHVN3QDMfEmwXQzoKAAg&usg=AFQjCNFcls4HUdnDKs4OSSikXHzRcGIA0g&sig2=Xt0EOwMxD7Ee1XuANW0seg&bvm=bv.81449611,d
- 1 http://api.twitter.com/1/statuses/show/542341607094112256.json
- 1 http://api.twitter.com/1/statuses/show/542358080646684672.json
- 1 http://b.hatena.ne.jp/
おとなり日記
- 2014-12-07 May the Source be with you 5/90 5%
- 2014-12-08 FreeBSD/footnote 4/80 5%