Как измерить пропуск кеша процесса в виртуальной машине? - PullRequest
0 голосов
/ 24 апреля 2020

Раньше я измерял ошибки в кеше определенного процесса, используя perf_event_open(). Теперь мне нужно измерить ошибки кэша процесса на виртуальной машине аналогичным образом. Но perf_event_open() относится к виртуальной машине только в одном процессе. Кажется, что perf kvm может это сделать. Но могу ли я сделать это с помощью кода?

1 Ответ

2 голосов
/ 24 апреля 2020

Нет, вы не можете измерить ошибки кэширования процесса, запущенного на виртуальной машине, если вы выполняете системный вызов perf_event_open() на хосте.

Хост и гость (то есть ВМ) не разделяют ядро, и у вас нет способа получить характеристики производительности процесса, выполняющегося внутри виртуальной машины, с хоста. Любое событие perf kvm, которое вы запускаете на хосте, может измерять только характеристики производительности виртуальной машины в целом, и, в частности, любого процесса, выполняющегося внутри нее. Подробнее здесь .

Вы должны запустить perf прямо внутри гостя. Вы можете использовать системный вызов perf_event_open() вручную через вашу программу и запускать его только внутри виртуальной машины. Конечно, для этого может потребоваться включить VPMU для гостя, а также, если ваш хост-процессор поддерживает виртуализацию счетчиков PMU, запустите ВМ с cpu=host.

...