Образование vSphere - Каковы недостатки настройки виртуальных машин с * слишком * большим объемом оперативной памяти?

57

Управление памятью 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 "Утилизируемые отходы" ...

введите описание изображения здесь

ewwhite
источник

Ответы:

45

Управление памятью в vSphere довольно приличное, хотя используемые термины часто приводят к путанице.

В общем, следует избегать чрезмерной фиксации памяти, поскольку это создает именно такой тип проблемы. Однако бывают случаи, когда этого нельзя избежать, поэтому предупрежденный - значит, вооружен!

Каковы недостатки чрезмерной загрузки и переконфигурирования ресурсов (особенно ОЗУ) в средах vSphere?

Основным недостатком чрезмерного выделения ресурсов является то, что если у вас возникнут конфликты, ваши хосты будут вынуждены выполнять зацикливание, обмен или интеллектуальное планирование / дедупликацию за кулисами, чтобы предоставить каждой виртуальной машине требуемое ОЗУ.

Для всплывающих окон vSphere будет раздувать «воздушный шарик» оперативной памяти в выбранной виртуальной машине, а затем отдавать эту всплывающую оперативную память гостю, который в ней нуждается. Это на самом деле не «плохо» - виртуальные машины крадут оперативную память друг друга, поэтому не происходит подмены дисков, но это может привести к ошибочным предупреждениям и искаженным показателям, если они основаны на анализе использования оперативной памяти виртуальной машины, так как оперативная память выиграла не помечается как «всплывающее», просто это «используется» ОС.

Другая функция, которую может использовать vSphere - это прозрачный общий доступ к страницам (TPS), который по сути является дедупликацией ОЗУ. vSphere будет периодически сканировать всю выделенную оперативную память в поисках дублированных страниц. Когда он найден, он удаляет дубликаты и освобождает дублированные страницы.

Посмотрите на Управление Vsphere в памяти Whitepaper (PDF) - в частности , «Память мелиоративного в ESXi» (стр 8) - если вам нужно более глубокое объяснение.

Предполагая, что виртуальные машины могут работать в меньшем количестве ОЗУ, справедливо ли говорить о том, что при настройке виртуальных машин с большим объемом оперативной памяти возникает дополнительная нагрузка?

Нет видимых накладных расходов - вы можете выделить 100 ГБ ОЗУ на хосте с 16 ГБ (однако это не означает, что вы должны это делать по причинам, указанным выше).

Общая память, используемая всеми вашими виртуальными машинами, - это «активная» кривая, показанная на ваших графиках. Конечно, вы никогда не должны полагаться только на эту цифру при расчете того, сколько вы хотели бы перерасходить, но если у вас есть исторические метрики, как у вас, вы можете анализировать и обрабатывать их на основе фактического использования.

Разница между «активной» и «потребляемой» оперативной памятью обсуждается в этом потоке сообщества VMWare .

Какой контраргумент: «если у виртуальной машины есть 16 ГБ ОЗУ, но она использует только 4 ГБ, в чем проблема?» ? Например, нужно ли обучать клиентов?

Короткий ответ на этот вопрос - да - клиенты всегда должны быть обучены передовым методам, независимо от имеющихся в их распоряжении инструментов.

Клиенты должны быть обучены определять размер своих виртуальных машин в соответствии с тем, что они используют , а не с тем, что они хотят . Чаще всего люди будут чрезмерно указывать свои виртуальные машины только потому, что им может понадобиться 16 ГБ ОЗУ, даже если они исторически неуклюже занимают 2 ГБ день за днем. Как администратор vSphere, вы обладаете знаниями, метриками и возможностями, чтобы бросить им вызов и спросить их, действительно ли им нужно выделенное ОЗУ.

Тем не менее, если вы комбинируете управление памятью vSphere с тщательно контролируемыми ограничениями чрезмерной передачи, на практике у вас редко будут возникать проблемы, вероятность нехватки ОЗУ в течение длительного периода времени относительно мала.

