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

Я новичок в использовании Google Compute Engine. Я хотел бы использовать инструмент Perf для Linux, чтобы сделать несколько различных измерений событий моего приложения и, в конечном итоге, выполнить профилирование. Я установил linux perf на свою Ubuntu 16.04 LTS VM. Однако даже основные события, такие как циклы, отображаются как "не поддерживаемые". Я предполагаю, что в базовом гипервизоре 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 tool пытается использовать аппаратные счетчики мониторинга производительности. Когда ваша ОС виртуализирована, у вас нет прямого доступа ко всем счетчикам; несколько решений виртуализации могут разрешать доступ к некоторым основным счетчикам, если они настроены.

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

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

perf stat -e task-clock ...
perf record -e task-clock ...
Другие вопросы по тегам