Virtual machine memory usage vmware ошибка

Hi Guys,

             How are you doing? thanks for the Kind assist…I have a warning error that wont go away on our Vsphere web client about the Virtual machine host memory usage. Please does anybody has a clue as to what the warning could be? My take on it is either something is spiking the memory or I might need to add more Physical memory to the host. I´m just tried of acknowledging the warning and then it shows up again,any tip is appreciated.

attach_file
Attachment

2017-09-22_15_44_…Client.png
24.2 KB

Hey mattyww​ hope you are doing fine

As per this document https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/perf-vsphere-memory_mana…

«Consumed Host Memory usage is defined as the amount of host memory that is allocated to the virtual machine, Active Guest Memory is defined as the amount of guest memory that is currently being used by the guest operating system and its applications.»

You shouldn’t worry about VM consumed, since it’s the physical memory that is assigned to the VM. I would worry for the Active Guest Memory

Let me ask you a few questions:

Which Windows version is this?
Do you have VMware tools installed?
Have you checked memory usage on advanced performance charts / real — time?

(Monitor—> Peformance —> Advanced —> chart options —> Memory —> and then select Consumed host memory and Active Guest memory)

Do you have vROPs available?

Обновлено 27.06.2017

Host CPU usage и host memory usage

Добрый день уважаемые читатели и подписчики, продолжаем изучать виртуализацию и гипервизор компании VMware. В прошлый раз я вам рассказывал, как установить wmware tools в linux, сегодняшняя тема будет, так же про ошибки и предупреждения и разберем мы с вами вот такие «host CPU usage и host memory usage», что это такое и чем это чревато для вашей инфраструктуры.

Предупреждения о ОЗУ и CPU

Данные предупреждения и алерты, вы можете обнаружить как в vCenter server, так и на отдельном хосте ESXI. Выглядят эти алерты вот так:

  • Host memory usage на вкладке Alarms

Host memory usage esxi 5.5

  • Host CPU usage на вкладке Alarms

Host CPU usage

Оба этих предупреждений на самом деле очень критичные, так как сообщают, что ваш ESXI хост использует всю или практически всю оперативную память или процессор, хорошо если это небольшая пиковая нагрузка, но если такая ситуация постоянная, есть повод серьезно задуматься над выделенными ресурсами (я уже высказывал свои мысли по этому поводу)

Если вы перейдет на вкладку «Summary», то в пункте «Resources» увидите шкалу загрузки по процессору

100 процентная загрузка CPU ESXI

и оперативной памяти.

100 процентная загрузка ОЗУ ESXI

Пути решения данной ситуации такие:

  1. Вы ограничиваете потребление ресурсов для прожорливой виртуальной машины
  2. Либо более правильно перераспределяете их и дорабатываете план планирования, это дольше, но лучше, так как будет возможность предусмотреть будущий рост

Что плохого несут в себе эти предупреждения

Если у вас появились сообщения «Host CPU usage и host memory usage», это чревато тем что:

  • Ваш сервер быстрее изнашивается, так как при правильно планировании, он не должен использовать более 90 процентов ресурсов.
  • Идет борьба за ресурсы между виртуальными машинами, в следствии чего уменьшается их производительность.
  • Может привести к зависанию хоста или виртуальной машины

Советую к этим моментам отнестись более детально, от себя могу порекомендовать хорошую статью, про использовании памяти виртуальными машинами VMware vSphere и не доводите до такого.

CPU и RAM 100% ESXI

Июн 27, 2017 10:20

Часть 1. Про CPU
Часть 3. Про Storage

В этой статье поговорим про счетчики производительности оперативной памяти (RAM) в vSphere.
Вроде бы с памятью все более однозначно, чем с процессором: если на ВМ возникают проблемы с производительностью, их сложно не заметить. Зато если они появляются, справиться с ними гораздо сложнее. Но обо всем по порядку.

Немного теории

Оперативная память виртуальных машин берется из памяти сервера, на которых работают ВМ. Это вполне очевидно:). Если оперативной памяти сервера не хватает для всех желающих, ESXi начинает применять техники оптимизации потребления оперативной памяти (memory reclamation techniques). В противном случае операционные системы ВМ падали бы с ошибками доступа к ОЗУ.

Какие техники применять ESXi решает в зависимости от загруженности оперативной памяти:

Источник

minFree — это оперативная память, необходимая для работы гипервизора.

До ESXi 4.1 включительно  minFree по умолчанию было фиксированным — 6% от объема оперативной памяти сервера (процент можно было поменять через опцию Mem.MinFreePct на ESXi). В более поздних версиях из-за роста объемов памяти на серверах minFree стало рассчитываться исходя из объема памяти хоста, а не как фиксированное процентное значение.

Значение minFree (по умолчанию) считается следующим образом:

Источник

Например, для сервера со 128 Гбайт RAM значение MinFree будет таким:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 Мбайт = 1,88 Гбайт
Фактическое значение может отличаться на пару сотен МБайт, это зависит от сервера и оперативной памяти.

Обычно для продуктивных стендов нормальным можно считать только состояние High. Для стендов для тестирования и разработки приемлемыми могут быть состояния Clear/Soft. Если оперативной памяти на хосте осталось менее 64% MinFree, то у ВМ, работающих на нем, точно наблюдаются проблемы с производительностью.

В каждом состоянии применяются определенные memory reclamation techniques начиная с TPS, практически не влияющего на производительность ВМ, заканчивая Swapping’ом. Расскажу про них подробнее.

Transparent Page Sharing (TPS). TPS — это, грубо говоря, дедупликация страниц оперативной памяти виртуальных машин на сервере.

ESXi ищет одинаковые страницы оперативной памяти виртуальных машин, считая и сравнивая hash-сумму страниц, и удаляет дубликаты страниц, заменяя их ссылками на одну и ту же страницу в физической памяти сервера. В результате потребление физической памяти снижается и можно добиться некоторой переподписки по памяти практически без снижения производительности.


Источник

Данный механизм работает только для страниц памяти размером 4 Кбайт (small pages). Страницы размером 2 МБайт (large pages) гипервизор дедуплицировать даже не пытается: шанс найти одинаковые страницы такого размера не велик.

По умолчанию ESXi выделяет память большим страницам. Разбивание больших страниц на маленькие начинается при достижении порога состояния High и происходит принудительно, когда достигается состояние Clear (см. таблицу состояний гипервизора).

Если же вы хотите, чтобы TPS начинал работу, не дожидаясь заполнения оперативной памяти хоста, в Advanced Options ESXi нужно установить значение “Mem.AllocGuestLargePage” в 0 (по умолчанию 1). Тогда выделение больших страниц памяти для виртуальных машин будет отключено.

С декабря 2014 во всех релизах ESXi TPS между ВМ по умолчанию отключен, так как была найдена уязвимость, теоретически позволяющая получить из одной ВМ доступ к оперативной памяти другой ВМ. Подробности тут. Информация про практическую реализацию эксплуатации уязвимости TPS мне не встречалось.

Политика TPS контролируется через advanced option “Mem.ShareForceSalting” на ESXi:
0 — Inter-VM TPS. TPS работает для страниц разных ВМ;
1 – TPS для ВМ с одинаковым значением “sched.mem.pshare.salt” в VMX;
2 (по умолчанию) – Intra-VM TPS. TPS работает для страниц внутри ВМ.

Однозначно имеет смысл выключать большие страницы и включать Inter-VM TPS на тестовых стендах. Также это можно использовать для стендов с большим количеством однотипных ВМ. Например, на стендах с VDI экономия физической памяти может достигать десятков процентов.

Memory Ballooning. Ballooning уже не такая безобидная и прозрачная для операционной системы ВМ техника, как TPS. Но при грамотном применении с Ballooning’ом можно жить и даже работать.

Вместе с Vmware Tools на ВМ устанавливается специальный драйвер, называемый Balloon Driver (он же vmmemctl). Когда гипервизору начинает не хватать физической памяти и он переходит в состояние Soft, ESXi просит ВМ вернуть неиспользуемую оперативную память через этот Balloon Driver. Драйвер в свою очередь работает на уровне операционной системы и запрашивает свободную память у нее. Гипервизор видит, какие страницы физической памяти занял Balloon Driver, забирает память у виртуальной машины и возвращает хосту. Проблем с работой ОС не возникает, так как на уровне ОС память занята Balloon Driver’ом. По умолчанию Balloon Driver может забрать до 65% памяти ВМ.

Если на ВМ не установлены VMware Tools или отключен Ballooning (не рекомендую, но есть KB:), гипервизор сразу переходит к более жестким техникам отъема памяти. Вывод: следите, чтобы VMware Tools на ВМ были.


Работу Balloon Driver’а можно проверить из ОС через VMware Tools.

Memory Compression. Данная техника применяется, когда ESXi доходит до состояния Hard. Как следует из названия, ESXi пытается сжать 4 Кбайт страницы оперативной памяти до 2 Кбайт и таким образом освободить немного места в физической памяти сервера. Данная техника значительно увеличивает время доступа к содержимому страниц оперативной памяти ВМ, так как страницу надо предварительно разжать. Иногда не все страницы удается сжать и сам процесс занимает некоторое время. Поэтому данная техника на практике не очень эффективна.

Memory Swapping. После недолгой фазы Memory Compression ESXi практически неизбежно (если ВМ не уехали на другие хосты или не выключились) переходит к Swapping’у. А если памяти осталось совсем мало (состояние Low), то гипервизор также перестает выделять ВМ страницы памяти, что может вызвать проблемы в гостевых ОС ВМ.

Вот как работает Swapping. При включении виртуальной машины для нее создается файл с расширением .vswp. По размеру он равен незарезервированной оперативной памяти ВМ: это разница между сконфигурированной и зарезервированной памятью. При работе Swapping’а ESXi выгружает страницы памяти виртуальной машины в этот файл и начинает работать с ним вместо физической памяти сервера. Разумеется, такая такая “оперативная” память на несколько порядков медленнее настоящей, даже если .vswp лежит на быстром хранилище.

