1

我想知道我的应用程序在执行时使用了每个内核的 CPU 时间以及程序结束所需的时间长度。对于后者,我使用 linux“时间”命令。对于前者,我认为我必须使用“mpstat”之类的东西。但是我希望 mpstat 仅在我的应用程序执行期间生成一些日志,我不知道是否可以这样做。谁可以帮我这个事?

4

1 回答 1

3

I would write a wrapper script to launch your application which would take care of starting and stopping mpstat for you -- just before your application launches, and killing it just after it exits.

In this quick example, we launch mpstat backgrounded with its stdout/err redirected to a log file.. we then launch whatever your app is (whatever you pass on the command line after the logfile name) using the standard "time" command.. finally we kill the backgrounded mpstat once the application returns/exits. you can of course launch mpstat using any command line parameters you like.. here we simply launch it with a 1 second period for reports and no end condition.

$ 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 回答