Как включить Intel Processor Tracing (IPT) в виртуализированной среде?

Я пытаюсь запустить интерфейс WinIPT Алекса Ионеску на виртуальной машине, но безуспешно. (Это хост Windows 10 Pro, на котором запущена виртуальная машина Windows 10, и оба являются обновлением 18363)

Я успешно собрал и запустил драйвер Intel, а также набор инструментов Alex на хосте и обработал трассировку с помощью ptxed. Я также запустил утилиту Intel cpuid и убедился, что функция INTEL_PROCESSOR_TRACE активна на хосте. Однако, когда я запускаю утилиту на виртуальной машине, она не отображает флаг INTEL_PROCESSOR_TRACE, и действительно, драйвер возвращает ошибку о том, что функция не включена.

Я пытался запустить одну и ту же настройку в нескольких разных виртуальных средах, включая последние версии VirtualBox, VMWare Workstation и Hyper-V.

Когда я включаю платформу Hyper-V, она автоматически отключает функцию INTEL_PROCESSOR_TRACE на хосте.

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

VirtualBox, по крайней мере, не лишил меня каких-либо функций, но даже когда я включил опцию сквозной передачи VT-x, у него все еще не был установлен флаг для включения IPT.

Согласно Microsoft, теоретически существует процесс включения этого в Hyper-V, хотя я сталкиваюсь с вышеупомянутой проблемой, когда он отключается на моем хосте:

Включение компонентов мониторинга производительности в виртуальная машина

Кто-нибудь заставил это работать? Я бы предпочел решение в моей текущей среде (виртуальная машина Windows на хосте Windows), но я был бы признателен за любые идеи с использованием производительности в Linux или любых других подходов. Я также нашел несколько сообщений и вопросов от 2017 года, указывающих на то, что IPT «пока» не поддерживается, но ничего в течение последнего года или около того. Технология и архитектура, похоже, все еще развиваются, поэтому на самом деле я хотел бы знать, добился ли кто-нибудь успеха в какой-либо форме, а также какие-либо идеи о том, что делать, а чего избегать.

Другие источники:

Справочная информация о трассировке процессоров Intel: Трассировка процессоров

Отредактировано для добавления (10.02.2020)

При более внимательном рассмотрении инструкций Microsoft упоминается, что для включения IPT на виртуальной машине требуется «процессор Intel, поддерживающий IPT и функцию PT2GPA». По данным Intel, единственной архитектурой, которая указана как поддерживающая PT2GPA, является Ice Lake.

Компьютер, с которым я сейчас работаю, работает под управлением более ранней микроархитектуры (Coffee Lake), что может объяснить поведение, которое я наблюдаю, когда IPT в порядке на хосте. Кто-нибудь может подтвердить, что он работает на более позднем процессоре?


person echosys    schedule 07.02.2020    source источник
comment
Что такое функция PT2GPA? Можете ли вы добавить ссылку на документацию?   -  person tabs_over_spaces    schedule 18.05.2020
comment
Эта ссылка в посте — почти единственная информация о PT2GPA.   -  person Trass3r    schedule 26.08.2020


Ответы (1)


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

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

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

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

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

person Sirmabus    schedule 26.03.2020