Вы можете сделать то, что предложил Ник, и использовать swapoff . Однако есть еще один, более элегантный способ подстройки «подкачки», или как агрессивно ядро выгружает программы на диск в системах с ядром 2.6.
В списках рассылки ядра linux обсуждались правила, которым должно следовать ядро в отношении обмена . В результате у нас теперь есть патч в ядрах 2.6, который позволяет нам в значительной степени настроить это поведение.
Обратите внимание, что для этого вам нужны привилегии root, как и при выполнении команд swapoff / swapon.
Текущее значение «swappiness» можно проверить в файле / proc / sys / vm / swappiness или с помощью команды sysctl :
sudo sysctl vm.swappiness
Значения «подкачки» могут варьироваться от 0 (без перестановки) до 100 (перестановка на диск в максимально возможной степени). Ubuntu поставляется с установкой по умолчанию на 60.
Чтобы изменить это для сеанса, снова вызовите sysctl и передайте ему значение подкачки:
sudo sysctl vm.swappiness=30
Помимо бесплатного , вы, конечно, можете следить за эффектами этого с помощью отличных утилит htop или iotop .
Если вам нравится то, что вы видите, и хотите сохранить это значение при перезагрузке, просто поместите «vm.swappiness = 30» в файл /etc/sysctl.conf .
$ sudo sysctl vm.swappiness
vm.swappiness = 30
$ sudo sysctl vm.swappiness=40
vm.swappiness = 40
$ sudo sysctl vm.swappiness
vm.swappiness = 40
$ sudo tail /etc/sysctl.conf
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#
# The contents of /proc/<pid>/maps and smaps files are only visible to
# readers that are allowed to ptrace() the process
# kernel.maps_protect = 1
vm.swappiness=30
Вы можете играть с разными значениями, пока не найдете тот, который влечет за собой приемлемый уровень обмена на вашем компьютере.
Помните, что вещи в swap были помещены туда в более загруженное время, чем сейчас.
Возможно, вы обнаружите, что данные также находятся в оперативной памяти - они были загружены обратно для использования, но не стерты из раздела подкачки. Ядро делает это, чтобы сэкономить время в следующем загруженном периоде - если данные уже скопированы туда, оно может просто освободить используемую память, вместо того, чтобы сначала выполнять запись на диск. Поэтому, если вы не знаете, что в ближайшем будущем машине не потребуется снова менять местами, принудительное освобождение пространства подкачки может ничего не дать, кроме как замедлить работу в следующий раз, когда потребуется обмен.
Это осуществляется на основе удаления при записи, поэтому при обновлении копии в ОЗУ блоки в разделе подкачки будут освобождены.
Если пространство подкачки нужно для чего-то другого, чего в данный момент не будет, так как у вас достаточно свободного места, оно, конечно, будет выпущено для этого использования.
Вы не можете видеть, сколько данных находится в этом состоянии (как на дисковых страницах в областях подкачки, так и в оперативной памяти) в выводе из
free
. Вы можете увидеть это через/proc
специальную файловую систему. Посмотрите на выводcat /proc/meminfo
дляSwapCached
подсчета.Еще две причины для использования подкачки при наличии явно свободной памяти:
free
вывод, это, вероятно, не так для вас иметь часть действительно нераспределенной оперативной памяти, а также ту, которая используется кэшем / буферами ввода-вывода.источник
Помните, что
free
это просто снимок использования памяти. Результат, который вы видите, может означать, что в какой-то момент в прошлом системе не хватало оперативной памяти, поэтому не хватало оперативной памяти. С тех пор ОЗУ стало свободным, но материал для свопинга не требовался, поэтому он по-прежнему удерживается на свопе, а не просто загромождает ОЗУ. Если это так, отключение свопа было бы плохой идеей. Существуют ли процессы, которые могут потребовать такой большой объем оперативной памяти с момента последней перезагрузки?Кроме того, вы можете проверить, что у вас нет ограничения на максимальный размер резидента, установленного с помощью ulimit (обычно в / etc / profile, но, возможно, оно меняется в зависимости от дистрибутивов и может быть установлено для каждого процесса (например, в скрипте запуска) ).
Наконец, в Microsoft Windows есть сообщения о конкретных проблемах с выгрузкой Firefox на диск, например, при сворачивании (например, http://joeabiraad.com/mozilla-firefox/control-your-firefox-ram-usage/113 ). Я не слышал об этом в системах GNU / Linux, но это, возможно, стоит изучить.
источник