Процесс учета - это путь, несмотря на то, что он занимает много места на диске. Это не то, что я бы оставил запущенным, если у вас нет очень грубого окна, но это очень полезно для решения проблем, поскольку он в основном отслеживает каждый процесс, утверждая, что более простые инструменты «снимок пс» не могут соответствовать.
Вы в основном включаете его с помощью accton /var/account/pacct
, а затем ядро записывает детали каждого процесса, который завершается, включая:
- имя процесса (к сожалению, не аргументы).
- время начала.
- прошедшего времени.
- время процессора пользователя и системы.
- код выхода.
- память, ввод-вывод, статистика неисправностей и подкачки.
- идентификатор процесса.
- идентификатор родительского процесса.
и несколько других вещей.
Вы отключили его с голым accton
, так что все вы, люди, которые смеялись над Windows за использование кнопки Start
для выключения, ХАХ !! : -)
Существует два варианта записей, которые могут быть зарегистрированы: v1 и v3 - убедитесь, что вы используете новейшее программное обеспечение для учета процессов и записи v3, поскольку они содержат более полезную информацию. Файл /usr/include/linux/acct.h показывает, что вы можете получить оттуда.
Все записи имеют фиксированный размер (независимо от версии) и просты в обработке.
Мы только что закончили работу с агентом Linux для нашего программного обеспечения для мониторинга производительности - я решил записать это, пока оно еще свежо в моей памяти.
Следует обратить внимание на поля comp_t - на самом деле это странный тип экспонента / мантисса для хранения большого диапазона значений в 16 битах - алгоритм довольно прост для превращения его в long:
comp_t ct = ?;
long val = (ct & 0x1fff) << (((ct >> 13) & 0x7) * 3);
Другое дело, что некоторые значения указываются в тактах, а не в секундах, поэтому вам нужно разделить на значение, возвращаемое sysconf (_SC_CLK_TCK)
.