Когда я открываю приложение с интенсивным использованием ОЗУ (для VirtualBox установлено 2 ГБ ОЗУ), обычно используется некоторое пространство подкачки, в зависимости от того, что еще у меня было открыто в данный момент.
Однако, когда я закрываю это последнее приложение, 2 ГБ ОЗУ освобождаются, но остается то же самое пространство подкачки.
Например, сейчас, примерно через два часа после закрытия VirtualBox, у меня 1,6 ГБ свободной оперативной памяти и еще 770 МБ подкачки.
Как я могу сказать Ubuntu прекратить использовать этот своп и вернуться к использованию оперативной памяти?
performance
swap
ram-usage
jfoucher
источник
источник
Ответы:
То, что своп выделен, не означает, что он «используется». В то время как такие программы, как system monitor и top, покажут часть выделенного пространства подкачки (в вашем примере 770 МБ), но это не означает, что система активно выгружается / выгружается.
Чтобы выяснить, происходит ли что-то в обмене, вы можете использовать
vmstat
команду. Оставьте его на несколько секунд, чтобы успокоиться и наблюдать заsi
колонками (swapin) иso
(swapout). Если ничего не происходит, то нет причин для беспокойства.Вот результат работы
vmstat 1
, где вы можете видеть, что моя машина не переставляет вообще.Тем не менее, здесь
top
вы можете видеть, что у меня есть место подкачки: -источник
Ядро Linux, лежащее в основе Ubuntu, будет автоматически «обменивать» эти страницы с диска на ОЗУ по мере необходимости, поэтому в целом я бы сказал, просто позвольте этому произойти естественно.
Однако, если вы действительно чувствуете, что вам нужно форсировать это (я вижу сценарий, в котором вы хотели бы знать, что система будет реагировать позже), вы можете на мгновение отключить и снова включить своп.
ИЛИ альтернативно в виде одной строки
Будьте осторожны, так как вы можете сделать вашу систему нестабильной, особенно если в ней уже недостаточно оперативной памяти.
источник
Вы также можете установить значение «swappiness» по умолчанию, равное 60, таким образом, своп не будет увеличиваться с самого начала. Почему доставка по умолчанию установлена на 60, когда рекомендуемое значение 10 озадачивает меня. От Ubuntu SwapFAQ :
Изменяя это значение на 10 или даже на 0, вы можете добавить значительное и ощутимое увеличение скорости для более старой системы с медленным движением. Установка этого значения в 0 не отключает своп для ядра Linux 3.4 и ниже, но для 3.5+ это делает так, что вы захотите использовать значение 1, если хотите сохранить его на самом низком уровне *.
Я не вижу причин не устанавливать это значение на 0, поскольку все, что попадает на диск, работает медленнее, чем ОЗУ. У меня есть 8 виртуальных ядер, быстрый SSD и 8 ГБ памяти, и мой подкачка установлена на 0. На данный момент у меня работает 3 виртуальные машины, мое использование памяти составляет 7,1 из 7,7 ГБ, мой используемый подкачка составляет всего 576 КБ 952MB и все системы работают без сбоев!
От Ubuntu SwapFAQ :
Ниже приведены основные инструкции для проверки подкачки, очистки свопинга и изменения подмены на 0:
Чтобы проверить значение перестановки:
Чтобы временно установить своп на 0 ( как рекомендует SpamapS ):
Это очистит ваш своп и перенесет весь своп обратно в память. Сначала убедитесь, что у вас достаточно памяти, перейдя на вкладку ресурсов gnome-system-monitor, ваша свободная память должна быть больше используемой подкачки. Этот процесс может занять некоторое время, используйте gnome-system-monitor для мониторинга и проверки прогресса.
Чтобы установить новое значение на 0:
Чтобы снова включить своп:
Чтобы навсегда установить swappiness на 0:
sudoedit /etc/sysctl.conf
vm.swappiness = 0
sudo shutdown -r now
# перезагрузить систему* В версии ядра 3.5+ установка swappiness на 0 отключает его полностью, и рекомендуется установить значение 1, если вы хотите использовать алгоритм наименьшей загрузки. источник: https://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/
источник
Я обнаружил, что очистка подкачки может сильно помочь в системах с медленными дисками и ограниченной оперативной памятью. Конечно, как уже упоминалось, способ сделать это - запустить
sudo swapoff -a; sudo swapon -a
. Проблема здесь в том, что, если недостаточно ОЗУ, это вызовет всевозможные проблемы.Я написал сценарий, который я называю
toggle_swap
, который работал для меня в течение последних нескольких лет. Он проверяет, достаточно ли свободной оперативной памяти перед тем, как отключить своп. Вот:источник
Поработав в течение нескольких дней с перестановкой , я пришел к выводу, что ядро должно быть оставлено на его собственные устройства. Он знает, что делает, и оптимизирован, чтобы дать вам лучший опыт.
Если у вас нет действительно веской причины для возвращения этого диска, я бы оставил это.
источник
Это не влияет на производительность, если ваше пространство подкачки занято. Единственное ухудшение производительности - это то, что происходит вход / выход из свопа. Если ничего не выгружается или не выгружается, вам не о чем беспокоиться.
источник