Я бы написал скрипт-обертку для запуска вашего приложения, который позаботился бы о запуске и остановке 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