2009-04-30 5 views
5

Я запускаю сценарий оболочки для выполнения приложения C++, которое измеряет производительность api. Я могу захватить задержку (время, затраченное на возврат значения для заданного набора параметров) api, но я также хочу захватить процессор и использование памяти вместе с интервалами, например, 5-10 секунд.Динамическое использование CPU и памяти

Есть ли способ сделать это, не слишком сильно влияя на производительность системы и что тоже внутри одного и того же сценария? Я нашел много примеров, где можно сделать вне (независимо) сценарий, который мы запускаем; но не тот, где мы можем делать в рамках одного и того же сценария.

+0

Возможный дубликат [Как я могу получить загрузку процессора и использование памяти одного процесса на Linux (Ubuntu)] (http://stackoverflow.com/questions/1221555/ как-can-i-get-the-cpu-use-and-memory-usage-of-a-single-process-on-linux-ubunt) –

+0

http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even- хотя-его-намного-новее-и-га ;-) –

ответ

2

Я предлагаю использовать команду 'time', а также команду 'vmstat'. Первое даст CPU использование исполняемого исполнения и второй - периодический (т.е. один раз в секунду) дамп CPU/memory/IO системы.

Пример:

time dd if=/dev/zero bs=1K of=/dev/null count=1024000 
1024000+0 records in 
1024000+0 records out 
1048576000 bytes (1.0 GB) copied, 0.738194 seconds, 1.4 GB/s 
0.218u 0.519s 0:00.73 98.6%  0+0k 0+0io 0pf+0w <== that's time result 
+0

вы могли бы привести пример? Я попробовал то же самое в оболочке, но он ожидает, что процесс перевернется, и у меня есть несколько экземпляров вызова, запущенного в том же скрипте ... написанном по одной строке за другим. – gagneet

+0

Я добавил пример, я думаю, вам нужно будет собрать результат и суммировать его вручную. Еще одно предложение сделать все прогоны в одном скрипте и сделать «время» для него. – Drakosha