Я пытаюсь отслеживать различные аппаратные счетчики производительности работающей системы, однако кажется, что текущий инструмент PMC, например Инструмент oprofile или perf может записывать счетчики только после завершения программы, например ~>perf record <command>;
~>perf report
запись perf возвращается только после завершения целевой программы, я хотел бы периодически собирать эти счетчики, как это делает vmstat.
Изменить: я хочу собрать счетчики производительности оборудованиянапример, промахи в кэше, инструкции, промахи переходов, эти счетчики доступны в современном процессе.
Кажется, что нынешний перфоманс не поддерживают вывод в стиле Sar. Однако возможна очень точная эмуляция с помощью команды watch.
Чтобы периодически собирать счетчики для всей системы, используйте опцию '-a'. Ниже приведен пример сообщения общих счетчиков производительности оборудования каждые 60 секунд.
watch -n 60 sudo perf stat -a sleep 60
Он дает результат как
Every 10.0s: sudo perf stat -a sleep 10 Wed May 11 11:19:36 2011
Performance counter stats for 'sleep 10':
19956.091380 task-clock-msecs # 1.995 CPUs
26802 context-switches # 0.001 M/sec
1871 CPU-migrations # 0.000 M/sec
951 page-faults # 0.000 M/sec
4582605668 cycles # 229.634 M/sec (scaled from 69.93%)
1993617795 instructions # 0.435 IPC (scaled from 81.07%)
374028141 branches # 18.743 M/sec (scaled from 81.34%)
19071123 branch-misses # 5.099 % (scaled from 79.77%)
100724660 cache-references # 5.047 M/sec (scaled from 18.66%)
5461106 cache-misses # 0.274 M/sec (scaled from 20.23%)
10.001116547 seconds time elapsed
Использование команды сна на первый взгляд немного противоречиво. Здесь perf stat НЕ будет собирать счетчики, специфичные для команды sleep, вместо этого команда sleep просто действует как способ сообщить perf stat продолжительность сбора (я понимаю, что из примера в перф вики ) Обратите внимание, что для сбора системных счетчиков требуются права администратора, поэтому необходимо выполнить sudo перед perf stat.
Если вам просто нужно собрать счетчики, специфичные для запущенного процесса (например, с pid 2785), тогда пример команды
watch -n 60 perf stat -p 2785 sleep 60
Обратите внимание, на этот раз sudo НЕ требуется.
Я нахожу это сар Это простой способ удовлетворить мои потребности в мониторинге системы Linux. Он периодически собирает статистику по многим вещам, и вы можете настроить cron для периодической отправки вам электронных писем с таблицей результатов, которые вы затем можете обработать.
Если вам нужно отслеживать больше систем, или вам нужны необычные графики или предупреждения, вы можете посмотреть что-то вроде кактусы или нагиос.
не забывайте собирать. собирает гораздо больше данных, и его вывод легче читать, чем sar. Если вы действительно используете sar, сделайте себе БОЛЬШУЮ услугу и установите интервал мониторинга на 10 секунд, а не на 10 минут - только реальные серьезные проблемы будут обнаруживаться с такой скоростью, как 10 минут. -отметка
Если вы хотите регистрировать действительно исчерпывающие данные, используйте Performance Co-Pilot. Также есть приятный графический интерфейс.