Управление памятью VMware кажется сложной задачей балансировки. С кластерной оперативной памятью, пулами ресурсов, методами управления VMware (TPS, раздувание, замена хоста), использованием оперативной памяти в гостевой системе, обменом, резервированием, общими ресурсами и ограничениями, существует множество переменных.
Я нахожусь в ситуации, когда клиенты используют выделенные ресурсы кластера vSphere. Однако они настраивают виртуальные машины, как если бы они были на физическом оборудовании. В свою очередь это означает, что стандартная сборка виртуальной машины может иметь 4 виртуальных ЦП и 16 ГБ или более ОЗУ. Я пришел из школы, начинающей с малого (1 vCPU, минимальный объем ОЗУ), проверяя реальное использование и настраивая при необходимости. К сожалению, многие требования производителей и люди, незнакомые с виртуализацией, запрашивают больше ресурсов, чем необходимо ... Я заинтересован в количественной оценке влияния этого решения.
Несколько примеров из «проблемного» кластера.
Сводка пула ресурсов - выглядит почти 4: 1 перегружено. Обратите внимание на большое количество оперативной памяти.
Распределение ресурсов - в столбце Распределение наихудшего случая показано, что эти виртуальные машины будут иметь доступ к менее чем 50% своей сконфигурированной оперативной памяти в стесненных условиях.
График использования памяти в режиме реального времени верхней виртуальной машины в приведенном выше листинге. 4 vCPU и 64 ГБ оперативной памяти. Это в среднем под 9 ГБ использования.
Резюме той же ВМ
Каковы недостатки чрезмерной загрузки и переконфигурирования ресурсов (в частности, ОЗУ) в средах vSphere?
Предполагая, что виртуальные машины могут работать в меньшем количестве ОЗУ, справедливо ли сказать, что есть дополнительные затраты на настройку виртуальных машин с большим количеством ОЗУ, чем им действительно нужно?
Какой контраргумент: «если виртуальной машине выделено 16 ГБ ОЗУ, но используется только 4 ГБ, в чем проблема? »? Например, нужно ли информировать клиентов о том, что виртуальные машины отличаются от физического оборудования?
Какие конкретные метрики должны использоваться для измерения использования оперативной памяти. Отслеживать пики «Активный» против времени? Смотря "Потребляется"?
Обновление: я использовал vCenter Operations Manager для профилирования этой среды и получения некоторых сведений о статистике кластера, перечисленной выше. В то время как вещи определенно перегружены, виртуальные машины на самом деле настолько переконфигурированы с ненужной оперативной памятью, что реальный (крошечный) объем памяти не показывает конфликта памяти на уровне кластера / хоста ...
Мой вывод: виртуальные машины должны быть правильного размера с небольшим буфером для кэширования на уровне ОС. Чрезмерное подчинение из-за невежества или «требований» продавца приводит к ситуации, представленной здесь. Раздувание памяти кажется плохим в каждом случае, так как это влияет на производительность, поэтому правильное изменение размера может помочь предотвратить это.
Обновление 2: некоторые из этих виртуальных машин начинают аварийно завершать работу с:
kernel:BUG: soft lockup - CPU#1 stuck for 71s!
VMware описывает это как признак чрезмерного заполнения памяти . Так что я думаю, что это отвечает на вопрос.
Отчет vCops "Негабаритные виртуальные машины" ...
График vCops "Утилизируемые отходы" ...
В дополнение к превосходному ответу Крейга Уотсона я хотел бы добавить следующее:
Чрезмерное выделение памяти в VMware - это не то, что вы должны делать специально. Как правило, это показывает, что вы или ваш клиент переподписывает оборудование.
Если чрезмерный коммит - единственный выбор, тогда я настоятельно рекомендую вам соблюдать правила приоритета. Если кто-то хочет предоставить некритическую виртуальную машину 16 ГБ vRam, когда ему нужно только 4 ГБ - по крайней мере, поместите эту виртуальную машину в пул с низким ресурсом или предоставьте ей низкий приоритет. Вы действительно не хотите, чтобы гипервизор заменял критически важную производственную базу данных. Производительность не только снизится, но также будет поглощать очереди ввода-вывода по отношению к вашему внутреннему хранилищу.
Если вы используете молниеносное быстрое хранилище (FusionIO, Violin, локальные твердотельные накопители и т. Д.), То замена может не представлять большой проблемы, но с традиционным хранилищем SAN вы в конечном итоге затронете каждую отдельную виртуальную машину и хост, подключенные к одному и тому же массиву / контроллеру.
источник