В отличие от Ballooning’а, когда у ВМ отбираются неиспользуемые страницы, при Swapping’e на диск могут переехать страницы, которые активно используются ОС или приложениями внутри ВМ. В результате производительность ВМ падает вплоть до подвисания. ВМ формально работает и ее как минимум можно правильно отключить из ОС. Если вы будете терпеливы

Если ВМ ушли в Swap — это нештатная ситуация, которую по возможности лучше не допускать.

Основные счетчики производительности памяти виртуальной машины

Вот мы и добрались до главного. Для мониторинга состояния памяти в ВМ есть следующие счетчики:

Active — показывает объем оперативной памяти (Кбайт), к которому ВМ получила доступ в предыдущий период измерения.

Usage — то же, что Active, но в процентах от сконфигурированной оперативной памяти ВМ. Рассчитывается по следующей формуле: active ÷ virtual machine configured memory size.
Высокий Usage и Active, соответственно, не всегда является показателем проблем производительности ВМ. Если ВМ агрессивно использует память (как минимум, получает к ней доступ), это не значит, что памяти не хватает. Скорее это повод посмотреть, что происходит в ОС.
Есть стандартный Alarm по Memory Usage для ВМ:

Shared — объем оперативной памяти ВМ, дедуплицированной с помощью TPS (внутри ВМ или между ВМ).

Granted — объем физической памяти хоста (Кбайт), который был отдан ВМ. Включает Shared.

Consumed (Granted — Shared) — объем физической памяти (Кбайт), которую ВМ потребляет с хоста. Не включает Shared.

Если часть памяти ВМ отдается не из физической памяти хоста, а из swap-файла или память отобрана у ВМ через Balloon Driver, данный объем не учитывается в Granted и Consumed.
Высокие значения Granted и Consumed — это совершенно нормально. Операционная система постепенно забирает память у гипервизора и не отдает обратно. Со временем у активно работающей ВМ значения данных счетчиков приближается к объему сконфигурированной памяти, и там остаются.

Zero — объем оперативной памяти ВМ (Кбайт), который содержит нули. Такая память считается гипервизором свободной и может быть отдана другим виртуальным машинам. После того, как гостевая ОС получила записала что-либо в зануленную память, она переходит в Consumed и обратно уже не возвращается.

Reserved Overhead — объем оперативной памяти ВМ, (Кбайт) зарезервированный гипервизором для работы ВМ. Это небольшой объем, но он обязательно должен быть в наличии на хосте, иначе ВМ не запустится.

Balloon — объем оперативной памяти (Кбайт), изъятой у ВМ с помощью Balloon Driver.

Compressed — объем оперативной памяти (Кбайт), которую удалось сжать.

Swapped — объем оперативной памяти (Кбайт), которая за неимением физической памяти на сервере переехала на диск.
Balloon и остальные счетчики memory reclamation techniques равны нулю.

Вот так выглядит график со счетчиками Memory нормально работающей ВМ со 150 ГБ оперативной памяти.

На графике ниже у ВМ явные проблемы. Под графиком видно, что для данной ВМ были использованы все описанные техники работы с оперативной памятью. Balloon для данной ВМ сильно больше, чем Consumed. По факту ВМ скорее мертва, чем жива.

ESXTOP

Как и с CPU, если хотим оперативно оценить ситуацию на хосте, а также ее динамику с интервалом до 2 секунд, стоит воспользоваться ESXTOP.

Экран ESXTOP по Memory вызывается клавишей «m» и выглядит следующим образом (выбраны поля B,D,H,J,K,L,O):

Интересными для нас будут следующие параметры:

Mem overcommit avg — среднее значение переподписки по памяти на хосте за 1, 5 и 15 минут. Если выше нуля, то это повод посмотреть, что происходит, но не всегда показатель наличия проблем.

В строках PMEM/MB и VMKMEM/MB — информация о физической памяти сервера и памяти доступной VMkernel. Из интересного здесь можно увидеть значение minfree (в МБайт), состояние хоста по памяти (в нашем случае, high).

В строке NUMA/MB можно увидеть распределение оперативной памяти по NUMA-нодам (сокетам). В данном примере распределение неравномерное, что в принципе не очень хорошо.

Далее идет общая статистика по серверу по memory reclamation techniques:

PSHARE/MB — это статистика TPS;

SWAP/MB — статистика использования Swap;

ZIP/MB — статистика компрессии страниц памяти;

MEMCTL/MB — статистика использования Balloon Driver.

По отдельным ВМ нас может заинтересовать следующая информация. Имена ВМ я скрыл, чтобы не смущать аудиторию:). Если метрика ESXTOP аналогична счетчику в vSphere, привожу соответствующий счетчик.

MEMSZ — объем памяти, сконфигурированный на ВМ (МБ).
MEMSZ = GRANT + MCTLSZ + SWCUR + untouched.

GRANT — Granted в МБайт.

TCHD — Active в МБайт.

MCTL? — установлен ли на ВМ Balloon Driver.

MCTLSZ — Balloon в МБайт.

MCTLGT — объем оперативной памяти (МБайт), который ESXi хочет изъять у ВМ через Balloon Driver (Memctl Target).

MCTLMAX — максимальный объем оперативной памяти (МБайт), который ESXi может изъять у ВМ через Balloon Driver.

SWCUR — текущий объем оперативной памяти (МБайт), отданный ВМ из Swap-файла.

SWGT — объем оперативной памяти (МБайт), который ESXi хочет отдавать ВМ из Swap-файла (Swap Target).

Также через ESXTOP можно посмотреть более подробную информацию про NUMA-топологию ВМ. Для этого нужно выбрать поля D,G:

NHN – NUMA узлы, на которых расположена ВМ. Здесь можно сразу заметить wide vm, которые не помещаются на один NUMA узел.

NRMEM – сколько мегабайт памяти ВМ берет с удаленного NUMA узла.

NLMEM – сколько мегабайт памяти ВМ берет с локального NUMA узла.

N%L – процент памяти ВМ на локальном NUMA узле (если меньше 80% — могут возникнуть проблемы с производительностью).

Memory на гипервизоре

Если счетчики CPU по гипервизору обычно не представляют особого интереса, то с памятью ситуация обратная. Высокий Memory Usage на ВМ не всегда говорит о наличие проблемы с производительностью, а вот высокий Memory Usage на гипервизоре, как раз запускает работу техник управления памятью и вызывает проблемы с производительностью ВМ. За алармами Host Memory Usage надо следить и не допускать попадания ВМ в Swap.

Unswap

Если ВМ попала в Swap, ее производительность сильно снижается. Следы Ballooning’а и компрессии быстро исчезают после появления свободной оперативной памяти на хосте, а вот возвращаться из Swap в оперативную память сервера виртуальная машина совсем не торопится.
До версии ESXi 6.0 единственным надежным и быстрым способ вывода ВМ из Swap была перезагрузка (если точнее выключение/включение контейнера). Начиная с ESXi 6.0 появился хотя и не совсем официальный, но рабочий и надежный способ вывести ВМ из Swap. На одной из конференций мне удалось пообщаться с одним из инженеров VMware, отвечающим за CPU Scheduler. Он подтвердил, что способ вполне рабочий и безопасный. В нашем опыте проблем с ним также замечено не было.

Собственно команды для вывода ВМ из Swap описал Duncan Epping. Не буду повторять подробное описание, просто приведу пример ее использования. Как видно на скриншоте, через некоторое время после выполнения указанной команд Swap на ВМ исчезает.

Советы по управлению оперативной памятью на ESXi

Напоследок приведу несколько советов, которые помогут вам избежать проблем с производительностью ВМ из-за оперативной памяти:

  • Не допускайте переподписки по оперативной памяти в продуктивных кластерах. Желательно всегда иметь ~20-30% свободной памяти в кластере, чтобы у DRS ( и у администратора) было пространство для маневра, и при миграции ВМ не ушли в Swap. Также не забывайте про запас для отказоустойчивости. Неприятно, когда при выходе из строя одного сервера и перезагрузке ВМ с помощью HA часть машин еще и уходит в Swap.
  • В инфраструктурах с высокой консолидацией старайтесь НЕ создавать ВМ с памятью больше половины памяти хоста. Это опять же поможет DRS’у без проблем распределять виртуальные машины по серверам кластера. Это правило, разумеется, не универсальное :).
  • Следите за Host Memory Usage Alarm.
  • Не забывайте ставить на ВМ VMware Tools и не выключайте Ballooning.
  • Рассмотрите возможность включения Inter-VM TPS и выключения Large Pages в средах с VDI и тестовых средах.
  • Если ВМ испытывает проблемы с производительностью, проверьте не использует ли она память с удаленной NUMA-ноды.
  • Выводите ВМ из Swap как можно быстрее! Помимо всего прочего, если ВМ в Swap’е, по очевидным причинам страдает СХД.

На этом про оперативную память у меня все. Ниже статьи по теме для тех, кто хочет углубиться в детали. Следующая статья будет посвящена стораджу.

Excessive memory consumption can cause performance issues for hosts and virtual machines. When a host is under pressure in terms of available physical memory, it may have to begin swapping memory to disk, which will negatively affect virtual machine performance.

I’ve previously written an article about monitoring memory performance using esxtop, but will cover the main metrics to be aware of when troubleshooting memory performance issues here. The memory page in esxtop is a good place to start:

 6:03:11pm up  1:18, 329 worlds, 4 VMs, 5 vCPUs; MEM overcommit avg: 0.50, 0.50, 0.50
PMEM  /MB:  4095   total:   883     vmk,  1258 other,   1953 free
VMKMEM/MB:  4077 managed:   244 minfree,  3062 rsvd,   1015 ursvd,  high state
PSHARE/MB:  2855  shared,    97  common:  2758 saving
SWAP  /MB:   257    curr,   241 rclmtgt:                 0.00 r/s,   0.00 w/s
ZIP   /MB:    26  zipped,    15   saved
MEMCTL/MB:  1330    curr,  1330  target,  3327 max
View VM only
     GID NAME               MEMSZ    GRANT    SZTGT     TCHD   TCHD_W    SWCUR    SWTGT   S
    3991 XP2              3072.00  3048.00   879.75    92.16    61.44     0.75     0.00
    3988 XP1              2048.00   503.92   175.12    43.03    21.51     5.46     3.88
    4004 TestVM08          700.00    61.86    90.16     0.00     0.00     0.00     0.00
    4007 TestVM07          128.00    56.99    80.79     2.56     0.00     0.00     0.00

