Назад | Перейти на главную страницу

Как периодически собирать аппаратные счетчики производительности в linux?

Я пытаюсь отслеживать различные аппаратные счетчики производительности работающей системы, однако кажется, что текущий инструмент 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. Также есть приятный графический интерфейс.