Как включить Intel Processor Tracing (IPT) в виртуализированной среде? - PullRequest
3 голосов
/ 08 февраля 2020

Я пытаюсь запустить интерфейс 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 хорошо на хосте. Кто-нибудь может подтвердить, что он работает на более новом процессоре?

1 Ответ

1 голос
/ 26 марта 2020

Посмотрите «Руководство разработчика программного обеспечения для архитектуры Intel 64 и IA-32», начните с «ГЛАВА 35 INTEL PROCESSOR TRACE». Функция ЦП IPT поддерживает гипервизор типа 1 (аппаратное обеспечение), но, как представляется, имеет некоторые ограничения на работу в виртуальной машине.

Между прочим, я разговаривал с представителем VMWare об отсутствии поддержки IPT по телефону, и он не дал какого-либо убедительного ответа и не получил ответ по электронной почте. На эту тему есть только один или два сообщения на форуме VMWare. Кажется, есть некоторые флаги, чтобы установить поддержку, но ни один из них не работал для меня. Читай, скорее всего, это произойдет не скоро.

Здесь, в 2020 году, мы, вероятно, все в одной лодке. Если нам нужна поддержка в одном из коммерческих вариантов виртуальных машин, мы должны продолжать спрашивать. Может быть, если достаточно спросить, они увидят, что это коммерчески жизнеспособная функция для добавления.

И / или для любого, кто выполняет задачу, добавьте поддержку для нее в VirtualBox или в одном из других решений с открытым исходным кодом.

РЕДАКТИРОВАТЬ: По-видимому, для Linux по крайней мере, KVM теперь имеет поддержку IPT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...