Наша взаимовыгодная связь https://banwar.org/
\ FAQ \ Налаштування віртуальних процесорів в Hyper-V
У цій статті я розповім про «просунутих» настройках процесорів віртуальних машин в Hyper-V. Напевно всі ці настройки бачили, але мало хто реально пробував їх міняти, і ще менше - знають, для чого вони реально потрібні і як вони працюють.
Для прикладу будемо розглядати якийсь абстрактний сервер з чотирма процесорними ядрами. Так само, всі віртуальні машини за замовчуванням конфигурируются з чотирма віртуальними процесорами.
Ось вони, ці настройки:
Virtual Machine Reserve
Цей параметр означає, що певний відсоток ресурсів буде жорстко зарезервований за віртуальною машиною. За замовчуванням дорівнює 0%. В першу чергу цей параметр відіграє роль в ситуації «боротьби за ресурси» (тобто коли фізичні процесори використовуються на 100%, а віртуальним машинам потрібно ще). У цій ситуації ті з віртуальних машин, у яких заданий цей параметр, гарантовано отримають як мінімум те, що за ними зарезервовано.
Працює цей параметр наступним чином. Візьмемо наш 4-ядерний сервер і 5 віртуальних машин, по 4 віртуальних процесора на кожній. Якщо встановити Virtual Machine Reserve, рівний 20%, то від фізично наявних ресурсів для кожної віртуальної машини буде зарезервовано 0,2 * 4/4 = 20%. Це значення відобразитися в полі «Percent of total system resources». Якщо у сервера буде 8 ядер, то це значення буде вже інше: 0,2 * 4/8 = 10%.
Але повернемося до наших баранів. Якщо ми запустимо всі 5 наших віртуальних машин, то все процесорні ресурси будуть зайняті, і запустити 6ю віртуальну машину буде можна тільки в тому випадку, якщо Virtual Machine Reserve встановлений рівним 0%:
А ось тепер більш цікавий приклад. На тій же самій 4-ядерний системі створимо дві віртуальних машини. Однією з них призначимо 4 віртуальних процесора, і встановимо Virtual Machine Reserve 50%. Це означає, що наша віртуальна машина отримує половину від кожного з наявних ядер, половину від усіх системних ресурсів сервера. Запустимо її. Другий віртуальній машині дамо два віртуальних процесора і Virtual Machine Reserve 80%. Це - 40% від усіх системних ресурсів. Здавалося б, 50% + 40% = 90%. Тобто друга віртуальна машина теж повинна запуститися, але насправді вона не запуститься. А все тому, що система спробує знайти два ядра, від яких можна «відщипнути» в резерв 80%, а всі 4 ядра зарезервовані на 50% кожне:
Про це обмеження потрібно завжди пам'ятати, і не «гратися» з параметром Virtual Machine Reserve без нагальної потреби. Особливу увагу потрібно приділяти при використанні кластерних рішень: при збої одного вузла можлива ситуація, що частина віртуальних машин не зможе перезапуститися на доступному вузлі через нестачу ресурсів для резервування.
Проте, резервування тут не зовсім «жорстке». Припустимо, в прикладі з 5ю віртуальними машинами і 20% Virtual Machine Reserve всі 5 віртуальних машин простоюють. Якщо раптом однієї з віртуальних машин потрібно більше, ніж 20% доступних ресурсів - ці ресурси будуть їй надані, не дивлячись на те, що всі 100% начебто як зарезервовані. Справа в тому, що процесорний ресурс може легко виділятися віртуальним машинам, і так само легко у них забиратися. Так що, якщо виникне необхідність - резерви для всіх гарантуються.
Для чого можна використовувати цей параметр? Головне його призначення - гарантувати ресурси для бізнес-критичних віртуальних машин, що мають жорстке SLA. Крім цього, його можна використовувати для штучного обмеження на кількість одночасно запущених віртуальних машин, хоча на мою думку - це не найкрасивіше рішення.
Virtual Machine Limit
Цей параметр, як і попередній (Virtual Machine Reserve), задається у відсотках від доступних віртуальній машині ресурсів. Точно так же, як і попередній параметр - є поле «Percent of total system resources» - все точно так же. За замовчуванням дорівнює 0, що означає, що ніяких обмежень немає, і віртуальна машина може забирати собі стільки процесорних ресурсів, скільки їй необхідно і скільки доступно фізично. Нульове значення параметра Virtual Machine Limit означає, що віртуальна машина ні за яких умов не зможе використовувати більше процесорних ресурсів, ніж дозволено. Єдине застосування цього параметра - обмежити «апетит» віртуальної машини, якщо використовуються додатки, які занадто сильно навантажують процесор.
Так само, як і Virtual Machine Reserve, ліміт застосовується окремо до кожного віртуального процесора. Наприклад, якщо віртуальна машина налаштована з 2 процесорами і встановлений ліміт 50% - то вона отримає два віртуальних процесора, кожен з яких обмежується 50%.
Але є одне невелике відмінність: ліміт задається жорстко. Якщо Virtual Machine Limit дорівнює 50% - віртуальна машина ніколи не зможе використовувати більше, навіть якщо на сервері більше нічого не запущено. Крім цього, ліміт застосовується окремо до кожного віртуального процесора. Наприклад, якщо віртуальна машина налаштована з 2 процесорами і встановлений ліміт 50% - то вона отримає два віртуальних процесора, кожен з яких лімітований 50%.
Relative Weight
Третій параметр, про який я хотів би розповісти - Relative Weight. На відміну від попередніх цей параметр - безрозмірна величина, і може змінюватися від 0 до 10000. За замовчуванням дорівнює 100.
До тих пір, поки у сервера є вільні системні ресурси - параметр Relative Weight не проявляє себе абсолютно ніяк. Будь значення ваги хоч 100, хоч 200, хоч 10000 - на роботі віртуальних машин це не відіб'ється. Але як тільки віртуальні машини починають запитувати більше процесорних ресурсів, ніж сервер готовий надати фізично - тут-то і починається найцікавіше. Якщо у всіх віртуальних машин значення цього параметра однаково (наприклад, у всіх 100) - то кожна з них отримає рівну частку процесорного ресур. А ось якщо у однієї або декількох віртуальних машин Relative Weight вище - це значить, що вони «рівніші, ніж інші», і вони отримають більше процесорного ресурсу, ніж інші. А якщо є віртуальні машини з ще більш високими значеннями цього параметра - то вони отримають ще більше. Цей параметр хороший тим, що дозволяє виділяти більше критичні віртуальні машини, при цьому не боячись, що якась із віртуальних машин відмовиться запускатися, і доведеться міняти налаштування ще й для неї. Але є один невеликий нюанс: Relative Weight зовсім не дає гарантій, що віртуальна машина в скрутну хвилину отримає рівно стільки процесорних ресурсів, скільки їй потрібно. Якщо якісь з віртуальних машин є особливо критичними, і на них поширюються жорсткі SLA - краще використовувати Virtual Machine Reserve, який гарантує виділення ресурсів.
Якщо систему обслуговують кілька адміністраторів - то необхідно домовитися про єдину шкалою для параметра Relative Weight. Зокрема, якщо один буде ставити для некрітічнихвіртуальних машин значення 100, для критичних 200, а інший буде ставити 500 для некритичних і 1000 для критичних - система може повести себе трохи непередбачувано. Але це вже питання стандартизації, і в більш-менш складних системах, які управляються більш ніж одним адміністратором - такі домовленості мають бути a priori.
Оригінал статті http://itband.ru/2011/03/hyper-v-vcpu/