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