Как узнать точное количество аппаратных счетчиков производительности встроенного процессора?

После того, как я несколько раз прочитал "Счетчик производительности оборудования", я могу утверждать, что все процессоры Intel поддерживают Счетчик производительности оборудования. Итак, чтобы получить доступ к этим дополнительным аппаратным регистрам, то есть счетчикам производительности оборудования, я использовал инфраструктуру PAPI, часто используемую для доступа и настройки этих счетчиков.

Когда я использовал служебную программу papi_avail для сообщения информации о количестве аппаратных счетчиков, было просмотрено непредвиденное значение, то есть относительно рисунка, количество аппаратных счетчиков: 0. Может ли это быть?

Что касается моей модели процессоров (Intel Core i7), я думаю, что это неверное значение.

Я действительно ценю любую помощь, которую вы можете оказать.

1 ответ

Если вам нужно знать, сколько счетчиков производительности поддерживает ваш процессор Intel, вы можете использовать команду cpuid (см. Man 1 cpuid).

Это довольно многословно, так как запускает инструкцию x86 cpuid, которая возвращает много информации о процессоре. Среди них есть подробности о Группе мониторинга эффективности (PMU). По умолчанию команда запускает инструкцию cpuid на всех ядрах ЦП. Но если ядра идентичны, вы можете ограничить отображение одним ядром. Например, вот как мы перечисляем информацию о первом процессоре:

$ cpuid -1
[...]
   Architecture Performance Monitoring Features (0xa/eax):
      version ID                               = 0x3 (3)
      number of counters per logical processor = 0x4 (4)
      bit width of counter                     = 0x30 (48)
      length of EBX bit vector                 = 0x7 (7)
   Architecture Performance Monitoring Features (0xa/ebx):
      core cycle event not available           = false
      instruction retired event not available  = false
      reference cycles event not available     = false
      last-level cache ref event not available = false
      last-level cache miss event not avail    = false
      branch inst retired event not available  = false
      branch mispred retired event not avail   = false
   Architecture Performance Monitoring Features (0xa/edx):
      number of fixed counters    = 0x3 (3)
      bit width of fixed counters = 0x30 (48)
      anythread deprecation       = false
[...]

На приведенном выше дисплее мы видим, что версия PMU - 3:

 version ID = 0x3 (3)

На каждое ядро ​​приходится 4 программируемых счетчика:

number of counters per logical processor = 0x4 (4)

На каждое ядро ​​приходится 3 фиксированных счетчика:

number of fixed counters = 0x3 (3)

Все счетчики имеют длину 48 бит:

bit width of counter        = 0x30 (48)
bit width of fixed counters = 0x30 (48)

Возможности PMU зависят от архитектуры. Если вам нужна дополнительная информация о вашем ПК / плате Intel, первые строки, отображаемые предыдущей командой, содержат идентификацию процессора / архитектуры. Например:

   [...]
   vendor_id = "GenuineIntel"
   version information (1/eax):
      processor type  = primary processor (0)
      family          = 0x6 (6)
      model           = 0xa (10)
      stepping id     = 0x9 (9)
      extended family = 0x0 (0)
      extended model  = 0x3 (3)
      (family synth)  = 0x6 (6)
      (model synth)   = 0x3a (58)
      (simple synth)  = Intel Core (unknown type) (Ivy Bridge E1/N0/L1/P0) {Sandy Bridge}, 22nm
      [...]

С этой информацией вы можете обратиться к документации Intel.

Все , что вам нужно, это попробовать:

sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'

все последние ядра Linux оснащены утилитой perf для доступа к аппаратным счетчикам производительности. Однако из соображений безопасности по умолчанию у нас нет доступа к этим счетчикам. Значение по умолчанию, хранящееся в файле "perf_event_paranoid" - 3, означает, что мы не можем получить доступ к счетчикам. Изменив значение на 1 (разрешить доступ), мы можем получить информацию о доступных счетчиках производительности и получить к ним доступ с помощью perf или любых доступных инструментов, таких как PAPI.

Взгляните на главы 18 "Мониторинг производительности" и 19 "События мониторинга производительности" в томе 3B Руководств для разработчиков программного обеспечения для архитектуры Intel® 64 и IA-32 ( последняя версия здесь).

Другие вопросы по тегам