Віртуалізація. Оптимізація використання пам’яті Hyper-V

Відвідувачів: 3857 Переглядів: 5034 (сьогодні 3)Шрифт:

При розміщенні віртуальних робочих навантажень найважливішим для загальної продуктивності апаратним ресурсом є, мабуть, фізична пам'ять. Вкрай важливо розподіляти пам'ять так, щоб кожна віртуальна машина (ВМ) мала необхідну їй пам'ять, але при цьому пам'ять не витрачалася б без толку. Нижче наведено кілька ключових міркувань для розподілу пам'яті під час роботи з Microsoft Hyper-V.

Міркування архітектури NUMA

Управління пам'яттю для Hyper-V є своєрідним мистецтвом. Необхідно гарантувати, що кожній ВМ буде надано адекватний обсяг пам'яті. У той же час необхідно уникнути надання ВМ більшого обсягу пам'яті, ніж потрібно.

Причини цього видаються очевидними. Виділення надмірної пам'яті однієї ВМ обмежує обсяг пам'яті, який можна виділити іншим ВМ на тому самому сервері. Але часом виділення ВМ надмірної пам'яті може також знизити її продуктивність.

Більшість нових серверів використовують пам'ять із архітектурою неоднорідного доступу (NUMA). Пам'ять NUMA розроблена для покращення продуктивності шляхом виділення пам'яті окремим процесорам. Окремі блоки виділеної пам'яті відомі як вузли NUMA. ЦП може виконувати доступ до свого локального вузла NUMA (пам'яті, безпосередньо виділеної даному ЦП) швидше, ніж до інших вузлів NUMA.

Версії Hyper-V для Windows Server 2008 та 2008 R2 не підтримують відповідність пам'яті вузлам NUMA безпосередньо. Інакше кажучи, ВМ не можна безпосередньо налаштувати використання певного вузла NUMA. Повідомляється, що ця можливість існуватиме у версії Hyper-V для Windows Server 8. Тим не менш, можна зробити дії, що скорочують шансивикористання нелокального вузла NUMA ВМ

Фокус у тому, щоб розрахувати розмір кожного вузла NUMA. Наприклад, припустимо, що наш сервер має два восьмиядерні процесори і 128 ГБ ОЗУ. Розмір вузла NUMA можна розрахувати, розділивши обсяг пам'яті (128 ГБ) на кількість ядер ЦП (16). У даному випадку розмір вузла NUMA становитиме 8 ГБ.

Hyper-V доки дозволяє нам призначити певний вузол NUMA певної ВМ. Однак, оскільки відомо, що розмір вузлів NUMA на даному сервері становить 8 ГБ, можна здогадатися, що будь-яка ВМ, якій виділено більше 8 ГБ пам'яті, буде використовувати пам'ять кількох вузлів NUMA. Обмеження пам'яті, що виділяється ВМ, 8 ГБ або менше (в даному випадку) збільшує шанси, що ВМ використовуватиме пам'ять з єдиного вузла NUMA, тим самим підвищуючи продуктивність.

Витрати Hyper-V

Вузли NUMA – не єдиний фактор, який слід врахувати під час управління пам'яттю. При плануванні методів використання пам'яті несучого сервера дуже важливо враховувати витрати, пов'язані з віртуалізацією. Щодо цих витрат необхідно врахувати два основні чинники. По-перше, батьківський розділ потребує виділення пам'яті.

Необхідно зарезервувати щонайменше 300 МБ для низькорівневої оболонки та 512 МБ для несучої ОС, що працює в батьківському розділі. Проте більшість рекомендацій стверджують, що з батьківського розділу слід зарезервувати 2 ГБ.

Несучий розділ слід використовувати тільки для Hyper-V (хоча в ньому також можна запускати програмне забезпечення інфраструктури та безпеки, таке як агенти управління, агенти резервного копіювання та брандмауери). Отже, рекомендований обсяг 2 ГБ передбачає, що батьківський розділ не буде використовуватися для додаткових додатків або ролейсервера.

Hyper-V не дозволяє виділяти безпосередньо несучому розділу. По суті він використовує те, що залишиться. Тому слід пам'ятати, що 2 ГБ пам'яті несучого сервера слід залишити невиділеними, щоб вони були доступні для батьківського розділу.

Виділення пам'яті гостьовим машинам

Інший фактор витрат пам'яті, який слід врахувати, - це використання ВМ невеликого обсягу пам'яті для служб інтеграції та інших процесів, пов'язаних із віртуалізацією. Цей обсяг пам'яті досить незначний, так що зазвичай немає потреби хвилюватися про виділення для нього додаткової пам'яті, якщо не планується надати кожній ВМ лише мінімально необхідну пам'ять.

ВМ з 1 ГБ ОЗУ або менше використовують лише близько 32 МБ пам'яті на витрати, пов'язані з віртуалізацією. Сюди слід додавати 8 МБ на кожен додатковий гігабайт ОЗУ. Наприклад, ВМ з 2 ГБ ОЗУ буде використовувати 40 МБ (32+8) пам'яті витрати, пов'язані з віртуалізацією. Аналогічно, ВМ з 4 ГБ пам'яті втрачатиме таким чином 64 МБ.

Динамічна пам'ять

У Windows Server 2008 R2 з пакетом оновлень 1 була представлена ​​нова функція динамічної пам'яті, що дозволяла ВМ споживати пам'ять динамічно, залежно від поточного навантаження. Це також дозволяє використовувати фізичну пам'ять сервера понад звичайний, для використання більшої кількості ВМ, ніж було б можливо інакше. Незважаючи на всі переваги динамічної пам'яті, при її використанні важливо дотримуватися деяких правил, щоб уникнути нестачі пам'яті у ВМ.

По-перше, не завжди використання динамічної пам'яті оптимально. Вмикати або вимикати динамічну пам'ять можна для кожної окремої ВМ. Важливо включати її лише для тих ВМ, яким вона справді може стати в нагоді.

Одним з найбільшВажливими міркуваннями тут є робоче навантаження ВМ. Якщо програма на ВМ розроблена для використання фіксованого обсягу пам'яті, краще дати ВМ саме той обсяг пам'яті, який потрібен цій програмі замість використання динамічної пам'яті.

Те саме стосується додатків, які потребують великого обсягу пам'яті. Деякі програми розроблені так, щоб споживати стільки пам'яті, скільки можливо. Такі програми можуть швидко поглинути всю фізичну пам'ять сервера, якщо дозволено використовувати динамічну пам'ять. ВМ, на яких працюють програми таких типів, краще виділяти фіксований обсяг пам'яті.

Нарешті, продуктивність сервера може постраждати, якщо ВМ спробує використати пам'ять із кількох вузлів NUMA. Отже, якщо сервер використовує пам'ять архітектури NUMA і продуктивність є важливою проблемою, можливо, необхідно утриматися від використання динамічної пам'яті.

ОЗУ для запуску

Однією з найважливіших розуміння концепцій у сфері динамічної пам'яті є ОЗУ для запуску. При використанні динамічної пам'яті кожної ВМ необхідно призначити значення ОЗУ для запуску. Це значення відображає обсяг фізичної пам'яті, який ВМ спочатку використовуватиме після завантаження. Що важливіше, ОЗУ для запуску також становить мінімальний обсяг фізичної пам'яті, споживаний ВМ. Використання пам'яті ВМ не може бути нижчим за значення ОЗУ для запуску.

З огляду на це корпорація Майкрософт рекомендує уникати призначення ВМ великих обсягів ОЗУ для запуску. ОЗУ для запуску найкраще заснувати на ОС, що використовується ВМ. Корпорація Майкрософт рекомендує використовувати 512 МБ ОЗУ для запуску ВМ, які використовують Windows 7, Windows Vista, Windows Server 2008 та Windows Server 2008 R2. Якщо ВМ будутьВикористовувати Windows Server 2003 або Windows Server 2003 R2, корпорація Майкрософт рекомендує 128 МБ ОЗУ для запуску.

Для використання ВМ динамічної пам'яті остання має підтримуватись ОС, що працює на цій ВМ. Windows XP не підтримує динамічну пам'ять. При спробі запустити Windows XP на ВМ, налаштованій для використання динамічної пам'яті, ОС може отримати доступ лише до ОЗУ для запуску.

Перед переходом до інших завдань конфігурації важливо переконатись, що загальна сума ОЗП для запуску, виділена всім існуючим ВМ, не перевищує фізичний обсяг ОЗП на сервері. В іншому випадку потрібно буде видалити частину ВМ, або додати пам'яті.

Також може знадобитися скоригувати значення максимального обсягу ОЗП. Це значення вказує верхню межу фізичної пам'яті, яка може використовувати ВМ. За замовчуванням Hyper-V встановлює максимальний об'єм ОЗУ для кожної ВМ на 64 ГБ. Якщо деякі ВМ не потребують стільки фізичної пам'яті, може знадобитися знизити значення максимального обсягу ОЗП.

Вага пам'яті

Вся суть ідеї динамічної пам'яті полягає у можливості інтенсивнішого використання пам'яті. Вона дозволяє ВМ отримувати доступ до пам'яті, яка їм потрібна, коли вона потрібна. Великим недоліком інтенсивного використання будь-якого апаратного ресурсу є можливість його вичерпання у певний момент. У разі динамічної пам'яті ВМ можуть поглинути всю доступну фізичну пам'ять і вимагати ще.

Довгостроковим рішенням цієї проблеми є забезпечення сервера достатньої пам'яттю обслуговування вимог ВМ. Тимчасовим рішенням є пріоритизація використання пам'яті.

Майже на всіх несучих серверах є ВМ, які важливіші за інші. Hyper-V дозволяє визначати пріоритетністьВМ, отже у разі нестачі фізичної пам'яті пам'ять виділятиметься ВМ з вищим пріоритетом насамперед. Визначити пріоритет потреби ВМ динамічної пам'яті можна, коригуючи її вага пам'яті. ВМ з більш високою вагою пам'яті мають пріоритет перед ВМ меншими вагами пам'яті.

Інший параметр, який потрібно налаштувати для кожної ВМ, що використовує динамічну пам'ять, – буфер пам'яті. Параметр буфера пам'яті контролює, скільки пам'яті кожної ВМ слід спробувати зарезервувати як буфер. Це значення виражається як відсоток. Наприклад, якщо ВМ використовує 4 ГБ виділеної пам'яті, а буфер пам'яті встановлено на 50 відсотків, ВМ може поглинути до 6 ГБ пам'яті.

Буфер пам'яті не гарантує, що пам'ять буфері буде доступна для ВМ. Він просто контролює, скільки пам'яті ВМ слід спробувати запросити. Слід зазначити, що оскільки буфер пам'яті виражається як відсоток, обсяг пам'яті в буфері змінюється відповідно до обсягу пам'яті, використовуваної ВМ у конкретний час. Всі ВМ, що використовують динамічну пам'ять, запускаються, використовуючи мінімальний обсяг пам'яті. Вони динамічно коригують використання пам'яті залежно від вимог, які пред'являються їх пам'яті робочими навантаженнями.

Конфігурація пам'яті

Власне процес настроювання використання пам'яті ВМ простий. Відкрийте диспетчер Hyper-V і клацніть правою кнопкою миші ВМ (оскільки пам'ять кожної ВМ управляється незалежно). Виберіть «Параметри» з контекстного меню. Якщо з'явиться діалогове вікно «Параметри», клацніть «Пам'ять».

Hyper-V надає можливість або виділити ВМ статичний обсяг пам'яті, або використовувати динамічну пам'ять (див. мал. 1 9). При виборі динамічної пам'яті параметри ОЗП для запуску максимального обсягу ОЗП,буфера пам'яті та ваги пам'яті можна налаштувати у діалоговому вікні «Параметри».

hyper-v

Мал. 1.Виділення пам'яті для віртуальної машини можна скоригувати через діалогове вікно «Параметри».

Якщо ресурси фізичної пам'яті несучого сервера обмежені, зазвичай потрібен компроміс між використанням статичної та динамічної пам'яті. Статична пам'ять зазвичай забезпечує кращу продуктивність загалом (при адекватному виділенні пам'яті). Динамічна пам'ять може викликати складності, але вона зазвичай допускає більшу щільність ВМ.