There is a lot of data here, so I’ll break down what some of the metrics are.

  • PMEM/MB – This is the amount of physical memory on the host. In this case it is 4095 MB.  VMK refers to the memory being used by the VMKernel, Other is the amount of memory being used by everything other than the VMkernel and Free, is the amount of free memory.
  • VMKMEM/MB – This is the amount of physical memory currently managed by the VMkernel.  4077 MB. ‘Min Free’ is the amount of memory that the VMkernel aims to keep free (this can be tweaked with the mem.memfreepct advanced setting). ‘rsvd’ is the amount of memory reserved by resource pools. ‘ursvd’ is the amount of memory that is currently unreserved.
  • PSHARE – This is the savings made by Transparent Page Sharing – The memory savings here are 2758MB from the 4 virtual machines that are running.
  • State – The host is currently in the ‘high’ state. This is an indication of whether the host is currently reclaiming memory. More on this later.
  • SWAP/MB – This is the total memory swapped out for all virtual machines on the host. ‘curr’ shows the current swap usage, r/s and w/s show the rate that ESXi is swapping memory to disk
  • ZIP/MB – These are the memory compression statistics
  • MEMCTL/MB – These are the memory balloon statistics.

Below these are the virtual machine specific counters, which include:

  • MEMSZ – the amount of memory allocated to the virtual machine
  • MCTLSZ – When > 0 the host is forving VMs to inflate balloon driver to reclaim memory.
  • SWR/s –  If > 0 then the host is swapping memory in from disk.
  • SWW/s – If > 0 then the host is swapping memory out to disk.
  • SWCUR – The amount of swap space in use by the VM. A value greater than zero indicates that the host has previously swapped memory.
  • SWTGT – The amount of swap space the host anticipates would be in use by a VM.
  • SWPWT – Percentage of time a virtual machine is waiting for memory to be swapped back in from disk. A value exceeding five should be acted upon.
  • MCTL – Displays whether or not the balloon driver is installed on the virtual machine.
  • ZIP – If > 0 the host is actively compressing memory.
  • UNZIP – if > 0 the host has accessed compressed memory.

Host Swapping and Memory Reclaimation

When a host is suffering from a lack of memory resources it will attempt to reclaim memory that it has already handed out to virtual machines. There are four host ‘free memory’ states, which indicate whether a host is attempting to reclaim memory. These are High, Soft, Hard and Low.

The state the host is currently in can be see clearly on the memory screen in ESXTOP:

11:40:06pm up 30 min, 326 worlds, 2 VMs, 3 vCPUs; MEM overcommit avg: 0.00, 0.00, 0.00
PMEM  /MB:  4095   total:   878     vmk,   416 other,   2800 free
VMKMEM/MB:  4077 managed:   244 minfree,  3192 rsvd,    885 ursvd,  high state
PSHARE/MB:    39  shared,    21  common:    18 saving
SWAP  /MB:     0    curr,     0 rclmtgt:                 0.00 r/s,   0.00 w/s
ZIP   /MB:     0  zipped,     0   saved
MEMCTL/MB:     0    curr,     0  target,    36 max

The example output above shows a host in the ‘High’ state, which means it is not currently under memory contention. If the host is in the ‘Soft’ state then ballooning is used to reclaim memory. In ‘Hard’, Swapping and compression is used to reclaim, and when the host is in the ‘Low’ state, ballooning, swapping and compression are all used to attempt to reclaim memory. Swapping will have a negative affect on the performance of the host and virtual machines – you can monitor swapping by using the Swap In and Swap Out metrics in vCenter. On a healthy host, these values should always be low:

memory-perf-vcenter

If the host has been or is under memory contention you will see something more along the lines of:

host-memory-contention

It is likely that the state will have changed in esxtop at this time:

 5:25:56am up  6:16, 344 worlds, 4 VMs, 5 vCPUs; MEM overcommit avg: 0.50, 0.50, 0.48
PMEM  /MB:  4095   total:   885     vmk,  2948 other,    261 free
VMKMEM/MB:  4077 managed:   244 minfree,  3020 rsvd,   1057 ursvd,  soft state
PSHARE/MB:  1444  shared,   154  common:  1290 saving
SWAP  /MB:   161    curr,   160 rclmtgt:                 0.02 r/s,   0.00 w/s
ZIP   /MB:    15  zipped,     9   saved
MEMCTL/MB:  1167    curr,  1310  target,  3327 max

As shown above, the host is in the ‘soft’ state, meaning that it is actively ballooning in order to reclaim memory. We can confirm that ballooning has occurred by adding the Balloon metric to the chart:

host-ballooning

The state is good indication of what shape the hosts memory is in. If the host is actively swapping there will be performance degradation for the virtual machine(s). To see whether swapping is affecting a given virtual machine, you can use the %SWPWT metric, which is found on the CPU page in esxtop:

ID      GID NAME                      NWLD   %USED    %RUN    %SYS   %WAIT %VMWAIT    %RDY   %IDLE  %OVRLP   %CSTP  %MLMTD  %SWPWT
    3991     3991 XP2                 7   37.70   38.04    0.62  660.30   11.35    1.80   50.09    0.98    0.00    0.00   12.12
    3988     3988 XP1                 8    3.77    3.78    0.06  793.56    4.17    2.81  189.73    0.08    0.00    0.00    2.90
    4004     4004 TestVM08            6    0.22    0.21    0.01  599.57    0.00    0.34  100.10    0.00    0.00    0.00    0.00
    4007     4007 TestVM07            6    0.20    0.20    0.00  599.39    0.00    0.53  100.04    0.00    0.00    0.00    0.00

%SWPWT shows the percentage of time that a virtual machine is waiting for it’s pages to be swapped. In the example above we can see that the XP2 (and to a lesser extent, XP1) virtual machine is waiting for it’s pages to be swapped, which will negatively affect the VMs performance. Any value above zero indicates a problem. If the value is above 5 then the cause should be investigated immediately.

With this example the cause was due to memory over commitment, with both of the XP virtual machines using all their memory allocation at the same time. It’s also worth checking whether the balloon drivers are present in the virtual machines that are swapping, as without the driver the host may be forced to swap rather than use ballooning (which has a lower impact). The balloon drivers get installed onto the guest VM when you install VMtools. You can check that the balloon drivers are present and enabled by looking at the ‘MCTL?’ column:

 GID NAME                 MEMSZ    GRANT    SZTGT     TCHD     TCHD_W  MCTL?   MCTLSZ  MCTLTGT  MCTLMAX
    3991 XP2              3072.00  3048.14   576.71   153.60   122.88     Y     0.00     0.00  1996.46
    3988 XP1              2048.00   505.10   188.94    35.86    28.68     Y  1330.86  1330.86  1330.86
    4004 TestVM08          700.00    61.86    90.41     0.00     0.00     N     0.00     0.00     0.00
    4007 TestVM07          128.00    56.99    81.25     2.56     0.00     N     0.00     0.00     0.00

A ‘Y’ indicates that the balloon drivers are present in the virtual machine and enabled.

Примерно 2,5 года назад вышел документ по решению проблем с производительностью в VMware vSphere 4.1.

Так как актуальность документ все еще не потерял, я попробую осуществить его перевод…

В начале документа находится схема траблшутинга

Соответственно, есть две дальнейшие диаграммы: базовая и продвинутая.

Базовая.

Возможные проблемы упорядочены по принадлежности (с VMware Tools, CPU, etc) и по их влиянию (от 100% влияния на производительность до возможного).

Проверка VMware Tools.

  • Выберите хост в vClient;
  • Перейдите на вкладку Virtual Machines;
  • Добавьте столбец «VMware Tools Status»;
  • Оцените статус. OK->возвращаемся к диаграмме траблшутинга.  Not Running/Out of date — устраняем.

Если VMware Tools не запущены, необходимо разбираться с гостевой операционной системой. Причина может скрываться в обновлении ядра Linux либо отключенной (кем-то) службе VMware Tools в Windows.

Если VMware Tools устарели, необходимо их обновить из контекстного меню vClient. Как правило, это случается после установки обновлений на хосты ESX/ESXi. После этого зачастую требуется обновить и VMware Tools.

Проверка загрузки процессора в пуле ресурсов (Resource Pool CPU Saturation).

Если используете пулы ресурсов и лимит на процессорные ресурсы пула, то читайте дальше. В противном случае сразу идите в следующий блок Host CPU Saturation.

  • Выберите пул ресурсов и перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «CPU»;
  • Оцените текущую загрузку в MHz (Usage);
  • Сравните значение лимита пула ресурсов и текущую загрузку. Если текущая загрузка близка к лимиту, возможно, имеет место нехватка процессорных ресурсов и вам необходимо оценить значение CPU Ready отдельных виртуальных машин в этом пуле;

Проверка CPU Ready:

  • Для измерения CPU Ready выберите одну из виртуальных машин (далее ВМ) в пуле, перейдите на вкладку Performance, выберите режим «Advanced» и переключитесь в обзор «CPU» (если вы решаете проблему производительности определенной ВМ, начните с нее);
  • Оцените значение Ready для всех «объектов» ВМ. Отдельным «объектом» является каждый виртуальный процессор ВМ. Вам будет необходимо изменить свойства графика «Chart Options…» для отображения этого графика;
  • Среднее или максимальное значение Ready для любого виртуального процессора превышает 2000мс? Если да, то у вас наблюдается нехватка процессорных ресурсов из-за установленного лимита на пул ресурсов;
  • Повторите для всех ВМ этого пула.

На следующем рисунке проиллюстрирован этот пример

