2009-11-10 34 views
1

我想知道我的應用程序在執行時使用每個內核的CPU時間以及程序結束所用的時間長度。對於後者,我使用linux「time」命令。對於前者,我認爲我必須使用「mpstat」之類的東西。但是我希望mpstat只在執行應用程序時生成一些日誌,我不知道是否可以這樣做。誰可以幫我這個事?MPSTAT僅在應用程序執行期間顯示CPU使用率平均值

回答

3

我會編寫一個包裝腳本來啓動您的應用程序,該應用程序將負責爲您啓動和停止mpstat - 就在您的應用程序啓動之前,並在其退出後立即將其刪除。

在這個快速示例中,我們啓動mpstat,並將它的stdout/err重定向到日誌文件。然後,我們使用標準的「時間」啓動任何應用程序(無論您在命令行上傳遞的日誌文件名稱) 「命令..最後我們在應用程序返回/退出時殺死後臺的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 
相關問題