Худшие практики: virtual machine memory limit

Сегодня о «худшей практике» одной настройки виртуальной машины.

Некоторое время назад обнаружились серверы с большим уровнем IOPS — в районе 1000-1500 операций. Экспресс-диагностика не дала результата, а так как размер дисков машин был очень небольшим, то они были перемещены на локальные SSD, что сняло остроту проблемы.

Сейчас же обнаружились проблемы с терминальными серверами — довольно сильные лаги при большом количестве подключений. Анализ системы показал довольно классическую проблему — наличие baloon. Наличие «пузыря» в памяти насторожило, так как на хосте свободной памяти было с избытком. Ларчик открылся просто при 3 ГБ ОЗУ виртуальной машины стояла волшебная труодминская настройка memory limit 2 ГБ. К пущей радости, история умалчивает кто был этим тру одмином.

После такого открытия я запустил RVTools и проинспектировал все виртуальные машины на наличие лимитов памяти, ну, и на «пузыри» заодно.

Тут-то и всплыли виртуалки с большими IOPS, так как настройки на них были примерно следующие ОЗУ — 1,5 ГБ, лимит — 256 МБ. На одной из машины при ОЗУ 3 ГБ, лимит был 512 МБ, а размер  «пузыря» 2 ГБ.

Для чего понадобилось выставлять лимиты остаётся загадкой. Поснимал все лимиты на память, так как для моей конфигурации данный функционал не имеет смысла.

Запись опубликована в рубрике 4.0, 4.1, 5.0, 5.1, 5.5, VMware, vSphere, Советы. Добавьте в закладки постоянную ссылку.

15 комментариев: Худшие практики: virtual machine memory limit

  1. Александр говорит:

    В моей практике тоже появлялись эти лимиты. Но они выставлялись автоматом, а не руками. История примерно следующая:
    1. Делаем ВМ с памятью в 1ГБ.
    2. Увеличиваем ей память.
    3. Лимит остается.

    Не у всех, не всегда, но остается. Возможно, в какой-то момент vSphere ставила сама, а потом перестала. Сам я, как админ, таких лимитов не ставил, но они есть…

  2. Mister Nobody говорит:

    Кхм. Такого не замечал. У меня предположение, что проблемные виртуалки сделаны путём конвертации с физики. Может у какой-то версии конвертера такое поведение?!

  3. Александр говорит:

    Нет. Они точно сделаны с нуля. Причем их не мало 30-40.
    Т.е. это прямо массовость какая-то.

  4. Mister Nobody говорит:

    Действительно, товарищи пишут, что автоматом может выставится
    http://www.vmwareadmins.com/reset-the-vsphere-memory-limit-using-powercli/

  5. Mr.Aloof говорит:

    Насколько помню, в 4-й версии ставились лимиты.

  6. Mister Nobody говорит:

    2Mr.Aloof
    Не понял твоей фразы, ты подразумеваешь,что автоматом ни с того, ни с сего ставились лимиты на память?

  7. drpooh говорит:

    Было дело, ставились лимиты в какой-то версии после клонирования или разворачивания из шаблона, точно не помню. Но было limit=сконфигурированный размер озу вм. Кажется, кейс еще заводил. Потом поправили.

  8. Mister Nobody говорит:

    Действительно, часть виртуалок клонировалась…

  9. soarer говорит:

    Господа, а как всё это выглядело изнутри ВМ?
    Т.е. в конфиге явно задано 2Г, в лимите — 512к. Сколько будет отображаться средствами ОСи изнутре ВМ?
    Вопрос не прозаичный и не из любопытства. Есть большие подозрения относительно собственной инфраструктуры, где рулят левые аутсорсеры.

  10. Mr.Aloof говорит:

    А изнутри ОСь считает что памяти у нее 2Г и использует ее под свои нужды.
    Гипервизор, руководствуясь тем что больше 512К выдавать нельзя, все что выше ложит в своп. Соответственно, если активной памяти требуется больше лимита, начинает дико использоваться хранилка со свопом. Если хранилка медленная — тут приходит пушистый зверь. При этом счетчиками изнутри нереально диагностировать причину.

  11. A.Vakhitov говорит:

    У Саши логика правильная, но порядок использования хостового свопа немного не такой, так как используется несколько механизмов экономии ОЗУ:
    — Transparent Page Sharing;
    — Memory Baloon;
    — Memory Compression;
    — Host Swap.
    Очень подробно расписано у Миши Михеева
    http://www.vm4.ru/2010/08/memory-management.html
    По поводу счетчиков внутри — если у вас винда, и в ней установлены VMware Tools, то счетчики по Virtual CPU и Virtual Memory для PerfMon доступны. А там есть все необходимое для диагностики…

  12. Mr.Aloof говорит:

    Я упростил чтоб было понятнее 😉
    Да, экономия памяти несколько сгладит проблему.

  13. A.Vakhitov говорит:

    На эту тему вспоминается лаба из курса по производительности:
    есть две одинаковые виртуальные машины с лимитом по памяти. У одной установлены VMware Tools, у второй — нет.
    В результате, с VMware Tools ВМ худо бедно шевелится. Без них — виснет на каждой операции.
    Разница в использовании свопа:
    — ВМ с VMware Tools «использует» механизм Memory Baloon;
    — ВМ без VMware Tools — Host Swap.
    И то своп, и другое своп. Но своп разный. 🙂

  14. Mr.Aloof говорит:

    Просто в лабе хреновые диски использовали =)

  15. Андрей вахитов говорит:

    Ну да. VMware ещё в 4.1 показывали производительность на уровне 80% от «нативной» со свопом на ssd. Я, если честно, был настроен скептически. Виноват

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *