Использование анализатора производительности Intel VTune Profiler на виртуальных машинах Hyper-V

У Intel есть бесплатный инструмент под названием Intel VTune Profiler, который можно использовать для мониторинга использования ЦП системы. Несмотря на удобство, этот инструмент исторически не поддерживался для использования на виртуальных машинах. Однако совсем недавно стало возможным запускать анализатор производительности VTune Profiler на виртуальной машине Hyper-V. В этой статье я покажу вам, как это сделать.
Deploying VTune Profiler
Достаточно просто загрузить Intel VTune Profiler. Однако для завершения загрузки вам необходимо создать учетную запись Intel.
После загрузки процесс развертывания относительно прост. Просто запустите исполняемый файл, который вы скачали. Когда вы это сделаете, вам будет предложено выбрать компоненты, которые вы хотите развернуть, как показано на изображении ниже. Стоит отметить, что Intel VTune Profiler не является легкой утилитой для мониторинга. Если вы решите развернуть все доступные компоненты, потребуется примерно 1,6 ГБ дискового пространства, как показано на изображении.
После того, как вы выберете компоненты, которые хотите установить, вас спросят, хотите ли вы разрешить Intel собирать ваши данные. Сделайте свой выбор, нажмите «Далее», и инструмент будет установлен.
Быстрый тест
Если вы запустите VTune Profiler прямо сейчас и попытаетесь настроить анализ, вы, скорее всего, получите сообщение об ошибке, указывающее, что аппаратный сбор событий ЦП в системе невозможен. Далее ошибка указывает на то, что информация о производительности микроархитектуры будет недоступна. Вы можете увидеть, как выглядит эта ошибка на изображении ниже.
Причина, по которой появляется это сообщение об ошибке, заключается в том, что анализатор производительности VTune Profiler запускается на виртуальной машине, а базовая архитектура ЦП не полностью открыта для виртуальной машины.
Системные Требования
Если вы хотите иметь возможность выполнять анализ ЦП на вашей виртуальной машине, первое, что вам нужно сделать, это выяснить, поддерживается ли ваше физическое оборудование для мониторинга. Как правило, любой сервер на базе Intel Xeon должен быть совместим, если он использует архитектуру Broadwell (PMU версии 3) или что-то более новое. У Intel есть диаграмма, иллюстрирующая различные микроархитектуры и их возможности мониторинга. Список немного устарел, но, тем не менее, может быть полезен.
После того, как вы проверили свою аппаратную архитектуру, вам нужно будет убедиться, что ваше программное обеспечение подходит для этой работы. Как правило, и хост Hyper-V, и гостевая ОС должны работать под управлением Windows Server 2019 или Windows 10 версии 1809 или более поздней.
Также стоит отметить, что вложенная виртуализация не должна быть включена для виртуальной машины. Если вы не уверены, включена ли вложенная виртуализация для конкретной виртуальной машины, вы можете легко это выяснить. Для этого откройте сеанс PowerShell с повышенными привилегиями на узле Hyper-V (не внутри виртуальной машины), а затем введите следующую команду:
Get-VMProcessor <VM name> | Select-Object ExposeVirtualizationExtensions
После выполнения этой команды вы должны увидеть результат False, как показано на изображении ниже.
Включение оборудования для мониторинга производительности Intel
Теперь, когда вы убедились, что ваш хост Hyper-V и ваша виртуальная машина соответствуют заявленным системным требованиям, пришло время включить мониторинг производительности Intel. Первым шагом в этом является завершение работы виртуальной машины.
После выключения виртуальной машины вам нужно будет настроить компоненты мониторинга производительности, которые вы планируете использовать. Этот процесс немного сложен, потому что вам придется основывать конфигурацию на физических процессорах вашего сервера. Опять же, я бы порекомендовал просмотреть компоненты, поддерживаемые каждой архитектурой.
Если вы не совсем уверены, что делать на этом этапе, я бы посоветовал попробовать включить все доступные компоненты, кроме IPT. Для этого откройте сеанс PowerShell с повышенными правами и введите следующую команду:
Set-VMProcessor <VM Name> -Perfmon @("pmu", "lbr", "pebs")
Если вы хотите включить один конкретный компонент (а не все эти компоненты), вы просто измените приведенную выше команду, чтобы она ссылалась на один компонент, который вы хотите включить. Если, например, вы хотите включить только PMU, вы должны использовать эту команду:
Set-VMProcessor <VM Name> -Perfmon @("pmu")
Иногда при включении различных компонентов может потребоваться немного проб и ошибок. Если вы обнаружите, что ваша виртуальная машина не инициализируется после выполнения одной из этих команд, то все очень просто вернуть в нормальное состояние. Просто используйте эту команду, чтобы отключить компоненты, которые вы включили:
Set-VMProcessor <VM Name> -Perfmon @()
После отключения всех компонентов попробуйте включать компоненты по одному, пока не найдете тот, который работает с вашим сервером.
На снимке экрана ниже показано, как это выглядело, когда я включил компоненты на своем собственном сервере. Как видите, я включил все, кроме IPT.
Эта команда включает все, кроме IPT.
Кстати, если вы решите включить IPT, то команда для этого:
Set-VMProcessor <VM Name> -Perfmon @("ipt")
Однако стоит отметить, что для включения IPT (Intel Processor Trace) требуется ЦП, поддерживающий как IPT, так и PT2GPA. Вам также потребуется Windows Server версии 1903 или выше или Windows 10 версии 1903 или выше.
Когда вы завершите включение компонентов, которые хотите использовать, запустите виртуальную машину и запустите Intel VTune Profiler. Если у вас нет опыта работы с этим инструментом, он содержит удобное экранное руководство, которое вы можете использовать для начала работы. Вы можете увидеть, как выглядит анализ на изображении ниже.
Intel VTune Profiler: немного сложный, но отличный инструмент
К Intel VTune Profiler нужно немного привыкнуть. Тем не менее, Intel предоставляет отличное руководство, и большинство администраторов, скорее всего, обнаружат, что они могут эффективно использовать этот инструмент уже через несколько минут.