Hyper-V и производительность. Часть 4 — Набор счетчиков «Hyper-V Hypervisor»
«Hyper-V Hypervisor» — хороший набор счетчиков для начала оценки производительности вашей системы и получения общей информации о том, что и как работает в Hyper-V. Этот набор содержит следующие счетчики.
Logical Processors |
Здесь просто считается количество логических процессоров, которыми являются ядра физического процессора (или потоки — при наличии функции Hyper-Threading). Двухпроцессорный четырехъядерный сервер без HT покажет наличие восьми логических процессоров, при включении HT — шестнадцати логических процессоров. В настоящий момент количество логических процессоров жестко фиксируется при загрузке ОС. В будущем планируется реализовать горячее добавление процессоров, что сделает данный счетчик более динамичным | |
Partitions |
Каждая запущенная виртуальная машина работает в некотором контейнере, иначе называемом разделом (Partition, что иногда «переводится» как «партиция»). Если в данный момент не запущено ни одной ВМ — значение счетчика будет равно единице, поскольку основная ОС (Host, Parent) работает в так называемом «корневом» разделе (Root Partition). При запуске каждой виртуальной машины значение будет увеличиваться на единицу. Таким образом, данный счетчик позволяет отследить динамику количества одновременно используемых виртуальных машин. | |
Total Pages |
Для управления виртуальными машинами гипервизор использует некоторый объем памяти. Таблица трансляции памяти виртуальной машины в физическую память, распределение виртуальных процессоров — все эти данные необходимо где-то хранить. Размер страницы памяти равен 4 КБ. Значение этого счетчика не равно количеству памяти, используемой для поддержки гостевой ОС, В дополнение к нему следует замерить количество памяти, используемое рабочим процессом (worker process, vmwp.exe) и памятью, используемой Vid. | |
Virtual Processors |
После установки роли Hyper-V любые операции как корневого раздела с основной ОС, так и гостевых разделов с виртуальными машинами выполняются на виртуальных процессорах. В вырожденном случае существует по одному виртуальному процессору для каждого логического процессора — когда не запущено ни одной ВМ, все и виртуальные процессоры обслуживают основную ОС в корневом разделе. При запуске виртуальных машин им выделяются виртуальные процессоры. Именно их и считает данный счетчик. Например, двухпроцессорный четырехъядерный сервер без HT с одной запущенной двухпроцессорной виртуальной машиной будет насчитывать десять виртуальных процессоров: по одному для каждого из восьми логических процессоров в корневом разделе плюс два для работы в виртуальной машине. | |
Monitored Notifications |
Корневой раздел Hyper-V постоянно отслеживает запросы на прерывания от гостевых разделов. Например, для передачи данных через сетевую карту виртуальная машина могла бы отправлять по отдельному запросу на передачу каждого пакета — так работают эмулируемые устройства. В случе использования синтетических устройств она отправляет один запрос на начало передачи потока данных — так, чтобы они непрерывно обрабатывались до самого конца потока. Это помогает снизить накладные расходы на виртуализацию. Данный счетчик показывает именно количество таких потоков прерываний от гостевых разделов к корневому в момент времени. |
Возвращаясь к счетчику Total Pages, я хотел бы вкратце описать, как гипервизор получает необходимую для создания раздела память. Когда пользователь включает виртуальную машину, Vid посредством драйвера winhv.sys делает гипервызов к гипервизору на создание гостевого раздела. Для создания виртуальных процессоров и буферов трансляции TLB гипервизору требуется память, которую он запрашивает у winhv.sys. Winhv.sys находит память и делает гипервызов, выделяя ее на создание раздела. Мы еще встретимся с термином «выделения ресурсов» в описаниях работы счетчиков. Надеюсь, приведенный пример дает начальное понимание того, как это происходит на уровне архитектуры Hyper-V.
Comments
- Anonymous
December 13, 2012
Подскажите, какие счётчики покажут использование физической памяти в целом по системе и по каждой ВМ в отдельности?