2012年3月25日日曜日

Mac, Geektool, Multi Ascii Graph

前回のエントリーで,Geektoolでアスキーグラフを使って無理矢理グラフを描く話をした.今日はその発展型の話.これは,以前のエントリー,Geektoolでtopとawkを使ったCPU,メモリ使用率表示スクリプトとも関係する.今日のスクリプトはこちら.そして,うまいこと設置できれば,こんな感じになる↓
これは,cpulog.shとmemlog.shでそれぞれCPUとメモリ使用率のログを出力し,それぞれのグラフを重ねて配置,その上にpsで各使用率上位5位のリストを表示しているという3層構造になっている.
ログ出力(1秒更新)
sh /PATH/cpuinfo.sh
sh /PATH/memlog.sh
グラフ(2秒更新)
php /PATH/graph.php /tmp/cpu.log nocolor
php /PATH/graph.php /tmp/mem.log
リスト(1秒更新)
ps -c -U hogehoge -o command,%cpu -r |head -n 6

ps -c -U hogehoge -o command,%mem,rss -m |head -n 6
赤文字の所は例のごとく各々の環境に合わせる.面倒くさいので,今日はスクリプトの解説をしない.適宜,該当するスクリプトを読んでほしい.そんなに難しい構造にはなっていない.

以前のエントリーでは,topを叩いてメモリ使用量を取得していた.それでもいいんだけど,桁が丸められているので,ちょっと扱いにくい.そこで今回のスクリプト(memlog.sh)では,vm_statコマンドでメモリの値を取得してやるように変更した.もっとも,vm_statは仮想メモリの値を取得するコマンドなので,物理メモリの値を示しているわけではない点には留意が必要である.それと,せっかくだから色もつけてみる.

#Macはメモリ管理がよくわからん.vm_statのfree値が極端に少ない.すこしググってみたところ,こんな記事を見つけた.どうも,いわゆるfree値に該当するのはPages freeとPages speculativeの合計値らしい.これ以上調べたり,考えるのも面倒なので,とりあえずそういうことにする.

ログファイルにはfree(free+speculative), inactive, active, wiredの使用率(百分率)を出力する.母数となる合計値の算出方法が正しいかどうかわからないが,とりあえずそれっぽく見えるので,そのままにしている.

グラフの仕様を変更した.出力されたログファイルのカラム(スペース区切り)毎に色の異なる折れ線グラフを描くようにした.カラムの最大数はとりあえず8つまで対応する.色の順番は,graph.phpの$color配列変数のキーを好きな順番にすればいい.コマンド実行時に第2引数としてnocolorをつけると,色指定なしのグラフが出力される.フォントの設定などは前回のエントリーを参考にしてほしい. 



1 件のコメント:

  1. どのファイルをいじるのか分からないのですが・・・。

    返信削除