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

Как я могу сохранить гостевой процесс vmware полностью резидентным в памяти на хосте Ubuntu linux?

Я использую один гостевой экземпляр Windows XP на хосте Ubuntu Desktop Linux (8.04) через сервер VMWare (2.0.0). Когда я сначала запускаю гостя, он помещает примерно 1,2 ГБ резидентной памяти для процесса (столбец RES для vmware-vmx вверху). После того, как виртуальная машина проработает всего 15 или 20 минут, размер резидентной памяти уменьшается до ~ 80 МБ, а остальная часть идет на свопинг. Для справки: VIRT = 1746 м, RES = 79 м, SHR = 63 м. Я выделил 1 ГБ памяти для гостевой системы XP, но теперь почти вся она находится в режиме подкачки.

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

Итак, мой вопрос: как я могу удержать мой Linux-хост от принудительного использования всей этой памяти для подкачки? Хост - это Dell Optiplex 755 с процессором Intel Q6600 и 4 ГБ памяти. Он вообще не облагается налогом, и я мог бы легко позволить себе закрепить 2 ГБ памяти на этой виртуальной машине XP, если бы мог понять, как это сделать.

Я прочитал о параметре ядра swappiness и установил для vm.swappiness значение 0 в /etc/sysctl.conf (и перезагрузился) в надежде, что это поможет, но, похоже, это не имело никакого значения. Я также пробовал vm.overcommit_memory = 1, и это тоже не помогло.

У кого-нибудь есть предложения?

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

На самом деле нет способа заставить процесс оставаться в оперативной памяти (vm - это процессы), кроме ядра ...

Во-первых, действительно ли вам нужно избегать свопа? проблема с перфомансом, проблема с io и т. д., если не останется, как вы.

Но можно немного настроить. Если вы уверены, что у вас достаточно оперативной памяти, установите для swapiness (параметр ядра) низкое значение (например, 10-15). по умолчанию 60, если я хорошо помню.

посмотрите "Производительность ввода-вывода хоста Linux 2.6" в http://peterkieser.com/technical/vmware-server-issues/

Это должно немного помочь.

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