web-dev-qa-db-ja.com

メモリ使用量をグラフ化するシンプルなツール?

各プロセスが個別のスライスである、円グラフなどのグラフとしてメモリ使用量を表示するスクリプトはありますか?

時間の経過に伴うメモリ使用量をグラフ化する Munin のようなものを探しているのではなく、特定の時点でのプロセスごとのメモリ使用量を示しています。

私の要求をさらに不明瞭にするために、それはヘッドレスサーバー用です(Xアプリケーションはありません)。最も簡単な方法は、PNGファイルまたはHTMLファイル(Javascriptを使用してプロセスのフィルタリング、グラフタイプの変更などを可能にする)を書き込むことです。

14
dbr

プロセスごとのメモリアカウンティングは、1分で説明するさまざまな理由からトリッキーです。単純な監視には、おそらくgkrellmd、またはnagiosスクリプトで十分です。精度を高めたい場合は、もっと見栄えをよくする必要があります。

smem は、比例セットサイズの概念を導入します

物理メモリの大部分は通常複数のアプリケーション間で共有されるため、常駐セットサイズ(RSS)と呼ばれるメモリ使用量の標準的な測定は、メモリ使用量を大幅に過大評価します。代わりに、PSSは各アプリケーションの各共有領域の「フェアシェア」を測定して、現実的な測定を行います。

例:GNOMEを起動すると、アプレットとプログラムごとに1つのプロセスが開始されます。それらはすべてlibglibにリンクしています。 Linuxはlibglibをメモリの1つのブロックにロードし、それをlibglibを必要とするすべてのプロセスにマップします。ナイーブメモリアカウンティングは、それにリンクしているすべてのプロセスに対して完全なlibglibサイズをカウントします。

smemは、libglibのコストを、それを使用するプロセス間で分割し、現実をより詳しく描きます。また、(ウェブサイトからの)メモリ使用量を表示する多くのオプションがあります。

  1. 基本的なプロセス情報のsmemを表示する
  2. システムビューを表示smem -R 4G -K/path/to/vmlinux -w
  3. 合計とパーセンテージを表示するsmem -t -p
  4. 異なる列を表示するsmem -c "name user pss"
  5. Smem -M libxmlのマッピングによってフィルタリングされたプロセスを表示する
  6. プロセスsmem -m -P [e] volutionによってフィルタリングされたマッピングを表示します
  7. キャプチャtarball smemからデータを読み取る--source capture.tar.gz
  8. pid smem --bar pid -c "p​​ss uss"でラベル付けされた棒グラフを表示します
  9. 名前でラベル付けされたRSSの円グラフを表示smem --pie name -s rss

ただし、最新のカーネル(> 2.6.27)が必要です。

13
jldugger

既成のものは考えられない

ただし、PHPスクリプト実行ps -AH v | awk '{print $ 8、$ 9、$ 10}'そしてそれを pChart と一緒に使用すると、あなたが探していることを実行するWebページが得られますか?(KBでの使用、合計のパーセンテージおよびプロセス名)

5
Mark Regensberg

sarface を見てください。それはsarデータに依存し、メモリ使用量(および他のすべてのsar/sysstatデータ)をライブで監視できます。

2
Xerxes

collectd はどうですか?

1
jnrg

自分でやれ。 RRDデータベースを更新する簡単なシェルスクリプトを作成します。次に、rrdtoolを使用してグラフを描画します。

1
ahes

本当に詳細レベルが低い場合は、collectlを忘れないでください。以下に、レポートできるプロセスごとのメモリ使用率のタイプの例を示します。

レコード1 cag-dl585-02(1244758290.002)(2009年6月11日(木)18:11:30)
 
プロセスの概要(カウンターは/秒)
# PIDユーザーS VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF MinFコマンド
 9089 root S 66856K 0 2328K 1440K 212K 736K 6812K 0 0 sendmail:
 9097 smmsp S 57600K 0 1772K 1304K 204K 736K 5736送信:
 9108ルートS 6428K 0 360K 180K 84K 88K 1944K 0 0 gpm 
 9120ルートS 74808K 0 1136K 476K 520K 48K 1920K 0 0 crond 
 9173 xfs S 20904K 0 1828K 1124K 88K 104K 3084K 0 0 xfs 

特定のプロセスに関心がある場合は、適切なフィルター(スレッドを表示するスイッチを含む)を指定できます。

また、メモリ全般に関心がある場合は、スラブの詳細も表示でき、vmstat形式の出力も表示されます。既存のツールですでにデータが表示されているのに、なぜvmstat形式でデータを表示したいのですか?これは簡単です。まとめて統計をファイルに記録し、後で複数の形式で再生できます。

試してみてください

1
Mark Seger
  1. プロセスをgrepします。
  2. 出力を解析し、テキストファイルにカンマ区切り形式で保存します。
  3. excelでコンマ区切りファイルを開きます。
  4. Excelのグラフユーティリティを使用して、そのデータのグラフを描画します。

別の時間間隔でメモリのスナップショットが必要な場合...希望する間隔でcronジョブを設定し、スクリプトを実行します。

それが役に立てば幸い...

1
Manu

うーん gnuplot FAQ言う 円グラフはサポートしていません ですが、Bernhard Reiterの piechart を示唆しています。

0
Philip Durbin

#topまたは#sysstatを使用できます

0
Rajat

これ はまさにあなたが探しているものではありませんが、おそらくあなたは この参照 を使用してそれをニーズに適合させることができます(「プロセスごとのメモリ使用量」を探します)。

0
Ivan

kSar、sarデータに基づくが、Javaベースであるため、プラットフォームに依存せず、リモートホストにSSH接続してデータをフェッチすることができます。

http://ksar.atomique.net/

0
Greeblesnort

詳細については説明しませんでしたが、collectlには区切り文字で区切られた出力を生成するオプションがあるため、gnuplotの場合は、スペースを含むデータを生成するだけですべて完了です。それもExcelにうまくロードされます。カンマが必要な場合は区切り文字を変更でき、本当にrrdルートを実行したい場合は(プロットがデータと必ずしも一致する必要がないので注意してください)、デリミタをコロンに変更し、タイムスタンプをUTCに変更することもできます。 -マーク

0
Mark Seger

phpsysinfo は、どういうわけかプロセス情報を表示する機能を提供しませんか?

0
djangofan