Настройка виртуальных процессоров в Hyper-V
В предыдущей статье был слегка затронут вопрос распределения процессорной мощности между виртуальными машинами. Как мне кажется, тема эта достаточно интересная и заслуживающая внимания. Поэтому сегодня мы попробуем детально разобраться в том, как происходит распределение физических ресурсов процессора, а также покрутим все имеющиеся настройки виртуальных процессоров и выясним, для чего они нужны и как работают.
В качестве подопытного возьмем сервер с двумя шестиядерными процессорами Xeon, что с учетом Hyper-threading дает нам 24 виртуальных процессора. Операционная система — Windows Server 2012.
Открываем оснастку Hyper-V Manager и заходим в настройки виртуальной машины, на вкладку Processor. Обратите внимание на параметр Percent of total system resources — он показывает, какой процент от общей процессорной мощности выделен конкретно этой виртуальной машине. В нашем случае это 1/24 = 4% . Если выделить машине второй процессор, то получим 8%, третий — 12% и т.д. Таким способом мы управляем распределением процессорных ресурсов между виртуальными машинами.
Надо понимать, что выделенные одной машине виртуальные процессоры могут параллельно использоваться и другими машинами. При наличии свободных ресурсов система динамически распределяет их между виртуальными машинами в зависимости от нагрузки.
На случай нехватки ресурсов есть дополнительные настройки, объединенные под общим названием Resource control. О них стоит рассказать поподробнее.
Virtual Machine Reserve
Этот параметр задает процент ресурсов, который будет зарезервирован за виртуальной машиной. Этот параметр играет роль в ситуации нехватки ресурсов, то есть когда физические процессоры используются на все 100%. В этом случае те из виртуальных машин, у которых задан этот параметр, должны гарантированно получить то, что за ними зарезервировано. По умолчанию Virtual Machine Reserve не задан и имеет значение 0%.
Работает этот параметр следующим образом. Возьмем виртуальную машину, выделим ей 2 виртуальных процессора и установим Virtual Machine Reserve равным 100. Это значит, что от физически имеющихся ресурсов этой виртуальной машине зарезервировано 100 % от 2 ядер, или 8% от общей процессорной мощности. Это значение отображается в поле «Percent of total system resources».
Регулировать резерв можно как через Virtual Machine Reserve, так и изменяя количество виртуальных ядер. Например, те же 8% можно получить при 8 ядрах по 25% каждое.
Резервирование не накладывает жестких ограничений на потребляемые ресурсы. Если одной из виртуальных машин потребуется больше ресурсов – они будут ей предоставлены, даже если все 100% зарезервированы. В Hyper-V свободный процессорный ресурс может легко выделяться виртуальным машинам, и так же легко у них забираться.
Параметр Virtual Machine Reserve вступает в дело только в ситуации нехватки системных ресурсов. Основное его назначение – гарантировать бесперебойную работу особо критичных виртуальных машин.
Virtual Machine Limit
Этот параметр похож на предыдущий — он так же задается в процентах от доступных виртуальной машине ресурсов и у него есть поле «Percent of total system resources». По умолчанию лимит не задан, и виртуалка при необходимости сможет забрать себе все свободные ресурсы процессора. Задавая значение Virtual Machine Limit мы говорим, что виртуальная машина не при каких условиях не должна использовать больше процессорных ресурсов, чем ей разрешено. Назначение этого параметра одно – ограничить «аппетиты» виртуальной машины, если на ней используются тяжелые, нагружающие процессор приложения.
Лимит применяется отдельно к каждому виртуальному процессору. К примеру, если виртуальная машина сконфигурирована с 4 процессорами и установлен лимит 50% — то она получит четыре виртуальных процессора, каждый из которых ограничивается 50%.
Обратите внимание, что в отличие от резервирования лимит задается жестко. Если Virtual Machine Limit равен 50% — виртуальная машина никогда не сможет использовать больше, даже если на сервере больше ничего не запущено.
Relative Weight
Третий параметр, Relative Weight, представляет из себя безразмерную величину и может варьироваться в пределах от 0 до 10000. По умолчанию равен 100.
С помощью Relative Weight мы можем задать приоритет виртуальной машины при распределении ресурсов. До тех пор, пока у сервера имеются свободные системные ресурсы – значение Relative Weight не имеет особого значения. Будь у машины вес хоть 100, хоть 10000 – на ее работе это никак не отразится. Но как только ресурсы сервера подходят к концу — начинается самое интересное. Если виртуальные машины имеют одинаковый вес (к примеру, у всех 100), то каждая из них получит равную долю процессорного ресура. Если же у одной или нескольких виртуальных машин Relative Weight выше – это значит, что они получат больше процессорного ресурса, чем остальные. Причем, чем больше вес, тем выше приоритет и тем больше ресурсов может получить виртуальная машина.
Таким образом Relative Weight позволяет разделять виртуальные машины на более и менее критичные, при этом не боясь, что какая-то из них откажется запускаться из за отсутствия ресурсов.
Важный момент. Relative Weight не дает гарантий, что виртуальная машина в нужный момент получит необходимое ей количество процессорных ресурсов. Если какие-то из виртуальных машин являются особо критичными – лучше использовать Virtual Machine Reserve, который гарантирует выделение ресурсов.
В заключение скажу, что Hyper-V достаточно гибко распределяет процессорное время между виртуалками, поэтому дополнительные настройки не стоит трогать без крайней необходимости. И еще, все вышенаписаное относится как к Windows Server 2012, так и к Server 2008R2, по крайней мере серьезных отличий я не заметил.
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.