5

Когда я запускаю виртуальную машину на рабочей станции VMware, после нескольких минут использования она использует всю мою оперативную память (16 ГБ). Производительность моей системы снижается до минимума. Проблема возникает и с гостем Linux, но хуже с гостем Windows. В настройках VMware Workstation я зарезервировал память, установленную на 2 ГБ, и указал, что вся память виртуальной машины помещается в зарезервированную оперативную память хоста, но это не помогло, несмотря на рекомендации документации.

Кто-нибудь знает, как остановить VMware Workstation от использования всей моей оперативной памяти при запуске гостевой виртуальной машины?

У меня нет проблемы с VirtualBox, и я попытался переустановить VMware Workstation, и проблема сохраняется. Я бы прекратил его использовать, но есть некоторые проекты, которые требуют от меня использовать VMware.

Вот дальнейшие детали:

Когда я запускаю free -m в терминале, когда VMware Workstation открыта, но не запущен гость (до запуска виртуальной машины):

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

После запуска гостя Windows 10 и запуска в течение нескольких минут, если я запускаю на своем хосте free -m я получаю:

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

Когда я закрываю гостевую Windows 10 и снова запускаю free -m :

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

Чтобы вернуть оперативную память, мне нужно выполнить:sync && echo 3 | sudo tee /proc/sys/vm/drop_caches и затем я запускаю free -m я получаю:

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

Спецификация системного хоста и гостя

//////////////////////////////////////
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
///////////////////////////////////////

Обновление, 19 сентября, 16 сентября

(Обратите внимание, что это дополнительная информация от @granjow, которая, как мы надеемся, отражает опыт ОП.)

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

Проблема проявляется следующим образом: после запуска виртуальной машины и некоторых программ объем свободной памяти падает, что и следовало ожидать. Объем памяти, используемой VMware, значительно превышает установленный лимит (т. Е. 10 ГБ вместо 4 ГБ, всего 8 ГБ физической памяти). В какой-то момент и гость, и хост начинают замораживаться более чем на 10 секунд несколько раз: например, перемещаться по файлам в WebStorm (гость), открывать новую вкладку браузера или вкладку терминала или просто нажимать Alt-Tab (хост).

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

Мы не говорим о плохих спецификациях хост-машины, потому что

  • точно такая же виртуальная машина работала на точно таком же оборудовании в Windows 10 без проблем с производительностью
  • та же виртуальная машина, импортированная в VirtualBox в Ubuntu, работает так же хорошо, как и VMware в Windows 10, с htop/glances, показывающими постоянное использование памяти около 4,6 ГБ, и без зависаний вообще.

4 ответа4

1

Ни в коем случае ваша система фактически не работает где-то близко к памяти. Никаких действий не требуется.

Здесь происходит то, что большой объем дисковой активности, вызванный нормальной работой виртуальной машины, заставляет систему заполнять кэшированные данные в неиспользуемой памяти. По сути, Linux берет данные, к которым часто или недавно обращаются с диска (в вашем случае это в основном данные, считываемые виртуальным диском виртуальной машины), и сохраняет копию в ОЗУ для повышения производительности. Это сделано потому, что оперативная память намного быстрее любого жесткого диска или флэш-накопителя. Если другим приложениям на главном компьютере требуется больше памяти, система просто выпустит некоторые кэшированные данные и выделит их этим приложениям.

Фактические объемы физической памяти, используемой и доступной для приложений, игнорируя кэшированные данные, указаны в строке -/+ buffers/cache . Во время работы виртуальной машины в вашей системе оставалось около 12 ГБ используемой памяти, но большая ее часть использовалась для кэширования данных. Это нормальное поведение, и вам не нужно ничего с этим делать. Фактически, ручная очистка кэша (с помощью sync && echo 3 | sudo tee /proc/sys/vm/drop_caches) приведет к снижению производительности системы, так как системе потребуется доступ к диску для чтения данных, а не просто получение копии в ОЗУ.

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

Более подробную информацию о том, как Linux использует свободную память для кэширования данных, можно найти в разделе «Linux съел мою оперативную память!"

1

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

top - хороший инструмент - он дает вам некоторую полезную информацию, но может потребоваться более целостный подход - iotop или аналогичные инструменты продемонстрировали бы это. Я подозреваю, что его хранилище медленное, а virtualbox и vmware по-разному обрабатывают операции ввода-вывода и оперативной памяти. Исправление может заключаться в использовании ssd и / или для запуска ВМ из другого хранилища, отличного от основной системы, чтобы посмотреть, поможет ли это. Я запускаю свою систему с SSD, а мои виртуальные машины - с большого диска со скоростью 7200 об / мин, хотя я просто хотел получить SSD для этого.

1

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

Я использовал тот же жесткий диск (между прочим, SSD) в другой более медленной системе (процессор Intel i5 6-го поколения, процессор 2,3 ГГц / 2,8 ГГц), с той же ОС и с тем же объемом ОЗУ, но с разными флешками и не испытывал проблема больше Пользователь, который разместил награду за то, что так много внимания уделил этому 2-месячному посту, может захотеть провести тщательный тест на своем оборудовании.

0

Эта проблема также возникает на моей машине (32 ГБ ОЗУ). VMWare заполняет всю оперативную память, и через короткое время система резко замедляется.

VMWare заполняет «кэш-память» - это неиспользуемая оперативная память, которую она использует в качестве кеша. Теоретически это не должно требовать каких-либо действий, как пишет bwDraco.

К сожалению, это не так на практике. Эта проблема началась с VMWare 10, более ранние версии не имели этой проблемы.

Это можно проверить с помощью htop . Смотрите желтую полосу для "Mem". Если эта желтая полоса (использование кэш-памяти ОЗУ) находится справа, то кэш-память заполнена, и машина замедляется.

Я не знаю причину этой проблемы, но у меня есть решение, которое хорошо работает:

Используя задание cron, я выполняю эту команду каждые три минуты:

sh  -c  "sync; echo 3 > /proc/sys/vm/drop_chaces"

Это очищает кэш VMWare, и машина работает без проблем с производительностью.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .