9

Linux でプロセスをベンチマークするにはどうすればよいですか? 特定のプロセス名に「top」と「time」のようなものが必要ですか (これはマルチプロセス プログラムなので、多くの PID が与えられます)。

さらに、最終的な数値だけでなく、これらのプロセスのメモリと CPU 使用率の経時的なプロットが必要です。

何か案は?

4

2 に答える 2

12

私は通常、この種の作業用に簡単なスクリプトをまとめます。

proc ファイルシステムのカーネル ドキュメント (Google 'linux proc.txt') を参照してください。

/proc/stat(proc.txt のセクション 1.8)の最初の行は、累積的な CPU 使用状況の統計 (つまり、ユーザー、ナイス、システム、アイドルなど) を提供します。各プロセスについて、ファイル/proc/$PID/stat(proc.txt の表 1-4) は、プロセス固有の CPU 使用率統計とメモリ使用率統計 (rss を参照) の両方を提供します。

少しグーグルで検索すると、これらのファイルに関する詳細な情報と、必要な値を取得/導出するのに役立つライブラリ/アプリ/コード スニペットへのポインターが見つかります。それを念頭に置いて、私は高レベルの戦略に焦点を当てます.

CPU 統計については、お気に入りのスクリプト言語を使用して、監視用の一連のプロセス ID を取得する実行可能ファイルを作成します。一定間隔 (例: 1 秒) で、各プロセスおよびシステム全体の累積合計をポーリング/計算します。各ポーリング間隔で、すべての結果を 1 行で stdout に書き込みます。

メモリ統計については、同様のスクリプトを記述しますが、プロセスごとのメモリ使用量を記録するだけです。瞬時値を直接取得するため、メモリは少し簡単です。

テスト中にこれらのスクリプトを実行し、監視する一連のプロセス ID を渡し、その出力をログ ファイルにリダイレクトします。

./logcpu $(pidof foo) $(pidof bar) > cpustats
./logmem $(pidof foo) $(pidof bar) > memstats

これらのファイルの内容をスプレッドシートにインポートします (特定のアプリケーションでは、これはコピー/貼り付けと同じくらい簡単です)。CPU の場合、瞬時値を求めていますが、累積値があるため、これらの値を導出するには、スプレッドシートでちょっとした作業を行う必要があります (デルタ 't(x + 1) - t(x)' だけです)。もちろん、CPU ロガーにデルタを書き込むこともできますが、スクリプトの前にもう少し時間を費やすことになります。

最後に、スプレッドシートを使用して素敵なプロットを生成します。

于 2013-06-06T18:43:19.827 に答える
7

以下は、Linux システムを監視するためのツールです。

  1. topfree -mvmstatiostatiotop、などのシステム コマンド。問題をデバッグしているときにsarnetstatこれらの Linux ユーティリティに近づくものはありません。これらのコマンドを使用すると、サーバー内の状況を明確に把握できます
  2. SeaLion : エージェントは #1 に記載されているすべてのコマンド (ユーザー定義も含む) を実行し、これらのコマンドの出力は美しい Web インターフェイスでアクセスできます。このツールは、インストールが非常に簡単であるため、何百ものサーバーにわたってデバッグする場合に便利です。そしてその無料
  3. Nagios : すべての監視/アラート ツールの母体です。それは非常にカスタマイズされていますが、初心者にとってセットアップは非常に困難です. ほとんどすべての重要な Linux メトリックをカバーする nagios プラグインと呼ばれる一連のツールがあります。
  4. ムニン
  5. サーバー密度: 重要な Linux メトリックを収集し、ユーザーが独自のプラグインを作成できるようにするクラウドベースの有料サービス。
  6. New Relic: もう 1 つの有名なホスト型監視サービスです。
  7. ザビックス
于 2013-11-20T07:24:08.543 に答える