Проверка загрузки процессора хоста (Host CPU Saturation).

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «CPU»;
  • Оцените текущую загрузку в MHz (Usage);
  • Превышает ли средняя загрузка 75% или пиковая — 90%? Если да, возможно, вам не хватает процессорных ресурсов хоста. Проверьте CPU Ready у ВМ этого хоста как показано ниже. Если средняя загрузка ЦП не превышает 75%, перейдите к следующему блоку…

Проверка CPU Ready:

  • Если вы решаете проблему производительности определенной ВМ, начните с нее. В противном случае выберите хост, перейдите на вкладку Virtual Machines, отсортируйте список по столбцу Host CPU — MHz и проверьте одну-две ВМ из начала списка;
  • Для измерения CPU Ready выберите ВМ, перейдите на вкладку Performance, выберите режим Advanced и переключитесь в обзор «CPU» (если вы решаете проблему производительности определенной ВМ, начните с нее);
  • Оцените значение Ready для всех «объектов» виртуальной машины. Отдельным «объектом» является каждый виртуальный процессор ВМ. Вам будет необходимо изменить свойства графика «Chart Options…» для отображения этого графика;
  • Среднее или максимальное значение Ready для любого виртуального процессора превышает 2000мс? Если да, то у вас наблюдается нехватка процессорных ресурсов хоста.

Схему анализа данного раздела также можно посмотреть на следующем рисунке:

Загрузка процессора ВМ (Guest CPU Saturation).

  • Выберите ВМ с проблемами по производительности, перейдите на вкладку Performance, выберите режим Advanced и переключитесь в обзор «CPU»;
  • Оцените уровень загрузки ЦП ВМ;
  • Превышает ли средняя загрузка 75% или пиковая — 90%? Если да, возможно, вам не хватает процессорных ресурсов.

Проверка ВМ на активное использование свопа (Active VM Memory Swapping).

Нехватка памяти хоста или пула ресурсов может повлечь за собой активное использование технологии Host Swap. А это в свою очередь резко снизит производительность как одной ВМ, так и нескольких «соседних».

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory». Необходимо будет добавить счетчики «Swap in rate» и «Swap out rate».
  • Оцените показатели «Swap in rate» и «Swap out rate»;
  • Если значения счетчиков больше нуля, то у хоста имеются проблемы с памятью.

Также можно проверить это значение для конкретной ВМ хоста:

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory»;
  • Измените свойства графика (Chart Options…);
  • Выберите Memory/Real-Time, смените тип графика на Stacked Graph (per VM). Выберите все ВМ и счетчики «Swap in rate» и «Swap out rate» для них;
  • Если значения счетчиков больше нуля, имеются проблемы с памятью.

Примечание: если хост является частью DRS-кластера, следует оценить также загрузку по памяти остальных хостов.

Проверка ВМ на использование свопа в прошлом (VM Swap Wait).

Нехватка памяти в прошлом может вызвать выгрузку страниц памяти ВМ на диск сервера (Host Swap). ESXi не осуществляет загрузку неиспользуемой ВМ памяти обратно в память хоста, поэтому вы можете сталкиваться с замедлением в работе ВМ, пока такие страницы будут прочитаны с диска.

  • Выберите ВМ с проблемами по производительности, перейдите на вкладку Performance, выберите режим Advanced и переключитесь в обзор «CPU»;
  • Оцените значение Swap Wait для ВМ. Его будет необходимо добавить в свойствах графика;
  • Содержит ли последний столбец ненулевое значение (столбец average)? Если да, тормоза ВМ из-за свопа. Самое простое решение — перезагрузка ВМ. Если нет — возвращаемся к базовой диаграмме.

Проверка ВМ на «заархивированность» памяти (VM Memory Compression).

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory»;
  • Оцените счетчики «Compression rate» и «Decompression rate». Да, их придется добавить 🙂 ;
  • Принимали ли эти счетчики значения выше 0? Если да, на хосте имелись проблемы с нехваткой памяти (да и сейчас, быть может, имеются). Если нет, возвращаемся к базовой диаграмме;

Также можно проверить «заархивированность» памяти у ВМ:

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory»;
  • Измените свойства графика (Chart Options…);
  • Выберите Memory/Real-Time, смените тип графика на Stacked Graph (per VM). Выберите все ВМ и счетчики «Compression rate» и «Decompression rate» для них;
  • Ненулевые значения будут свидетельствовать о нехватке памяти.

Примечание: если ВМ находится в пуле ресурсов DRS-кластера, следует оценить также загрузку остальных хостов.

Проверка перегруженности СХД (Overloaded Storage Device).

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Disk»;
  • Добавьте на график счетчик «Commands aborted»;
  • Если значение счетчика отлично от нуля, у вас проблемы на стороне СХД. В противном случае ищем дальше.

Проверка на отброс принимаемых пакетов (Dropped Receive Packets).

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Network»;
  • Выберите счетчик Receive Packets Dropped для всех адаптеров vmnic*;
  • Значение больше нуля? Если да, отправляйтесь решать сетевые проблемы. Нет, продолжаем искать причину тормозов.

Проверка на отброс отправляемых пакетов (Dropped Transmit Packets).

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Network»;
  • Выберите счетчик Transmit Packets Dropped для всех адаптеров vmnic*;
  • Значение больше нуля? Если да, отправляйтесь решать сетевые проблемы. Нет, продолжаем искать причину тормозов.

На этом «ясные» причины заканчиваются и начинаются нюансы…

Проверка, что во многопроцессорной ВМ используется только один vCPU (one vCPU in an SMP VM).

Если у ВМ несколько виртуальных процессоров (vCPU), возможно, гостевая ОС некорректно настроена и не использует все vCPU.

  • Выберите ВМ, перейдите на вкладку Performance, выберите режим Advanced и переключитесь в обзор «CPU»;
  • Оцените загрузку в MHz (Usage MHz) для всех vCPU;
  • Загрузка для одного vCPU большая, для остальных — близка к нулю? Да, ваша ВМ использует только один vCPU, смотрите раздел решения проблем с ЦП. Нет — продолжаем поиски.

Проверка CPU Ready у ВМ на средне-нагруженном хосте.

Если на ВМ нагрузка появляется всплесками, то даже с невысокой средней загрузкой ЦП хоста ВМ может испытывать проблемы производительности.

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «CPU»;
  • Счетчик Usage достаточно большой, но не превышает 95%?
  • Выберите проблемную ВМ, перейдите на вкладку Performance, выберите режим Advanced и переключитесь в обзор «CPU»;
  • Включите отображение счетчика Ready для всех vCPU;
  • Есть ли промежутки времени, когда Ready для любого процессора больше 1000ms? Если есть — идем и решаем проблемы с ЦП. Нет — ищем причины дальше.

Если на хосте есть другие ВМ, потенциально испытывающие проблемы — проверьте CPU Ready и у них.

Проверка медленного или перегруженного СХД.

Проверим наличие задержек на СХД:

  • Выберите проблемную ВМ, перейдите на вкладку Performance, выберите режим Advanced и переключитесь в обзор «Virtual Disk»;
  • Выберите отображение всех дисков и счетчиков «Read Latency»/»Write Latency»;
  • Превышают ли задержки 50ms? Если да, определенные проблемы есть, идем проверять очереди.

Проверка задержки очередей:

  • Выберите хост с проблемной ВМ, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Disk»;
  • Включите отображение счетчика «Queue Command Latency» для всех хранилищ;
  • Превышает ли величина задержки 0ms? Если превышает, то вам необходимо увеличить максимальную глубину очереди устройства, после чего измерить задержки физического устройства.

Измерение задержек физического устройства:

  • Выберите хост с проблемной ВМ, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Disk»;
  • Выберите счетчики «Physical Device Read Latency» и «Physical Device Write Latency» для всех хранилищ;
  • Превышает ли величина задержек 50ms? Если да, мы имеем дело с перегруженным по вводу/выводу СХД. Идите в набор решений для СХД (ниже в документе).

Примечание: 50ms — это верхняя граница, когда все может функционировать. Возможно, в вашем случае это будет 30ms или даже 20ms!

Проверка пиковых нагрузок на СХД.

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Disk»;
  • Выберите счетчики «Physical Device Read Latency» и «Physical Device Write Latency» для всех хранилищ;
  • Имеются ли на графике пики, превышающие 20ms, даже если среднее значение ниже 10ms? Если да, мы имеем дело с перегруженным по вводу/выводу СХД

Проверка наличия пиков в передаче данных на сеть.

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Network»;
  • Оцените «Data Transmit Rate» и «Data Receive Rate»;
  • Есть ли периоды, когда пиковая нагрузка превышает 90% на какой-то адаптер? Если да, у вас могут быть проблемы из-за сети, смотрите набор решений под сеть. Если нет, идите и решайте проблему далее.

Проверка низкой загрузки процессора ВМ.

Если загрузка процессора ВМ низкая, но ВМ тормозит, могут быть некоторые проблемы с конфигурацией.

  • Выберите проблемную ВМ, перейдите на вкладку Performance, выберите режим Advanced и переключитесь в обзор «CPU»;
  • Оцените величину счетчика «Usage»;
  • Среднее значение ниже 75%? Возможно, есть некоторые проблемы, которые необходимо «порешать». Идем в раздел решения проблем с ЦП. Если тормоза затрагивают весь хост, повторяем процедуру с остальными ВМ с хоста.

Проверка того, что память ВМ в прошлом была помещена в своп (Past VM Memory Swapping).

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory»;
  • Добавьте счетчик «Swap Used»;
  • Значение счетчика больше нуля? Если да, хост в прошлом активно использовал своп. Читайте решение проблем с памятью. Для определения проблемной ВМ (которая «ушла» в своп) читайте дальше.
  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory»;
  • Выберите тип графика «Stacked Graph (Per VM)» и добавьте счетчик «Swap Used»;
  • ВМ, у которых это значение ненулевое, могут испытывать из-за этого проблемы с производительностью.

Проверка нехватки памяти в пуле ресурсов.

