Hyper-V и производительность. Часть 5 — Набор счетчиков «Hyper-V Hypervisor Logical Processors»

«Hyper-V Hypervisor Logical Processors» — один из важнейших наборов счетчиков для оценки производительности виртуальных машин Hyper-V. Кроме того, это один из немногих наборов, на которые не действуют странности работы таймера в виртуальных машинах. Перед тем, как начать рассматривать данный набор, я напомню, что логические процессоры — это ядра физического процессора и потоки Hyper-Threading (при его наличии), которыми гипервизор управляет как самостоятельными процессорами. Так, двухпроцессорный четврехъядерных сервер без HT имеет восемь логических процессоров, а он же с HT — уже шестнадцать.

Для каждого логического процессора существует свой набор счетчиков. Также вы можете рассмотреть суммарную загрузку всех логических процессоров, выбрав в Performance Monitor в качестве экземпляра логического процессора значение _Total. Рассмотрим же сами счетчики данного набора:

%Guest Run Time

Показывает загрузку логического процессора задачами виртуальной машины. Например, запустив процессороемкую задачу на однопроцессорной ВМ в системе с двумя логическими процессорамми, вы увидите загрузку около 95% на счетчике LP(0), нулевую загрузку на счетчике LP(1) и общую загрузку 47.5% на экземпляре _Total.

%Hypervisor Run Time

Указывает загрузку логического процессора задачами гипервизора. Этот счетчик похож на «% Kernel Run Time» в семействе счетчиков Processor.

%Idle Run Time

Указывает процент времени, в которое логический процессор не занят и ожидает задачи.

%Total Run Time

Суммирует значения «%Guest Run Time» и «% Hypervisor Runtime». Может немного (до 1%) превысить значение 100% — в виду того, что значения слагаемых вычисляется в два разных такта, и за время между ними нагрузка может немного перераспределиться.

%C1 Time

C1 — один из энергосберегающих режимов работы процессора. Значение «%C1 Time» для каждого логического процессора показывает процент времени, когда он находится в энергосберегающем состоянии C1. Для экземпляра _Total счетчик показывает усредненное значение по всем логическим процессорам. (Если вас интересуют энергосберегающие режимы работы Windows, почитайте Processor Power Management in Windows Vista and Windows Server 2008).

%C2 Time

С2 — более жесткий энергосберегающий режим. Данный счетчик аналогичен предыдущему — разница в типе энергосберегающего состояния.

%C3 Time

Соответственно, С3 — самый жесткий энергосберегающий режим. Данный счетчик аналогичен двум предыдущим — разница лишь в типе энергосберегающего состояния.

C1 Transitions / Sec

Показывает, сколько раз в секунду логический процессор переходил в состояние C1.

C2 Transitions / Sec

Аналогичен предыдущему — разница лишь в типе энергосберегающего состояния.

C3 Transitions / Sec

Аналогичен предыдущему — разница лишь в типе энергосберегающего состояния.

Hardware Interrupts / Sec

Количество аппаратных прерываний, обработанных логическим процессором за секунду. Виртуальным процессорам корневого раздела аппаратные прерывания передаются от соответствующих им логических процессоров в момент получения. Прерывание создает, например, сетевая карта при получении пакета.

Total interrupts / sec

Количество всевозможных прерываний, получаемых логическим процессором. Экземпляр _Total показывает суммарное количество всех прерываний, происходящих в вашей системе за секунду.

Monitor Transition Cost

Cтоимость (время) отправки прерывания от логического процессора до гипервизора. В обычном случае прерывание заставляет систему переходить из пользовательского режима (User mode) в режим ядра (Kernel mode) и наоборот. Для виртуальных сред Hyper-V прерывание переводит систему из режима пользователя или ядра в специальный режим, называемый режимом гипервизора («Hypervisor», иногда также встречается название режима «Virtual Machine Monitor»). Соответственно, чем меньше значение этого счетчика — тем лучше. Счетчик совершенно не показательный в терминах производительности системы, однако помогает сравнить относительную производительность разных процессоров.

Context Switches / sec

Показывает, сколько раз виртуальных процессор был привязан к какому-нибудь логическому процессору. Значение экземпляра _Total покажет полное количество таких привязок. Значения районе тысячи на одну виртуальную машину являются хорошим показателем. Высокое значение вызвано тем, что даже при отсутствии задач процессор будет исполнять инструкции «Halt», производя переключения на другие задачи, ожидающие исполнения.

Scheduler Interrupts / sec

Прерывания, отправляемые планировщиком задач гипервизора от одного логического процессора к другим логическим процессорам с целью анализа их загрузки очередью на выполнение различными виртуальными процессорами. Также данные прерывания могут при необходимости «разбудить» логический процессор, находящийся в энергосберегающем режиме.

Inter-processor interrupts sent /sec

Прерывания, отправляемые от одного процессора другому (в связи с архитектурой кэша, когерентности общей памяти, TLB и так далее). Высокие значения (более 20 на логический процессор) говорят о том, что виртуальная машина ведет операции постраничного чтения/записи.

Inter-processor interrupts /sec

Количество межпроцессорных прерываний, принятых логическим процессором за секунду.

Timer interrupts / sec

Hyper-V поддерживает свой набор таймеров (APIC timer, PM Timer и так далее). Данный счетчик показывает, сколько раз логический процессор прерывался для выполнения прерывания от таймера.

Мы завершили рассмотрение семейства счетчиков, описывающего логические процессоры. Впереди еще два семейства с процессорами виртуальными. Stay tuned.