Я пытаюсь запустить интерфейс WinIPT Алекса Ионеску на виртуальной машине, но безуспешно. (Это хост Windows 10 Pro, работающий на виртуальной машине Windows 10, и оба обновления 18363)
Я успешно собрал и запустил драйвер Intel, а также набор инструментов Алекса на хосте и обработал проследить с помощью ptxed. Я также запустил утилиту Intel cpuid и убедился, что функция INTEL_PROCESSOR_TRACE активна на хосте. Однако, когда я запускаю утилиту на виртуальной машине, она не отображает флаг INTEL_PROCESSOR_TRACE, и, действительно, драйвер возвращает ошибку, что функция не включена.
Я пытался запустить ту же установку в несколько различных виртуальных сред, включая последние версии VirtualBox, VMWare Workstation и Hyper-V.
Когда я включаю платформу Hyper-V, она автоматически отключает функцию INTEL_PROCESSOR_TRACE на хосте.
Рабочая станция VMWare не отключает ее напрямую, но при попытке снова запустить средство трассировки на хосте после запуска виртуальной машины он выдал BSoD, поэтому у меня нет больших надежд.
VirtualBox, по крайней мере, не лишил функциональности, но даже когда я включил транзит VT-x вариант, у него все еще не был установлен флаг для включения IPT.
Согласно Microsoft, теоретически существует процесс для включения этого в Hyper-V, хотя я столкнулся с вышеупомянутой проблемой, когда он в конечном итоге отключается на мой хост:
Включение компонентов мониторинга производительности на виртуальной машине
Кто-нибудь заставил это работать? Я бы предпочел решение в моей текущей среде (Windows VM на Windows хосте), но я был бы признателен за любые идеи, использующие perf на Linux или любые другие подходы. Я также нашел несколько сообщений и вопросов с 2017 года о том, что IPT не был поддержан «пока», но ничего за последний год или около того. Технология и архитектура, кажется, все еще развиваются, поэтому я действительно хотел бы знать, имел ли кто-либо успех в любой форме, а также какие-либо идеи о том, что делать или избегать.
Другие ресурсы:
Справочная информация о трассировке процессора Intel: Трассировка процессора
Отредактировано для добавления (2/10/2020)
Взгляд на Microsoft В инструкциях более подробно говорится, что вам необходим «процессор Intel, поддерживающий IPT и функцию PT2GPA», чтобы включить IPT на виртуальной машине. Согласно Intel , единственная архитектура, которую они перечислили как поддерживающую PT2GPA, - это Ice Lake.
На компьютере, с которым я сейчас работаю, работает более ранняя микроархитектура (Coffee Lake), что может объяснить поведение, которое я вижу, где IPT хорошо на хосте. Кто-нибудь может подтвердить, что он работает на более новом процессоре?