Я использую один гостевой экземпляр 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/
Это должно немного помочь.
Но поймите, что для того, что вы хотите сделать, нет никакого волшебного трюка. Все операционные системы должны делать свопинг, и они стараются это делать, когда это возможно.