Заметки о Windows и других программных продуктах Microsoft...

Мониторинг загрузки процессора на серверах Hyper-V

Мониторинг загрузки процессора на серверах Hyper-V

Процессорное время является одним из основных аппаратных ресурсов, поэтому мониторинг загрузки процессора крайне важен для стабильной работы сервера. И здесь стоит знать, что мониторинг процессора на серверах Hyper-V отличается от мониторинга обычного сервера приложений. Это связано с особенностями архитектуры гипервизора.

Дело в том, что после установки роли Hyper-V в системе создаются изолированные разделы (партиции, partitions). Для работы виртуальных машин используются гостевые (guest) разделы, сама хостовая ОС работает в отдельной, родительской (root) партиции, а распределением аппаратных ресурсов (процессора, памяти и т.п.) занимается гипервизор, а не операционная система.

Поскольку стандартные счетчики производительности мониторят только состояние хостовой ОС, то их показания могут не отображать реальную нагрузку. Особенно это заметно при мониторинге нагрузки процессора, в связи с чем для мониторинга Hyper-V необходимо использовать специальные счетчики, отличные от счетчиков производительности для мониторинга обычного сервера приложений.

Для мониторинга загрузки процессора в Hyper-V есть три группы счетчиков:

• Hyper-V Hypervisor Logical Processor;
• Hyper-V Hypervisor Virtual Processor;
• Hyper-V Hypervisor Root Virtual Processor.

Группы счетчиков производительности процессора Hyper-V

Hyper-V Hypervisor Logical Processor

Это основная группа счетчиков Hyper-V, которая показывает нагрузку на процессор в привязке к логическим процессорам. Напомню, что под логическим процессором система понимает физические ядра процессора или вычислительные потоки (при использовании Hyper-Threading).

Примечание. Посмотреть количество логических процессоров можно в Task Manager, в разделе Performance. Так в нашем сервере установлено 2 процессора по 4 ядра в каждом (всего 8 физических ядер) и включен Hyper-Threading, что в общей сложности дает 16 логических процессоров.

number of logical processors

 

Hyper-V Hypervisor Logical Processor позволяет выводить как общую нагрузку (_Total), так и по каждому логическому процессору (LP) отдельно. Основные счетчики для мониторинга общей нагрузки, это:

% Guest Run Time — нагрузка на процессор, создаваемая виртуальными машинами;
% Hypervisor Run Time — нагрузка на процессор, создаваемая самим гипервизором, т.е. процент процессорного времени, которое затрачено гипервизором на обслуживание виртуальных машин;
% Total Run Time — общая нагрузка на процессор, представляет из себя сумму двух предыдущих счетчиков.

Hyper-V logical processor

 

Если посмотреть на график загрузки и сравнить результат с тем, что нам показывает традиционный счетчик загрузки процессора (% Processor Time), то складывается интересная ситуация. Если по традиционному счетчику загрузка процесора находится в районе 4%, то счетчик гипервизора (% Total Run Time) показывает среднюю нагрузку 40%. Как говорится, почувствуйте разницу 🙂

график Hyper-V logical processor

Hyper-V Hypervisor Virtual Processor

Под виртуальными процессорами понимаются те же ядра\вычислительные потоки, что и логические процессоры, но с точки зрения гипервизора.

Hyper-V Hypervisor Virtual Processor показывает нагрузку на процессор, создаваемую виртуальными машинами. Виртуальные процессоры (VP) группируются по принадлежности к виртуальным машинам, что позволяет оценить нагрузку, создаваемую каждой отдельной машиной, а общее значение (_Total) показывает суммарную нагрузку, создаваемую гостевыми ОС.

Виртуальные процессоры имеют большое количество различных счетчиков, но основные те же, что и в предыдущем случае:

% Guest Run Time — процент процессорного времени, затраченный виртуальными машинами на собственные задачи, не связанные с гипервизором;
% Hypervisor Run Time — процент процессорного времени, затраченный виртуальными машинами на задачи, связанные с гипервизором;
% Total Run Time — общая нагрузка на процессор, создаваемая виртуальными машинами. Представляет из себя сумму двух предыдущих счетчиков.

Hyper-V Virtual processor

 

Для наглядности графики нагрузки, создаваемой виртуальными машинами.

график Hyper-V Virtual processor

Hyper-V Hypervisor Root Virtual Processor

Hyper-V Hypervisor Root Virtual Processor содержит такой же набор счетчиков, как и Hyper-V Hypervisor Virtual Processor. Отличие их в том, что Hyper-V Hypervisor Root Virtual Processor содержит счетчики только для хостовой ОС, которая работает в основном разделе (Root partition):

% Guest Run Time — процент процессорного времени, затраченный хостом на задачи, не связанные с гипервизором;
% Hypervisor Run Time — процент процессорного времени, затраченный хостовой системой на обслуживание гипервизора;
% Total Run Time — общая нагрузка на процессор, создаваемая хостовой ОС. Представляет из себя сумму предыдущих счетчиков.

Hyper-V Root Virtual processor

 

На суммарном графике видно, что если суммировать % Total Run Time для Root Virtual Processor и Virtual Processor, то получим значение % Total Run Time для Logical Processor, а % Total Run Time для Root Virtual Processor примерно совпадает со значением стандартного процессорного счетчика % Processor Time.

график Hyper-V Root Virtual processor

 

Делаем вывод, что на стандартный счетчик процессора % Processor Time ориентироваться не стоит, так как он показывает нагрузку только хостовой системы, без учета виртуальных машин. Наиболее точные результаты по загрузке процессора показывает набор счетчиков Hyper-V Hypervisor Logical Processor, который и нужно использовать для мониторинга нагрузки на серверах Hyper-V.

 
 
Комментарии

Отличная статья. Когда-то давно по ней вник в тему и настроил мониторинг нагрузки на хост в Заббиксе. Сейчас зашел освежить в памяти

Владимир

>>если суммировать % Total Run Time для Root Virtual Processor и Virtual Processor, то получим значение % Total Run Time для Logical Processor

А вот здесь не могу согласиться. Прямо сейчас на Hyper-V 2019 наблюдаю такую картину, что:
Root Virtual Processor % Total Run + Virtual Processor % Total Run Time в сумме дают лишь половину того, что на счетчике % Total Run Time для Logical Processor

Ответить