Профилирование событий 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 ...