2

Я хочу собирать номера счетчиков производительности при выполнении некоторой рабочей нагрузки. Это можно сделать легко, используя существующую инфраструктуру счетчика производительности LAPI. Но я хочу еще некоторые статистические данные, такие какСчетчики производительности оборудования для подсчета доступа к операционной системе

  1. Количество инструкций на уровне кольца 0,1,2,3
  2. Количество запросов нагрузки для l1 кэша различными уровнями кольцевых
  3. Длина кольцо- уровень

Таким образом, я действительно хочу различать доступ к памяти операционной системы и приложения.

Может кто-нибудь, пожалуйста, назовите меня, как это сделать? PS: Я раньше не использовал счетчики производительности. Таким образом, вещи, которые могут показаться вам немного тривиальными, могут на самом деле помочь мне. Спасибо

PS: Есть ли способ получить трассировку выполнения и трассировку доступа к памяти системы без изменения поведения приложения.

+0

Что такое процессор, используемый в этом эксперименте? Что такое ОС (это современный Linux)? – osgx

+0

Здесь используется процессор Pentium i5, а ОС - современный Linux (последний дистрибутив Ubuntu) –

ответ

3

Вы можете использовать счетчик производительности оборудования, как perf.

Современное оборудование обеспечивает счетчик производительности оборудования, поэтому есть довольно хорошие шансы, что ваша машина имеет эту функцию. Также вам может потребоваться установить драйверы ядра. (на ubuntu sudo apt-get для этого магия).

Небольшое описание перфорации (импортировано из выше ссылки)

Перфа является инструментом профилирования для Linux 2.6+ систем, основанных, что абстрагирует прочь аппаратный процессор различия в измерениях производительности Linux и представляет собой простой интерфейс командной строки , Perf основан на интерфейсе perf_events , экспортированном последними версиями ядра Linux.

перфорирования инструмента поддерживает список измеримых событий

где эти события перечислены в приведенном выше ссылке.

Say из многих событий, вы хотите получить статистику о cycles мероприятия для ниже

perf stat -e cycles:u -e cycles:k -e cycles dd if=/dev/zero of=/dev/null count=100000 где u и k означает пользователя и ядра соответственно. вы также можете поместить все события, разделив их запятой.