ubuntu 12.10 perf stat ‹не поддерживается› циклы

Я использую систему ubuntu-12.10-desktop-amd64.

Я устанавливаю перфоманс через

apt-get install linux-tools linux-tools-common linux-tools-3.5.0-40

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

perf stat ls

результат:

 Performance counter stats for 'ls':

      3.988508 task-clock                #    0.678 CPUs utilized          
           172 context-switches          #    0.043 M/sec                  
             0 CPU-migrations            #    0.000 K/sec                  
           276 page-faults               #    0.069 M/sec                  
      <not supported> cycles                  
      <not supported> stalled-cycles-frontend 
      <not supported> stalled-cycles-backend  
      <not supported> instructions            
      <not supported> branches                
      <not supported> branch-misses           

   0.005883014 seconds time elapsed

Почему эти события не поддерживаются? Какая-либо операция необходима для включения этих событий?


person user2951663    schedule 04.11.2013    source источник
comment
Я обнаружил, что в оригинальной системе Ubuntu производительность работает хорошо. Но при использовании ubuntu с xen возникнет вышеуказанная проблема. Я компилирую xen из исходников. Нужен ли какой-либо параметр при компиляции xen??   -  person user2951663    schedule 08.11.2013


Ответы (1)


Вы виртуализировали Ubuntu, а аппаратные счетчики (регистры MSR PMU/PMC) не были виртуализированы. Xen (или другое программное обеспечение для виртуализации) должен знать, как работать с регистрами PMC, эмулировать их для гостевой системы и перенаправлять запросы на реальное оборудование. Я не знаю, сделано ли это в Xen. Но для Amazon AWS EC2 потребовались годы, чтобы реализовать только базовые аппаратные события (и только на выделенных экземплярах), они были сделаны только в мае 2017 года: http://www.brendangregg.com/blog/2017-05-04/the-pmcs-of-ec2.html "ЧВК EC2: Измерение IPC" Брендана Грегга:

Счетчики мониторинга производительности (PMC) теперь общедоступны для выделенных типов хостов в облаке AWS EC2. Ботаны ЧВК по всему миру ликуют! (Все шестеро.) ... В этом посте я подытожу PMC, доступные в EC2, которые предназначены только для выделенных хостов (например, m4.16xl, i3.16xl), и продемонстрирую измерение IPC. Обратите внимание, что PMC также известны как HPC (счетчики производительности оборудования) и имеют другие названия.

Он также объясняет о Xen и о том, почему они включаются в редких случаях:

Как это вообще возможно в облаке?

Вам может быть интересно, как облачные гости вообще могут читать PMC. Это работает следующим образом: PMC управляются с помощью привилегированных инструкций RDMSR и WRMSR для настройки (о которых я писал в MSR EC2) и RDPMC для чтения. Привилегированная инструкция вызывает гостевой выход, который обрабатывается гипервизором. Затем гипервизор может запускать свой собственный код и настраивать PMC, если это позволяет фактическое оборудование, а также сохранять и восстанавливать их состояние всякий раз, когда контекст переключается между гостевыми системами.

Компания Mainstream Xen поддержала это несколько лет назад с помощью своего виртуального блока мониторинга производительности (vPMU). Он настраивается с помощью vpmu=on в строке загрузки Xen. Однако включается редко. Почему?

Существуют сотни PMC, и все они открыты с помощью vpmu=on. Могут ли некоторые из них представлять угрозу безопасности? Был опубликован ряд статей, в которых показаны атаки по сторонним каналам PMC, в результате чего измерение определенных PMC при отправке входных данных в известную целевую программу может в конечном итоге привести к утечке битов состояния цели. Хотя на практике это маловероятно, и такие атаки не ограничиваются PMC (например, есть также атаки по времени), вы можете понять параноидальную политику безопасности, не желающую включать все PMC по умолчанию.

Итак, решения:

  • Запустите perf на невиртуализированной (родной, хостовой) Linux (Ubuntu или любой другой).
  • Используйте Xen с включенной опцией загрузки vpmu=on (только если вы не предоставляете виртуальные гости этого ПК ненадежным пользователям)
  • Используйте другое решение виртуализации с виртуализированным PMU. Некоторые основные события могут быть включены в Vmware в соответствии со страницей VirtualBox: https://gist.github.com/dannas/1fa2cfb0d3d108282955 «Примечания о счетчиках производительности для Virtualbox» pmu_notes.txt от dannas (хороший обзор). Некоторые из них эмулируются KVM для гостей: https://stackoverflow.com/a/43460663

PS: старый perf list ничего не проверял, просто печатал все известные события, даже не поддерживаемые/не реализованные hw события. И он не печатал реальный набор событий процессора. libpfm4 содержит таблицы и специфичную для Intel оболочку производительности ocperf.py на github.com/andikleen/pmu-tools, чтобы использовать имена, специфичные для Intel.

person osgx    schedule 30.05.2017