Измерение статистики процесса в Linux

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

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

6
задан donatello 3 March 2010 в 10:20
поделиться

5 ответов

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

6
ответ дан 10 December 2019 в 00:37
поделиться

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

5
ответ дан 10 December 2019 в 00:37
поделиться

Думаю, может помочь программа 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
ответ дан 10 December 2019 в 00:37
поделиться

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

0
ответ дан 10 December 2019 в 00:37
поделиться

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

-1
ответ дан 10 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: