Измерение статистики процесса в Linux - PullRequest
6 голосов
/ 03 марта 2010

Я создаю программное обеспечение для конкурса программ. Программа пользователя принимается нашей системой судейства и оценивается путем ее компиляции и запуска через fork () и exec (). Родительский процесс ожидает завершения дочернего процесса (процесса отправки), а затем очищает его.

Чтобы получить полезную информацию о запуске программы, я хочу измерить время процессора и пиковую память, используемую программой. Отслеживает ли ядро ​​Linux эти значения? Есть ли другой способ получить эту информацию?

Ответы [ 5 ]

6 голосов
/ 03 марта 2010

Если вы вызовете системный вызов wait4(), чтобы пожать дочерний элемент после его завершения, он заполнит структуру struct rusage с использованием ресурсов дочернего элемента (ru_utime и ru_stime удерживают пользовательский и системный ЦП время, используемое ребенком соответственно).

5 голосов
/ 03 марта 2010

Вы можете использовать системные вызовы getrusage() или acct() ( Подробнее здесь )

0 голосов
/ 03 марта 2010

Вы можете проверить верхнюю команду. Это может помочь.

0 голосов
/ 03 марта 2010

Программа time (1) может помочь, я думаю. Это намного проще, чем опросный топ.

Выдержка из справочной страницы:

   Disregarding  the
   name  of  the  utility, GNU makes it output lots of useful information,
   not only about time used, but also on other resources like memory,  I/O
   and  IPC calls (where available).
0 голосов
/ 03 марта 2010

Низкотехнологичное (но простое) решение состоит в том, чтобы периодически выводить вывод top в пакетном режиме и затем анализировать его.

...