Сегодня о «худшей практике» одной настройки виртуальной машины.
Некоторое время назад обнаружились серверы с большим уровнем IOPS — в районе 1000-1500 операций. Экспресс-диагностика не дала результата, а так как размер дисков машин был очень небольшим, то они были перемещены на локальные SSD, что сняло остроту проблемы.
Сейчас же обнаружились проблемы с терминальными серверами — довольно сильные лаги при большом количестве подключений. Анализ системы показал довольно классическую проблему — наличие baloon. Наличие «пузыря» в памяти насторожило, так как на хосте свободной памяти было с избытком. Ларчик открылся просто при 3 ГБ ОЗУ виртуальной машины стояла волшебная труодминская настройка memory limit 2 ГБ. К пущей радости, история умалчивает кто был этим тру одмином.
После такого открытия я запустил RVTools и проинспектировал все виртуальные машины на наличие лимитов памяти, ну, и на «пузыри» заодно.
Тут-то и всплыли виртуалки с большими IOPS, так как настройки на них были примерно следующие ОЗУ — 1,5 ГБ, лимит — 256 МБ. На одной из машины при ОЗУ 3 ГБ, лимит был 512 МБ, а размер «пузыря» 2 ГБ.
Для чего понадобилось выставлять лимиты остаётся загадкой. Поснимал все лимиты на память, так как для моей конфигурации данный функционал не имеет смысла.
В моей практике тоже появлялись эти лимиты. Но они выставлялись автоматом, а не руками. История примерно следующая:
1. Делаем ВМ с памятью в 1ГБ.
2. Увеличиваем ей память.
3. Лимит остается.
Не у всех, не всегда, но остается. Возможно, в какой-то момент vSphere ставила сама, а потом перестала. Сам я, как админ, таких лимитов не ставил, но они есть…
Кхм. Такого не замечал. У меня предположение, что проблемные виртуалки сделаны путём конвертации с физики. Может у какой-то версии конвертера такое поведение?!
Нет. Они точно сделаны с нуля. Причем их не мало 30-40.
Т.е. это прямо массовость какая-то.
Действительно, товарищи пишут, что автоматом может выставится
http://www.vmwareadmins.com/reset-the-vsphere-memory-limit-using-powercli/
Насколько помню, в 4-й версии ставились лимиты.
2Mr.Aloof
Не понял твоей фразы, ты подразумеваешь,что автоматом ни с того, ни с сего ставились лимиты на память?
Было дело, ставились лимиты в какой-то версии после клонирования или разворачивания из шаблона, точно не помню. Но было limit=сконфигурированный размер озу вм. Кажется, кейс еще заводил. Потом поправили.
Действительно, часть виртуалок клонировалась…
Господа, а как всё это выглядело изнутри ВМ?
Т.е. в конфиге явно задано 2Г, в лимите — 512к. Сколько будет отображаться средствами ОСи изнутре ВМ?
Вопрос не прозаичный и не из любопытства. Есть большие подозрения относительно собственной инфраструктуры, где рулят левые аутсорсеры.
А изнутри ОСь считает что памяти у нее 2Г и использует ее под свои нужды.
Гипервизор, руководствуясь тем что больше 512К выдавать нельзя, все что выше ложит в своп. Соответственно, если активной памяти требуется больше лимита, начинает дико использоваться хранилка со свопом. Если хранилка медленная — тут приходит пушистый зверь. При этом счетчиками изнутри нереально диагностировать причину.
У Саши логика правильная, но порядок использования хостового свопа немного не такой, так как используется несколько механизмов экономии ОЗУ:
— 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 доступны. А там есть все необходимое для диагностики…
Я упростил чтоб было понятнее 😉
Да, экономия памяти несколько сгладит проблему.
На эту тему вспоминается лаба из курса по производительности:
есть две одинаковые виртуальные машины с лимитом по памяти. У одной установлены VMware Tools, у второй — нет.
В результате, с VMware Tools ВМ худо бедно шевелится. Без них — виснет на каждой операции.
Разница в использовании свопа:
— ВМ с VMware Tools «использует» механизм Memory Baloon;
— ВМ без VMware Tools — Host Swap.
И то своп, и другое своп. Но своп разный. 🙂
Просто в лабе хреновые диски использовали =)
Ну да. VMware ещё в 4.1 показывали производительность на уровне 80% от «нативной» со свопом на ssd. Я, если честно, был настроен скептически. Виноват