各プロセスが個別のスライスである、円グラフなどのグラフとしてメモリ使用量を表示するスクリプトはありますか?
時間の経過に伴うメモリ使用量をグラフ化する Munin のようなものを探しているのではなく、特定の時点でのプロセスごとのメモリ使用量を示しています。
私の要求をさらに不明瞭にするために、それはヘッドレスサーバー用です(Xアプリケーションはありません)。最も簡単な方法は、PNGファイルまたはHTMLファイル(Javascriptを使用してプロセスのフィルタリング、グラフタイプの変更などを可能にする)を書き込むことです。
プロセスごとのメモリアカウンティングは、1分で説明するさまざまな理由からトリッキーです。単純な監視には、おそらくgkrellmd、またはnagiosスクリプトで十分です。精度を高めたい場合は、もっと見栄えをよくする必要があります。
smem は、比例セットサイズの概念を導入します:
物理メモリの大部分は通常複数のアプリケーション間で共有されるため、常駐セットサイズ(RSS)と呼ばれるメモリ使用量の標準的な測定は、メモリ使用量を大幅に過大評価します。代わりに、PSSは各アプリケーションの各共有領域の「フェアシェア」を測定して、現実的な測定を行います。
例:GNOMEを起動すると、アプレットとプログラムごとに1つのプロセスが開始されます。それらはすべてlibglibにリンクしています。 Linuxはlibglibをメモリの1つのブロックにロードし、それをlibglibを必要とするすべてのプロセスにマップします。ナイーブメモリアカウンティングは、それにリンクしているすべてのプロセスに対して完全なlibglibサイズをカウントします。
smemは、libglibのコストを、それを使用するプロセス間で分割し、現実をより詳しく描きます。また、(ウェブサイトからの)メモリ使用量を表示する多くのオプションがあります。
ただし、最新のカーネル(> 2.6.27)が必要です。
既成のものは考えられない
ただし、PHPスクリプト実行ps -AH v | awk '{print $ 8、$ 9、$ 10}'そしてそれを pChart と一緒に使用すると、あなたが探していることを実行するWebページが得られますか?(KBでの使用、合計のパーセンテージおよびプロセス名)
sarface を見てください。それはsarデータに依存し、メモリ使用量(および他のすべてのsar/sysstatデータ)をライブで監視できます。
collectd はどうですか?
自分でやれ。 RRDデータベースを更新する簡単なシェルスクリプトを作成します。次に、rrdtoolを使用してグラフを描画します。
本当に詳細レベルが低い場合は、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形式でデータを表示したいのですか?これは簡単です。まとめて統計をファイルに記録し、後で複数の形式で再生できます。
試してみてください
別の時間間隔でメモリのスナップショットが必要な場合...希望する間隔でcronジョブを設定し、スクリプトを実行します。
それが役に立てば幸い...
うーん gnuplot FAQ言う 円グラフはサポートしていません ですが、Bernhard Reiterの piechart を示唆しています。
#topまたは#sysstatを使用できます
kSar、sarデータに基づくが、Javaベースであるため、プラットフォームに依存せず、リモートホストにSSH接続してデータをフェッチすることができます。
詳細については説明しませんでしたが、collectlには区切り文字で区切られた出力を生成するオプションがあるため、gnuplotの場合は、スペースを含むデータを生成するだけですべて完了です。それもExcelにうまくロードされます。カンマが必要な場合は区切り文字を変更でき、本当にrrdルートを実行したい場合は(プロットがデータと必ずしも一致する必要がないので注意してください)、デリミタをコロンに変更し、タイムスタンプをUTCに変更することもできます。 -マーク
phpsysinfo は、どういうわけかプロセス情報を表示する機能を提供しませんか?