Я воспроизвел тот же сценарий в своем проекте для Ubuntu, используя для этого другой тип компьютеров (N1, N2) и вывод, который вы указали:
root@perf-test-ubuntu: ~ # perf stat -e задача-часы, циклы, инструкции, ссылки на кэш, ошибки кеша ^ C Статистика счетчика производительности для «всей системы»:
44450.342564 task-clock (msec) # 1.000 CPUs utilized
<not supported> cycles
<not supported> instructions
<not supported> cache-references
<not supported> cache-misses
44.470234233 seconds time elapsed
Я нашел несколько полезных ссылок [1] [2], это Похоже, Linux perf инструмент по умолчанию пытается использовать аппаратные счетчики мониторинга производительности. Когда ваша ОС виртуализирована, у вас нет прямого доступа ко всем счетчикам; несколько решений виртуализации могут разрешать доступ к некоторым счетчикам basi c, если они настроены. [1]
Данные, которые вам нужны, находятся в аппаратных счетчиках мониторинга производительности. Как правило, они НЕ эмулируются средами виртуальных машин, потому что они являются накладными и, как правило, бессмысленными, учитывая, что базовая статистика кэширования поддерживается для каждого ядра / пакета, а рабочую нагрузку можно запланировать для выполнения на нескольких ядрах, каждое из которых имеет собственный уровень оборудования. статистика. [2]
Надеюсь, эта информация будет полезна для вас.
[1] - Linux Профилирование событий в Google Compute Engine не работает
[2] - https://www.researchgate.net/post/Why_doesnt_perf_report_cache-refernces_cache-misses