Профилирование событий Linux perf в Google Compute Engine не работает

#profiling #kvm #perf #code-profiling

#профилирование #kvm #perf #профилирование кода

Вопрос:

Я новичок в использовании Google Compute Engine. Я хотел бы использовать Linux perf tool для выполнения некоторых различных измерений событий производительности моего приложения и, в конечном счете, для профилирования образцов. Я установил Linux perf tool на свою виртуальную машину Ubuntu 16.04 LTS. Однако даже базовые события, такие как cycles, отображаются как «не поддерживается». Я предполагаю, что в базовом гипервизоре KVM не включена поддержка виртуального PMU, хотя я полагаю, что KVM поддерживает это с настройкой флага не по умолчанию. Есть ли какой-нибудь способ заставить это работать?

 # perf stat -e cycles -a sleep 10

Performance counter stats for 'system wide':

<not supported>      cycles                   

  10.000598339 seconds time elapsed
  

Ответ №1:

Инструмент Linux perf по умолчанию пытается использовать счетчики мониторинга производительности оборудования. Когда ваша ОС виртуализирована, у вас нет прямого доступа ко всем счетчикам; некоторые решения виртуализации могут разрешать доступ к некоторым базовым счетчикам, если они настроены.

В вашем случае кажется, что виртуализация GCE не предоставляет такого доступа. (Обратитесь в службу поддержки вашего GCE? Если оно было отключено за пределами вашей виртуальной машины, вы не можете это изменить.)

Вы можете использовать perf с некоторыми программными событиями, например, -e task-clock для получения базового профилирования. Проверьте perf stat выходные данные на наличие поддерживаемых событий и perf list событий программного обеспечения.

 perf stat -e task-clock ...
perf record -e task-clock ...
  

Комментарии:

1.некоторые документы о KVM и PMU:linux-kvm.org/page/Guest_PMU access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux / … «по умолчанию отключено». — для получения PMU должна быть поддержка « cat /proc/cpuinfo|grep arch_perfmon , virsh dumpxml guest_name |grep "cpu mode" «