Краткий ответ:
Установите свой файл подкачки на:
round(sqrt(RAM))
если вы не используете спящий режим
RAM+round(sqrt(RAM))
если вы используете спящий режим
Установите swappiness
10 на рабочем столе, но не на сервере!
Длинный ответ:
В прошлом:
Эмпирическое правило, используемое в течение последних 25 лет, было минимум 1xRAM и максимум 2xRAM, так что это то, что вы будете видеть в кавычках все время.
Этот минимум был заложен еще в каменном веке, когда я был подростком, и динозавры все еще бродили по Земле, и потому что ОЗУ было слишком дорого, и вам совершенно необходимо было это пространство подкачки, чтобы иметь возможность что-либо сделать.
Максимум был установлен в то время из-за уменьшения отдачи: слишком медленно менять объем памяти, поскольку доступ к жестким дискам в 1000 раз медленнее, чем объем оперативной памяти: хорошо в чрезвычайной ситуации, но не очень хорошо для повседневного использования! В то время, когда вам не хватило места подкачки, пришло время добавить больше оперативной памяти! (что все еще верно сегодня).
В настоящее время:
Если вы не используете режим гибернации, а объем вашей памяти превышает 1 ГБ, новое практическое правило - это, round(sqrt(RAM))
где RAM
, очевидно, размер вашей оперативной памяти в ГБ и sqrt
квадратный корень. :-)
Если вы используете спящий режим, вам нужно иметь возможность поменять весь объем ОЗУ + уже перезаписанный ОЗУ на диск, поэтому формула будет выглядеть так: RAM+round(sqrt(RAM))
Правило уменьшения отдачи остается в силе и сегодня для максимума, но если вы не протестируете свое фактическое использование, использование 2xRAM - это просто трата дискового пространства , поэтому не используйте максимум, если у вас не заканчивается пространство подкачки с использованием других методологий .
Все это вместе дает следующую таблицу: (последние 3 столбца обозначают пространство подкачки)
RAM No hibernation With Hibernation Maximum
1GB 1GB 2GB 2GB
2GB 1GB 3GB 4GB
3GB 2GB 5GB 6GB
4GB 2GB 6GB 8GB
5GB 2GB 7GB 10GB
6GB 2GB 8GB 12GB
8GB 3GB 11GB 16GB
12GB 3GB 15GB 24GB
16GB 4GB 20GB 32GB
24GB 5GB 29GB 48GB
32GB 6GB 38GB 64GB
64GB 8GB 72GB 128GB
128GB 11GB 139GB 256GB
256GB 16GB 272GB 512GB
512GB 23GB 535GB 1TB
1TB 32GB 1056GB 2TB
2TB 46GB 2094GB 4TB
4TB 64GB 4160GB 8TB
8TB 91GB 8283GB 16TB
Выше это просто правило большого пальца; это не закон гравитации!
Вы можете нарушить это правило (в отличие от закона гравитации), если ваш конкретный вариант использования отличается!
Совет для профессионалов: всегда размещайте SWAP в начале жесткого диска, так как головки должны меньше перемещаться внутри диска.
Да: на SSD больше не имеет значения, где вы располагаете область подкачки, поскольку они используют квантовое туннелирование вместо движущихся головок, а современные SSD используют все свои ячейки памяти (даже нераспределенное пространство) для предотвращения квантовой деградации.
Как проверить, отличается ли ваше использование подкачки от «общего» правила:
Просто выполните:
for szFile in /proc/*/status ; do
awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' $szFile
done | sort --key 2 --numeric --reverse | more
который выдаст вам список всех запущенных программ, которые поменялись местами (одна из них использует больше всего пространства подкачки сверху)
Если вы используете больше, чем несколько КБ: измените размер больше, чем минимум, в противном случае, не беспокойтесь ...
Если вы на сервере, прекратите читать сейчас: все готово!
Если вы используете клиент для настольного компьютера / ноутбука (не сервер), вы хотите, чтобы ваш графический интерфейс был максимально отзывчивым и переключался только тогда, когда это действительно необходимо . Ubuntu был оптимизирован для ранней замены для использования на сервере, но на вашем клиенте вы хотите, чтобы редактирование этого огромного необработанного изображения в 250 мегапикселей gimp
было быстрым , поэтому установка значения swappiness
10 предотвратит преждевременную замену ядра, гарантируя, что это не так. поменять слишком поздно:
Если у вас есть sysctl.conf
файл,
sudo nano /etc/sysctl.conf
ИЛИ
Если у вас есть sysctl.d
каталог, но нет sysctl.conf
файла, создайте новый файл:
sudo nano /etc/sysctl.d/35_swap.conf
и в обоих случаях добавить:
# change "swappiness" from default 60 to 10
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10
в конец файла сохраните файл ( Ctrl+ XY+ Enterв nano) и выполните:
sysctl --system
перезагрузить параметр или воспользоваться подходом Window $ и перезагрузиться ... :-)