Проверяем использование ballooning:

  • Выберите пул ресурсов, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory»;
  • Оцените счетчик «Ballooning»;
  • Значение больше нуля? Возможно, в пуле ресурсов сильная конкуренция за память. Оцените «Balooning» отдельных ВМ.
  • Выберите хост, являющийся частью DRS-кластера, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory»;
  • В свойствах графика выберите типа графика «Stacked Graph (Per VM)». Добавьте счетчик «Balloon»;
  • Оцените значение счетчика для ВМ, являющихся частью пула. Больше ли оно нуля? Если да, то нехватка памяти вызывает своп в гостевой ОС. Читайте раздел по устранению проблем с ОЗУ. Если нет — повторите операцию с остальными хостами DRS-кластера. Если и там так же — ищем причины дальше.

Проверка нехватки памяти на хосте.

  • Выберите хост, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory»;
  • Оцените счетчик «Ballooning»;
  • Значение больше нуля? Возможно, в пуле ресурсов сильная конкуренция за память. Оцените «Balooning» отдельных ВМ.
  • В свойствах графика выберите типа графика «Stacked Graph (Per VM)». Добавьте счетчик «Balloon»;
  • Оцените значение счетчика для ВМ. Больше ли оно нуля? Если да, то нехватка памяти вызывает своп в гостевой ОС. Читайте раздел по устранению проблем с ОЗУ.

Нехватка памяти для гостевой ОС (High Guest Memory Demand).

  • Выберите ВМ, перейдите на вкладку Performance, там переключитесь в режим «Advanced» и выберите объект «Memory»;
  • Добавьте счетчик «Usage» и оцените его значение;
  • Среднее значение превышает 80%, а пики — 90%? Скорее всего, ВМ не хватает оперативной памяти. Отправляйтесь в раздел устранения проблем с памятью.

Продвинутая диаграмма

Для решения вышеуказанных проблем мы будем использовать esxtop.

Проверка наличия проблем с прерываниями (High Timer-Interrupt Rates).

  • Запускаем esxtop/resxtop;
  • Выбираем экран ЦП, нажав «c»;
  • Добавляем «Summary Stats», нажав «f» и затем «i». Нажмите любую клавишу для возвращения в основной экран esxtop;
  • Оцените счетчик «Times/S»;
  • Он больше 1000 для любой ВМ? Если да, необходимо снизить количество прерываний, прочитав соответствующие рекомендации.

Проверяем наличие косяков с NUMA.

  • Запускаем esxtop/resxtop;
  • Выбираем экран ОЗУ, нажав «m»;
  • Добавим «Numa Stats», нажав «f» и затем «g». Нажмите любую клавишу для возвращения в основной экран esxtop;
  • Оцените счетчик «N%L» для всех ВМ. Если столбец не видно на экране, необходимо нажать «o» и несколько раз «G», для передвижения счетчиков «NUMA» поближе к началу;
  • Если «N%L» меньше 80% для какой-то ВМ, то ВМ имеет косяки с точки зрения Numa-архитектуры. Проследуйте в раздел решения проблем с Numa.

