MPSTAT仅在应用程序执行期间显示cpu使用平均值

时间:2009-11-10 08:56:24

标签: linux profiling cpu-usage

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

1 个答案:

答案 0 :(得分: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