Сегодня о “худшей практике” одной настройки виртуальной машины.
Некоторое время назад обнаружились серверы с большим уровнем 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. Я, если честно, был настроен скептически. Виноват