Проверка большого времени отклика у ВМ со снапшотами.

  • Запускаем esxtop/resxtop;
  • Выбираем экран виртуальных дисков, нажав «v»;
  • Если не отображаются задержки, включим их отображение, нажав «f», а затем «g» и «h». Нажмите любую кнопку, чтобы вернуться в основной экран esxtop;
  • Оцените значения «LAT/rd» и «LAT/wr» для ВМ со снапшотами. Данные значения отражают средние величины задержек при операциях ввода-вывода;
  • Перейдите на экран с дисковыми устройствами, нажав «u»;
  • Если задержки не отображаются по умолчанию, добавьте требуемые поля, нажав «f», а затем «j» и «k». Нажмите любую кнопку, чтобы вернуться в основной экран esxtop;
  • Оцените значения «QUED», «DAVG/rd» и «DAVG/wr». «QUED» показывает текущее значение дисковой очереди на LUN. DAVG/* — среднее время отклика устройства;
  • Значение очереди равно нулю? Задержки на экране «виртуального диска» значительно превышают задержки физического LUN? Если да, то проблема в снапшотах ВМ.

To be continued…

Рекомендации по решению проблем ждите в следующей статье/переводе.

Анализ производительности ВМ в VMware vSphere. Часть 2: Memory

Разбираем, как не допустить проблем с производительностью виртуальной машины из-за памяти.

Часть 1. Про CPU

В этой статье поговорим про счетчики производительности оперативной памяти (RAM) в vSphere.

Вроде бы с памятью все более однозначно, чем с процессором: если на ВМ возникают проблемы с производительностью, их сложно не заметить. Зато если они появляются, справиться с ними гораздо сложнее. Но обо всем по порядку.

Немного теории

Оперативная память виртуальных машин берется из памяти сервера, на которых работают ВМ. Это вполне очевидно:). Если оперативной памяти сервера не хватает для всех желающих, ESXi начинает применять техники оптимизации потребления оперативной памяти (memory reclamation techniques). В противном случае операционные системы ВМ падали бы с ошибками доступа к ОЗУ. Какие техники применять ESXi решает в зависимости от загруженности оперативной памяти:

Состояние памяти Граница Действия
High 400% от minFree После достижения верхней границы, большие страницы памяти разбиваются на маленькие (TPS работает в стандартном режиме).
Clear 100% от minFree Большие страницы памяти разбиваются на маленькие, TPS работает принудительно.
Soft 64% от minFree TPS + Balloon
Hard 32% от minFree TPS + Compress + Swap
Low 16% от minFree Compress + Swap + Block

Источник

minFree — это оперативная память, необходимая для работы гипервизора.

До ESXi 4.1 включительно  minFree по умолчанию было фиксированным — 6% от объема оперативной памяти сервера (процент можно было поменять через опцию Mem.MinFreePct на ESXi). В более поздних версиях из-за роста объемов памяти на серверах minFree стало рассчитываться исходя из объема памяти хоста, а не как фиксированное процентное значение. Значение minFree (по умолчанию) считается следующим образом:

Процент памяти, резервируемый для minFree Диапазон памяти
6% 0-4 Гбайт
4% 4-12 Гбайт
2% 12-28 Гбайт
1% Оставшаяся память

Источник

Например, для сервера со 128 Гбайт RAM значение MinFree будет таким:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 Мбайт = 1,88 Гбайт

Фактическое значение может отличаться на пару сотен МБайт, это зависит от сервера и оперативной памяти.

Процент памяти, резервируемый для minFree Диапазон памяти Значение для 128 Гбайт
6% 0-4 Гбайт 245,76 Мбайт
4% 4-12 Гбайт 327,68 Мбайт
2% 12-28 Гбайт 327,68 Мбайт
1% Оставшаяся память (100 Гбайт) 1024 Мбайт

Обычно для продуктивных стендов нормальным можно считать только состояние High. Для стендов для тестирования и разработки приемлемыми могут быть состояния Clear/Soft. Если оперативной памяти на хосте осталось менее 64% MinFree, то у ВМ, работающих на нем, точно наблюдаются проблемы с производительностью.

В каждом состоянии применяются определенные memory reclamation techniques начиная с TPS, практически не влияющего на производительность ВМ, заканчивая Swapping’ом. Расскажу про них подробнее.

Transparent Page Sharing (TPS). TPS — это, грубо говоря, дедупликация страниц оперативной памяти виртуальных машин на сервере.

ESXi ищет одинаковые страницы оперативной памяти виртуальных машин, считая и сравнивая hash-сумму страниц, и удаляет дубликаты страниц, заменяя их ссылками на одну и ту же страницу в физической памяти сервера. В результате потребление физической памяти снижается и можно добиться некоторой переподписки по памяти практически без снижения производительности.

Данный механизм работает только для страниц памяти размером 4 Кбайт (small pages). Страницы размером 2 МБайт (large pages) гипервизор дедуплицировать даже не пытается: шанс найти одинаковые страницы такого размера не велик.

По умолчанию ESXi выделяет память большим страницам. Разбивание больших страниц на маленькие начинается при достижении порога состояния High и происходит принудительно, когда достигается состояние Clear (см. таблицу состояний гипервизора).

Если же вы хотите, чтобы TPS начинал работу, не дожидаясь заполнения оперативной памяти хоста, в Advanced Options ESXi нужно установить значение “Mem.AllocGuestLargePage” в 0 (по умолчанию 1). Тогда выделение больших страниц памяти для виртуальных машин будет отключено.

С декабря 2014 во всех релизах ESXi TPS между ВМ по умолчанию отключен, так как была найдена уязвимость, теоретически позволяющая получить из одной ВМ доступ к оперативной памяти другой ВМ. Подробности тут. Информация про практическую реализацию эксплуатации уязвимости TPS мне не встречалось.

Политика TPS контролируется через advanced option “Mem.ShareForceSalting” на ESXi:

0 — Inter-VM TPS. TPS работает для страниц разных ВМ;

1 – TPS для ВМ с одинаковым значением “sched.mem.pshare.salt” в VMX;

2 (по умолчанию) – Intra-VM TPS. TPS работает для страниц внутри ВМ.

Однозначно имеет смысл выключать большие страницы и включать Inter-VM TPS на тестовых стендах. Также это можно использовать для стендов с большим количеством однотипных ВМ. Например, на стендах с VDI экономия физической памяти может достигать десятков процентов.

Memory Ballooning. Ballooning уже не такая безобидная и прозрачная для операционной системы ВМ техника, как TPS. Но при грамотном применении с Ballooning’ом можно жить и даже работать.

Вместе с Vmware Tools на ВМ устанавливается специальный драйвер, называемый Balloon Driver (он же vmmemctl). Когда гипервизору начинает не хватать физической памяти и он переходит в состояние Soft, ESXi просит ВМ вернуть неиспользуемую оперативную память через этот Balloon Driver. Драйвер в свою очередь работает на уровне операционной системы и запрашивает свободную память у нее. Гипервизор видит, какие страницы физической памяти занял Balloon Driver, забирает память у виртуальной машины и возвращает хосту. Проблем с работой ОС не возникает, так как на уровне ОС память занята Balloon Driver’ом. По умолчанию Balloon Driver может забрать до 65% памяти ВМ.

Если на ВМ не установлены VMware Tools или отключен Ballooning (не рекомендую, но есть KB:), гипервизор сразу переходит к более жестким техникам отъема памяти. Вывод: следите, чтобы VMware Tools на ВМ были.

Работу Balloon Driver’а можно проверить из ОС через VMware Tools

Memory Compression. Данная техника применяется, когда ESXi доходит до состояния Hard. Как следует из названия, ESXi пытается сжать 4 Кбайт страницы оперативной памяти до 2 Кбайт и таким образом освободить немного места в физической памяти сервера. Данная техника значительно увеличивает время доступа к содержимому страниц оперативной памяти ВМ, так как страницу надо предварительно разжать. Иногда не все страницы удается сжать и сам процесс занимает некоторое время. Поэтому данная техника на практике не очень эффективна.

Memory Swapping. После недолгой фазы Memory Compression ESXi практически неизбежно (если ВМ не уехали на другие хосты или не выключились) переходит к Swapping’у. А если памяти осталось совсем мало (состояние Low), то гипервизор также перестает выделять ВМ страницы памяти, что может вызвать проблемы в гостевых ОС ВМ.

Вот как работает Swapping. При включении виртуальной машины для нее создается файл с расширением .vswp. По размеру он равен незарезервированной оперативной памяти ВМ: это разница между сконфигурированной и зарезервированной памятью. При работе Swapping’а ESXi выгружает страницы памяти виртуальной машины в этот файл и начинает работать с ним вместо физической памяти сервера. Разумеется, такая такая “оперативная” память на несколько порядков медленнее настоящей, даже если .vswp лежит на быстром хранилище.

В отличие от Ballooning’а, когда у ВМ отбираются неиспользуемые страницы, при Swapping’e на диск могут переехать страницы, которые активно используются ОС или приложениями внутри ВМ. В результате производительность ВМ падает вплоть до подвисания. ВМ формально работает и ее как минимум можно правильно отключить из ОС. Если вы будете терпеливы

Если ВМ ушли в Swap — это нештатная ситуация, которую по возможности лучше не допускать.

Основные счетчики производительности памяти виртуальной машины

Вот мы и добрались до главного. Для мониторинга состояния памяти в ВМ есть следующие счетчики:

Active — показывает объем оперативной памяти (Кбайт), к которому ВМ получила доступ в предыдущий период измерения.

Usage — то же, что Active, но в процентах от сконфигурированной оперативной памяти ВМ. Рассчитывается по следующей формуле: active ÷ virtual machine configured memory size.

Высокий Usage и Active, соответственно, не всегда является показателем проблем производительности ВМ. Если ВМ агрессивно использует память (как минимум, получает к ней доступ), это не значит, что памяти не хватает. Скорее это повод посмотреть, что происходит в ОС.

Есть стандартный Alarm по Memory Usage для ВМ:

Shared — объем оперативной памяти ВМ, дедуплицированной с помощью TPS (внутри ВМ или между ВМ).

Granted — объем физической памяти хоста (Кбайт), который был отдан ВМ. Включает Shared.

Consumed (Granted — Shared) — объем физической памяти (Кбайт), которую ВМ потребляет с хоста. Не включает Shared.

Если часть памяти ВМ отдается не из физической памяти хоста, а из swap-файла или память отобрана у ВМ через Balloon Driver, данный объем не учитывается в Granted и Consumed.

Высокие значения Granted и Consumed — это совершенно нормально. Операционная система постепенно забирает память у гипервизора и не отдает обратно. Со временем у активно работающей ВМ значения данных счетчиков приближается к объему сконфигурированной памяти, и там остаются.

Zero — объем оперативной памяти ВМ (Кбайт), который содержит нули. Такая память считается гипервизором свободной и может быть отдана другим виртуальным машинам. После того, как гостевая ОС получила записала что-либо в зануленную память, она переходит в Consumed и обратно уже не возвращается.

Reserved Overhead — объем оперативной памяти ВМ, (Кбайт) зарезервированный гипервизором для работы ВМ. Это небольшой объем, но он обязательно должен быть в наличии на хосте, иначе ВМ не запустится.

Balloon — объем оперативной памяти (Кбайт), изъятой у ВМ с помощью Balloon Driver.

Compressed — объем оперативной памяти (Кбайт), которую удалось сжать.

Swapped — объем оперативной памяти (Кбайт), которая за неимением физической памяти на сервере переехала на диск.

Balloon и остальные счетчики memory reclamation techniques равны нулю.

Вот так выглядит график со счетчиками Memory нормально работающей ВМ со 150 ГБ оперативной памяти.

На графике ниже у ВМ явные проблемы. Под графиком видно, что для данной ВМ были использованы все описанные техники работы с оперативной памятью. Balloon для данной ВМ сильно больше, чем Consumed. По факту ВМ скорее мертва, чем жива.

ESXTOP

Как и с CPU, если хотим оперативно оценить ситуацию на хосте, а также ее динамику с интервалом до 2 секунд, стоит воспользоваться ESXTOP.

Экран ESXTOP по Memory вызывается клавишей «m» и выглядит следующим образом (выбраны поля B,D,H,J,K,L,O):

Интересными для нас будут следующие параметры:

Mem overcommit avg — среднее значение переподписки по памяти на хосте за 1, 5 и 15 минут. Если выше нуля, то это повод посмотреть, что происходит, но не всегда показатель наличия проблем.

В строках PMEM/MB и VMKMEM/MB — информация о физической памяти сервера и памяти доступной VMkernel. Из интересного здесь можно увидеть значение minfree (в МБайт), состояние хоста по памяти (в нашем случае, high).

В строке NUMA/MB можно увидеть распределение оперативной памяти по NUMA-нодам (сокетам). В данном примере распределение неравномерное, что в принципе не очень хорошо.

Далее идет общая статистика по серверу по memory reclamation techniques:

PSHARE/MB — это статистика TPS;

SWAP/MB — статистика использования Swap;

ZIP/MB — статистика компрессии страниц памяти;

MEMCTL/MB — статистика использования Balloon Driver.

По отдельным ВМ нас может заинтересовать следующая информация. Имена ВМ я скрыл, чтобы не смущать аудиторию:). Если метрика ESXTOP аналогична счетчику в vSphere, привожу соответствующий счетчик.

MEMSZ — объем памяти, сконфигурированный на ВМ (МБ).

MEMSZ = GRANT + MCTLSZ + SWCUR + untouched.

GRANT — Granted в МБайт.

TCHD — Active в МБайт.

MCTL? — установлен ли на ВМ Balloon Driver.

MCTLSZ — Balloon в МБайт.

MCTLGT — объем оперативной памяти (МБайт), который ESXi хочет изъять у ВМ через Balloon Driver (Memctl Target).

MCTLMAX — максимальный объем оперативной памяти (МБайт), который ESXi может изъять у ВМ через Balloon Driver.

SWCUR — текущий объем оперативной памяти (МБайт), отданный ВМ из Swap-файла.

SWGT — объем оперативной памяти (МБайт), который ESXi хочет отдавать ВМ из Swap-файла (Swap Target).

Также через ESXTOP можно посмотреть более подробную информацию про NUMA-топологию ВМ. Для этого нужно выбрать поля D,G:

NHN – NUMA узлы, на которых расположена ВМ. Здесь можно сразу заметить wide vm, которые не помещаются на один NUMA узел.

NRMEM – сколько мегабайт памяти ВМ берет с удаленного NUMA узла.

NLMEM – сколько мегабайт памяти ВМ берет с локального NUMA узла.

N%L – процент памяти ВМ на локальном NUMA узле (если меньше 80% — могут возникнуть проблемы с производительностью).

Memory на гипервизоре

Если счетчики CPU по гипервизору обычно не представляют особого интереса, то с памятью ситуация обратная. Высокий Memory Usage на ВМ не всегда говорит о наличие проблемы с производительностью, а вот высокий Memory Usage на гипервизоре, как раз запускает работу техник управления памятью и вызывает проблемы с производительностью ВМ. За алармами Host Memory Usage надо следить и не допускать попадания ВМ в Swap.

Unswap

Если ВМ попала в Swap, ее производительность сильно снижается. Следы Ballooning’а и компрессии быстро исчезают после появления свободной оперативной памяти на хосте, а вот возвращаться из Swap в оперативную память сервера виртуальная машина совсем не торопится.

До версии ESXi 6.0 единственным надежным и быстрым способ вывода ВМ из Swap была перезагрузка (если точнее выключение/включение контейнера). Начиная с ESXi 6.0 появился хотя и не совсем официальный, но рабочий и надежный способ вывести ВМ из Swap. На одной из конференций мне удалось пообщаться с одним из инженеров VMware, отвечающим за CPU Scheduler. Он подтвердил, что способ вполне рабочий и безопасный. В нашем опыте проблем с ним также замечено не было.

Собственно команды для вывода ВМ из Swap описал Duncan Epping. Не буду повторять подробное описание, просто приведу пример ее использования. Как видно на скриншоте, через некоторое время после выполнения указанной команд Swap на ВМ исчезает.

Советы по управлению оперативной памятью на ESXi

Напоследок приведу несколько советов, которые помогут вам избежать проблем с производительностью ВМ из-за оперативной памяти:

  • Не допускайте переподписки по оперативной памяти в продуктивных кластерах. Желательно всегда иметь ~20-30% свободной памяти в кластере, чтобы у DRS ( и у администратора) было пространство для маневра, и при миграции ВМ не ушли в Swap. Также не забывайте про запас для отказоустойчивости. Неприятно, когда при выходе из строя одного сервера и перезагрузке ВМ с помощью HA часть машин еще и уходит в Swap.
  • В инфраструктурах с высокой консолидацией старайтесь НЕ создавать ВМ с памятью больше половины памяти хоста. Это опять же поможет DRS’у без проблем распределять виртуальные машины по серверам кластера. Это правило, разумеется, не универсальное :).
  • Следите за Host Memory Usage Alarm.
  • Не забывайте ставить на ВМ VMware Tools и не выключайте Ballooning.
  • Рассмотрите возможность включения Inter-VM TPS и выключения Large Pages в средах с VDI и тестовых средах.
  • Если ВМ испытывает проблемы с производительностью, проверьте не использует ли она память с удаленной NUMA-ноды.
  • Выводите ВМ из Swap как можно быстрее! Помимо всего прочего, если ВМ в Swap’е, по очевидным причинам страдает СХД.

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

Полезные ссылки

Приложение VMware показывает «Недостаточно физической памяти» в основном из-за конфликтующих обновлений Windows. Также эта ошибка может быть вызвана неоптимальными настройками VMware или устаревшей версией VMWare. Это сообщение об ошибке появляется, когда пользователь пытается загрузить компьютер из неактивного состояния. Это сообщение об ошибке обычно не означает, что у вас меньше физической памяти; вместо этого обычно это связано с несоответствиями программного обеспечения между VMware и компьютером.

Недостаточно физической ошибки памяти в VMware

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

Что вызывает ошибку «Недостаточно физической памяти» в VMware?

  • Конфликт Центра обновления Windows: VMware в прошлом страдал от ошибки «Недостаточно физической памяти» из-за конфликтующих обновлений Windows. Текущее возникновение этого также может быть результатом конфликтующего обновления Windows.
  • Отсутствие прав администратора. Для завершения работы VMware необходим доступ администратора к различным файлам / службам / ресурсам среды хоста. Если вы используете VMware без прав администратора, VMware может показать обсуждаемую ошибку.
  • Устаревшая версия VMware: программные приложения обновляются для повышения производительности и исправления лазеек. VMware работает весьма деликатно, и если среда хоста была обновлена, это может повлиять на работу VMware и, таким образом, привести к тому, что пользователь столкнется с текущей ошибкой VMware.
  • Конфликтующие приложения. Некоторые приложения конфликтуют с VMware и могут вызвать возникшую ошибку. Обратите внимание, что приложения виртуальной среды создают много помех в работе друг друга.
  • Неоптимальные настройки VMware: вы можете настроить VMware по своему вкусу, но некоторые пользователи в этом процессе заставляют VMware работать в неоптимальных настройках, что в конечном итоге приводит к тому, что VMware показывает существующую проблему.
  • Неправильная конфигурация VMware: VMware использует определенный объем оперативной памяти хоста, но при неправильной настройке этот параметр может заставить VMware показать текущую ошибку памяти.

Прежде чем приступить к решению, приведенному ниже, убедитесь, что в вашей системе достаточно оперативной памяти для запуска VMware. Если нет, то добавьте больше памяти в вашу систему и установите размер файла подкачки не менее 16 ГБ.

1. Используйте безопасный режим или чистую загрузку Windows

Могут быть приложения, которые могут мешать нормальной работе VMware, особенно другие приложения виртуальной среды, такие как Virtual Box и т. Д. Чтобы исключить это, используйте встроенный безопасный режим Windows или чистую загрузку Windows.

  1. Чистая загрузка Windows или загрузка Windows в безопасном режиме.
  2. Запустите VMware, чтобы проверить, работает ли он без проблем.

Если VMware работает нормально в среде чистой загрузки или в безопасном режиме, попробуйте найти конфликтующее приложение и попытаться решить проблему между приложениями.

2. Удалите конфликтующее обновление Windows

Microsoft выпускает обновления для своих продуктов для улучшения функций и исправления лазеек. Но у Microsoft есть известная история выпуска обновлений с ошибками. Если ошибка VMware из-за недостатка физической памяти начала возникать сразу после обновления Windows, то удаление этого обновления может помочь нам.

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

  1. Нажмите клавишу Windows, затем введите «Настройки» и в появившемся списке нажмите «Настройки».Открыть настройки в Windows Search
  2. Теперь нажмите «Обновление и безопасность».Откройте «Обновление и безопасность» в настройках Windows
  3. Теперь нажмите на Центр обновления Windows, а затем на Просмотр истории обновлений.Просмотреть историю обновлений Windows
  4. Нажмите Удалить обновления, чтобы удалить последние обновления из вашей системы.Удалить обновления в истории обновлений
  5. Теперь выберите обновление, которое, по вашему мнению, создает проблему, нажмите «Удалить» и следуйте инструкциям на экране, чтобы завершить процесс удаления.
  6. Перезагрузите систему, а затем проверьте, нормально ли начал работать VMware.

Помните, что вы должны удалить последние обновления Windows по одному и проверять VMware, пока не найдете проблемное обновление. После удаления проблемного обновления переустановите другие обновления и скрывайте это конкретное обновление, пока проблема не будет решена Microsoft или VMware.

3. Запустите VMware от имени администратора

VMware необходим неограниченный доступ к различным системным файлам, сервисам и ресурсам. Если безопасность Windows ограничивает доступ VMware к определенным файлам, службам и ресурсам, то VMware выдаст ошибку «Недостаточно физической памяти». В этом случае запуск VMware с правами администратора может решить проблему.

  1. Выключите VMware.
  2. Нажмите клавишу Windows и введите VMware Workstation.
  3. Щелкните правой кнопкой мыши VMware Workstation и выберите «Открыть местоположение файла».
  4. Щелкните правой кнопкой мыши значок VMware Workstation и выберите «Свойства».
  5. Затем перейдите на вкладку «Совместимость» и установите флажок «Запускать эту программу от имени администратора».Проверьте Запуск от имени администратора
  6. Нажмите Применить, а затем ОК.
  7. Теперь запустите VMware Workstation, чтобы проверить, работает ли он нормально без каких-либо проблем.

4. Обновите VMware до последней сборки

Новые технологии появляются изо дня в день на горизонте И.Т. Мир. Каждое программное приложение обновляется в соответствии с этими новыми технологиями. Если среда вашего хоста была обновлена ​​до последней сборки, но вы используете устаревшую версию VMware, то вы можете столкнуться с обсуждаемым сообщением об ошибке. В этом случае обновление VMware до последней сборки может решить проблему.

Обычно, когда доступно обновление, пользователи получают приглашение при запуске VMware. Пользователи также могут использовать пользовательский интерфейс рабочей станции и выбрать «Справка»> «Обновления программного обеспечения». Но если у вас возникли проблемы с использованием VMware, выполните следующие действия.

  1. Откройте веб-браузер вашей системы и перейдите к Официальная страница загрузки VMware Workstation,
  2. Теперь нажмите Download Now согласно вашей ОС.Загрузите последнюю версию VMware Workstation
  3. Ознакомьтесь с лицензионным соглашением с конечным пользователем и нажмите «Принять», чтобы принять лицензионное соглашение.
  4. Нажмите Загрузить сейчас и дождитесь завершения процесса загрузки.
  5. Затем щелкните правой кнопкой мыши загруженный файл и выберите «Запуск от имени администратора».
  6. Следуйте инструкциям на экране для завершения процесса установки.
  7. Затем запустите VMware, чтобы убедиться, что в нем недостаточно физической памяти.

5. Измените настройки VMware на Оптимальные

Настройки VMware позволяют пользователю настроить систему по своему вкусу. Но во время этого процесса пользователи иногда устанавливают неоптимальные настройки VMware, что в конечном итоге приводит к тому, что VMware выдает ошибку нехватки физической памяти.

  1. Выключите гостевую ОС.
  2. Запустите VMware Workstation, затем нажмите «Изменить» и выберите «Настройки».
  3. Теперь в левой части окна «Настройки» нажмите «Память».
  • Поместить всю память виртуальной машины в зарезервированную хост-память: этот параметр следует выбирать, если у вас большая память
  • Разрешить замену большей части памяти виртуальной машины: этот параметр следует выбирать, если у вас немного больше памяти и вы хотите, чтобы виртуальная машина работала более плавно.
  • Разрешить обмен некоторой памяти виртуальной машины: этот параметр следует выбирать, если у вас мало памяти.

Включите параметр «Разрешить обмен большей части памяти виртуальной машины»

В данном сценарии вы должны выбрать второй или третий вариант в соответствии с вашим состоянием, но мы рекомендуем использовать третий вариант.

  1. Нажмите кнопку ОК, чтобы сохранить изменения.
  2. Затем запустите гостевую ОС и проверьте, нормально ли она работает сейчас.

6. Измените файл config.ini

Если до сих пор у вас ничего не получалось, проблема может быть решена путем добавления или изменения файла конфигурации, чтобы ограничить использование VMware Workstation в процентах от доступной оперативной памяти хоста. Это гарантирует, что виртуальная машина будет использовать только 75% оперативной памяти хоста.

  1. Завершите работу всех гостевых операционных систем и закройте рабочую станцию ​​VMware.
  2. Перейдите по следующему пути

C: ProgramData VMware VMware Workstation.

и откройте файл config.ini. Если его там нет, создайте его.

  1. Прокрутите до конца файла и добавьте туда следующую строку:

vmmon.disableHostParameters = «ИСТИНА».Изменить файл Config.ini

Затем сохраните файл и перезагрузите систему.

  1. После перезапуска системы щелкните правой кнопкой мыши значок VMware на рабочем столе и выберите «Запуск от имени администратора».

    Если у вас по-прежнему возникают проблемы с работой гостевой ОС, то вам может помочь создание новой виртуальной машины с правильным объемом памяти и последующее подключение существующего жесткого диска к новой виртуальной машине.

When I run a virtual machine in VMware workstation, after a few minutes of use, it uses all my RAM (16GB). My system performance slows down to a crawl. The problem happens with Linux guest too but its worse with Windows guest. In VMware Workstation Preferences I have Reserved Memory set to 2GB, and specified to fit all virtual machine memory into reserved host RAM but that didn’t help despite docs recommendation.

Does anyone know how to stop VMware Workstation from using up all my RAM when I run a guest Virtual Machine?

I don’t have the problem with VirtualBox and I have tried to re-install VMware Workstation and the problem persist. I’d stop using it but there are some projects that require me to use VMware.

Here are further details:

When I run free -m in the terminal when VMware Workstation is open but no guest running (before firing up the VM):

             total       used       free     shared    buffers     cached
Mem:         15945       3370      12575        198         23        696
-/+ buffers/cache:       2650      13295
Swap:        19072         74      18998

After starting a Windows 10 Guest and running for a few min, if I run free -m in my host I get:

             total       used       free     shared    buffers     cached
Mem:         15945      15694        251       2182         66      12158
-/+ buffers/cache:       3468      12477
Swap:        19072         74      18998

When I shutdown the Windows 10 guest and run free -m again:

             total       used       free     shared    buffers     cached
Mem:         15945      13499       2446        197         67      10209
-/+ buffers/cache:       3223      12722
Swap:        19072         74      18998

To get my RAM back I have to run:
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches and then I run free -m I get:

             total       used       free     shared    buffers     cached
Mem:         15945       3312      12633        198          2        642
-/+ buffers/cache:       2667      13278
Swap:        19072         74      18998

System Host and Guest Specs

//////////////////////////////////////
System Host:
Ubuntu 14.04LTS
VMware Workstation 12 Pro Version: 12.1.1 build-3770994
///////////////////////////////////////

//////////////////////////////////////
VM Guest:
Windows10
RAM: 1984MB
Processors: 1
DisplayRAM: 1GB
///////////////////////////////////////

//////////////////////////////////////
Motherboard:
ASUS AMD M5 A97 R2.0
///////////////////////////////////////

///////////////////////////////////////
CPU:
AM3+ AMD FX 8320 8-Core 
3.5GHz 16MB Total Cache, (5GHz Max)
///////////////////////////////////////

///////////////////////////////////////
Graphics Card:
ZOTAC Nvidia Geforce GT 730
4GB DDR3 64-bit HDCP
DUAL-Link DVI, HDMI, VGA
///////////////////////////////////////

///////////////////////////////////////
RAM: 16GB
Kingston Hyperx 
2x8GB Memory Sticks 
1866 DDR3 240-pin
///////////////////////////////////////

////////////////////////////////////////
POWER SUPPLY:
EVGA 1000w PS
1000GQ
80+ Gold series
///////////////////////////////////////

Update, 19th September 16

(Note that this is additional information by @granjow, which hopefully represents the OP’s experience.)

To add some clarifications, the problem is not that the number in the “free memory” column is small and we are just unhappy about this number because large numbers are nicer. The problem is that system performance is actually terrible.

The problem manifests itself as follows: After starting the VM and some programs, the amount of free memory drops, which is to be expected. The amount of memory used by VMware rises far over the configured limit (i.e. 10 GB instead of 4 GB, with only 8 GB of physical RAM in total). At some point, both guest and host start freezing for > 10 s on several occasions: for example navigating in files in WebStorm (guest), opening a new browser tab or terminal tab or just pressing Alt-Tab (host).

When observing CPU load on those occasions, the guest CPU usage goes to 100 % for as long as the system freezes, but no program is showing up as busy in the task manager. Basically, I can observe the typical symptoms of a system running out of RAM and heavily using the disk as cache. When observing the VMware log, there is often a line about ballooning kicking in, which is said to be the very intelligent mechanism of VMware which manages and releases memory freed by the guest.

We are not talking about bad specs of the host machine, because

  • exactly the same VM has been running on exactly the same hardware on Windows 10 smoothly without ever experiencing performance issues
  • the same VM, imported in VirtualBox on Ubuntu, runs equally well as with VMware on Windows 10, with htop/glances showing constant memory usage of around 4.6 GB, and with no freezes at all.

Virtual Machine(VM) Itself Tells me it is Using Almost All my Mac’s RAM!!!

As shown below, I received an error message stating that my VM is currently using too much memory, basically recommending to put aside what was being performed.

What I was doing was installing 172 updates along with 7 optional updates. This is a completely-new VM: one of Windows 7 Professional.

To suspend this, I have shut down the VM; closed VMWare Fusion; have close VMWare Fusion; and have now completely shut down my Mac for the time being.

The message was within the VM itself, being a window of Microsoft’s OS GUI. The message therefore was non-maneuverable out side of it.

Was the RAM message referring to only the RAM assigned to the VM? Or was the message referring to the Mac’s total 32GB RAM? There is 32GB of RAM in my Mac, and the VM is only 60GB in size (My Mac has 1TB in SSD storage capacity).

How much RAM would be being used by a 60GB size VM? Almost all 32GB of the Mac?

———

For Note:

A Link on This: Memory usage alarm triggers for certain types of Virtual Machines in ESXi 6.x (2149787): https://kb.vmware.com/s/article/2149787

No suggestion is provided, as to what determines who’s RAM was being used: the VM or the Mac’s

— A similar error message found, word-for-word

Обновлено 27.06.2017

Host CPU usage и host memory usage

Добрый день уважаемые читатели и подписчики, продолжаем изучать виртуализацию и гипервизор компании VMware. В прошлый раз я вам рассказывал, как установить wmware tools в linux, сегодняшняя тема будет, так же про ошибки и предупреждения и разберем мы с вами вот такие «host CPU usage и host memory usage», что это такое и чем это чревато для вашей инфраструктуры.

Предупреждения о ОЗУ и CPU

Данные предупреждения и алерты, вы можете обнаружить как в vCenter server, так и на отдельном хосте ESXI. Выглядят эти алерты вот так:

  • Host memory usage на вкладке Alarms

Host memory usage esxi 5.5

  • Host CPU usage на вкладке Alarms

Host CPU usage

Оба этих предупреждений на самом деле очень критичные, так как сообщают, что ваш ESXI хост использует всю или практически всю оперативную память или процессор, хорошо если это небольшая пиковая нагрузка, но если такая ситуация постоянная, есть повод серьезно задуматься над выделенными ресурсами (я уже высказывал свои мысли по этому поводу)

Если вы перейдет на вкладку «Summary», то в пункте «Resources» увидите шкалу загрузки по процессору

100 процентная загрузка CPU ESXI

и оперативной памяти.

100 процентная загрузка ОЗУ ESXI

Пути решения данной ситуации такие:

  1. Вы ограничиваете потребление ресурсов для прожорливой виртуальной машины
  2. Либо более правильно перераспределяете их и дорабатываете план планирования, это дольше, но лучше, так как будет возможность предусмотреть будущий рост

Что плохого несут в себе эти предупреждения

Если у вас появились сообщения «Host CPU usage и host memory usage», это чревато тем что:

  • Ваш сервер быстрее изнашивается, так как при правильно планировании, он не должен использовать более 90 процентов ресурсов.
  • Идет борьба за ресурсы между виртуальными машинами, в следствии чего уменьшается их производительность.
  • Может привести к зависанию хоста или виртуальной машины

Советую к этим моментам отнестись более детально, от себя могу порекомендовать хорошую статью, про использовании памяти виртуальными машинами VMware vSphere и не доводите до такого.

CPU и RAM 100% ESXI

We have seen the VMware ESXi host memory usage alarm in the vSphere console many times during the operations. Today we will discuss what course of action can be taken to remediate this issue.

The ESXi host memory usage go to high when the hosted Virtual Machines utilize higher memory than usual may be during specific job like backup job.

You can clear the alarm or monitor it. It will come to normal stage after sometimes. Alternatively you can either increase the RAM size of that esxi host or add more host in the cluster to balance the resource utilization.

How to clear the Alarm

To clear warnings and errors from the Hardware Status tab:

  1. Go to the Hardware Status tab.
  2. Click the System event log view.
  3. Click Reset event log.
  4. Click Update. The error clears.
  5. Click the Alerts and warnings view.
  6. Click Reset sensors.
  7. Click Update. The memory clears.

Virtual machine memory

We can work with the virtual machine also. A virtual machine’s memory size must be slightly larger than the average guest memory usage. This enables the host to accommodate workload spikes without swapping memory among guests. Increasing the virtual machine memory size results in more overhead memory usage.

If sufficient swap space is available, a high balloon value does not cause performance problems. However, if the swapin and swapout values for the host are large, the host is probably lacking the amount of memory required to meet the demand.

If a virtual machine has high ballooning or swapping, check the amount of free physical memory on the host. A free memory value of 6% or less indicates that the host cannot meet the memory requirements. This leads to memory reclamation, which might degrade performance. If the active memory size is the same as the granted memory size, demand for memory is greater than the memory resources available. If the active memory is consistently low, the memory size might be too large.

If the host has enough free memory, check the resource shares, reservation, and limit of the virtual machines and resource pools on the host. Verify that the host settings are adequate and not lower than those set for the virtual machine.

If little free memory is available, or if you notice degradation in performance, consider taking the following actions.

  • Verify that VMware Tools is installed on each virtual machine. The balloon driver is installed with VMware Tools and is critical to performance.
  • Verify that the balloon driver is enabled. The VMkernel regularly reclaims unused virtual machine memory by ballooning and swapping. Generally, this does not impact virtual machine performance.
  • Reduce the memory space on the virtual machine, and correct the cache size if it is too large. This frees up memory for other virtual machines.
  • If the memory reservation of the virtual machine is set to a value much higher than its active memory, decrease the reservation setting so that the VMkernel can reclaim the idle memory for other virtual machines on the host.
  • Migrate one or more virtual machines to a host in a DRS cluster.
  • Add physical memory to the host.

This way you will be able to resolve the issue of VMware host memory usage.

Also Read,

  • All About VMware vSAN HCL Database Update – TechyGuy
  • VMware vSAN Features By Version Matrix – TechyGuy
  • All You Need To Know About VMware vSAN | vSAN 6.7 – TechyGuy
  • How to force shutdown VMware Virtual Machine – Techy Guy
  • VMware KB Article

Понравилась статья? Поделить с друзьями:
  • Viessmann vitopend 100 ошибка f51
  • Virtual audio cable ошибка trial
  • Viessmann vitopend 100w ошибка f05
  • Virtual machine boot summary hyper v ошибка
  • Viessmann vitopend 100w ошибка f04