Назад | Перейти на главную страницу

Выпуск кэшированной памяти гостевой ОС VMware RHEL5

Из всего, что я прочитал, RHEL будет использовать всю доступную / неиспользуемую оперативную память для кеширования, чтобы повысить производительность.

Однако это становится проблемой для меня в среде VMware. VMware (ESX4) ищет гостевую ОС, чтобы сообщить ей (ESX), когда гость закончил использовать память, чтобы сделать ее доступной для другого сервера.

Итак, допустим, у меня есть гость, у которого есть дБ, дБ выполняет интенсивную работу, она заканчивает и теперь бездействует. Но поскольку он кэшировал всю память, VMware по-прежнему считает, что она нужна серверу dB, поэтому не освобождает оперативную память для использования моим веб-сервером, которому требуется дополнительная оперативная память. Конечно, я могу жить с таким количеством гостей, сколько у меня есть ОЗУ, но это пустая трата огромной функции виртуализации, поскольку в целом загрузка моего ЦП составляет менее 10%, а использование ОЗУ (насколько известно VMware) составляет 75%.

Любые идеи?

Одним из механизмов освобождения памяти из виртуальной машины сервера БД в вашем примере будет Драйвер VMware Balloon (который входит в состав VMware Tools):

This is VMware physical memory management driver which acts
like a "balloon" that can be inflated to reclaim physical pages
by reserving them in the guest and invalidating them in the
monitor, freeing up the underlying machine pages so they can
be allocated to other guests. The balloon can also be deflated
to allow the guest to use more physical memory.

См. Например «3.3 Полет на воздушном шаре» в Общие сведения об управлении ресурсами памяти в VMware® ESX Server (pdf).

Вы также можете запустить этот небольшой скрипт

#!/bin/sh
sync && echo 3 > /proc/sys/vm/drop_caches

в ВМ сервера БД в явно бесплатный кеш страницы, dentries и inodes, если вы уверены, что вам больше не нужны кеши.