В дополнение к этому, автоматизированное vMotion (так называемое распределенное планирование ресурсов VMware), по сути, является балансировщиком нагрузки для ваших виртуальных машин - если одна виртуальная машина становится ресурсным бременем, DRS следует перенести виртуальные машины вокруг, чтобы наилучшим образом использовать ресурсы кластера.

Какой конкретный показатель следует использовать для измерения использования оперативной памяти. Отслеживать пики «Активный» против времени?

Главным образом описано выше - ваша основная задача должна заключаться в «активном» использовании ОЗУ, хотя вы должны тщательно определить пороговые значения чрезмерной загрузки, чтобы при достижении определенного соотношения ( это хороший пример , хотя он может быть немного устаревшим). Как правило, я бы, конечно, оставался в пределах 120% от общей оперативной памяти кластера, но вам решать, с каким соотношением вам удобно.

Несколько хороших статей / дискуссий о чрезмерной фиксации памяти:

Крейг Уотсон
источник
Насколько я понимаю, больше оперативной памяти, выделенной для виртуальной машины, означает, что DRS труднее переносить виртуальную машину - для миграции между узлами требуется больше времени, поскольку для копирования оперативной памяти требуется больше времени; и чем больше оперативной памяти требуется, тем меньше вероятность того, что DRS сможет найти достаточно большой бесплатный кусок. Это может быть особенно хлопотно (как я уже полагал), если у вас есть событие (например, сбой оборудования), которое уменьшает емкость в кластере. Маленькие виртуальные машины легко перемешать и вряд ли заметят большие сбои, большие виртуальные машины могут быть хитрыми. Правильно ли меня проинформировали?
Джеймс Полли
2
@James - во время vMotion переносится только активная (т.е. используемая) память, поэтому объем оперативной памяти, выделяемой вашим виртуальным машинам, не имеет большого значения. Ссылка: vmware.com/files/pdf/VMware-VMotion-DS-EN.pdf
Крейг Уотсон,
Отличный ответ. Я обновил свой вопрос более подробно из этого конкретного кластера. Ваши очки хороши, хотя. Оказывается, что виртуальные машины в этой настройке сильно переконфигурированы. Активное использование ОЗУ намного ниже физических ресурсов кластера, так что нет никаких разногласий ... Просто тяжелый всплеск / обмен / безобразие. Я подозреваю, что правильный размер виртуальных машин уменьшит это давление.
13
21

В дополнение к превосходному ответу Крейга Уотсона я хотел бы добавить следующее:

Чрезмерное выделение памяти в VMware - это не то, что вы должны делать специально. Как правило, это показывает, что вы или ваш клиент переподписывает оборудование.

Если чрезмерный коммит - единственный выбор, тогда я настоятельно рекомендую вам соблюдать правила приоритета. Если кто-то хочет предоставить некритическую виртуальную машину 16 ГБ vRam, когда ему нужно только 4 ГБ - по крайней мере, поместите эту виртуальную машину в пул с низким ресурсом или предоставьте ей низкий приоритет. Вы действительно не хотите, чтобы гипервизор заменял критически важную производственную базу данных. Производительность не только снизится, но также будет поглощать очереди ввода-вывода по отношению к вашему внутреннему хранилищу.

Если вы используете молниеносное быстрое хранилище (FusionIO, Violin, локальные твердотельные накопители и т. Д.), То замена может не представлять большой проблемы, но с традиционным хранилищем SAN вы в конечном итоге затронете каждую отдельную виртуальную машину и хост, подключенные к одному и тому же массиву / контроллеру.

pauska
источник
4
Хорошее наблюдение за последствиями обмена при хранении. Это объясняет некоторые проблемы с производительностью VNX, которые я видел ....
13
Замечательный момент, я никогда не думал принимать аргумент IO хранилища,
Дан