1

アプリケーションが実行中に各コアのCPU時間をどのくらい使用するか、およびプログラムが終了するまでにかかる時間の長さを知りたいです。後者の場合、Linuxの「time」コマンドを使用します。前者の場合、「mpstat」のようなものを使用する必要があると思います。ただし、mpstatでアプリケーションの実行中にのみいくつかのログを生成したいのですが、それが可能かどうかはわかりません。誰かがこれについて私を助けることができますか?

4

1 に答える 1

3

アプリケーションを起動するラッパースクリプトを作成します。これにより、mpstatの起動と停止が処理されます。つまり、アプリケーションが起動する直前に、アプリケーションが終了した直後に強制終了します。

この簡単な例では、ログファイルにリダイレクトされたstdout / errでバックグラウンドでmpstatを起動します。次に、標準の「time」コマンドを使用して、アプリが何であれ(ログファイル名の後にコマンドラインで渡すものは何でも)起動します。最後に、アプリケーションが戻る/終了したら、バックグラウンドのmpstatを強制終了します。もちろん、任意のコマンドラインパラメータを使用してmpstatを起動できます。ここでは、レポート用に1秒の期間で起動し、終了条件はありません。

$ cat test.sh
mpstat 1 2>&1 > $1 &
pid=$!
shift
time $*
kill $pid

$ ./test.sh logfile.log sleep 5

real    0m5.005s
user    0m0.004s
sys     0m0.000s

$ cat logfile.log
Linux 2.6.31-15-generic-pae (-desktop)  12/03/2009      _i686_  (4 CPU)

12:55:58 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
12:55:59 PM  all    1.25    0.00    1.75    0.00    0.00    0.00    0.00    0.00   96.99
12:56:00 PM  all    0.25    0.00    0.25    0.00    0.00    0.00    0.00    0.00   99.51
12:56:01 PM  all    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.50
12:56:02 PM  all    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00   99.50
12:56:03 PM  all    0.49    0.00    0.49    0.00    0.00    0.00    0.00    0.00   99.02
于 2009-12-03T18:01:51.207 に答える