Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Налаштування віртуальних процесорів в 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, принаймні серйозних відмінностей я не помітив..