Сколько подкачки нужно взять с 1 ГБ до 8 ТБ ОЗУ на 14.04 или выше?

14

Я собираюсь установить 64-битную версию 14.04 на новую машину с объемом от 1 до 128 ГБ ОЗУ и еще больше ОЗУ позже. Сколько места я должен выделить под раздел подкачки?

И особенно: ПОЧЕМУ эти рекомендации для этих номеров?

(Ни один из существующих ответов здесь и здесь не объясняет почему и немного устарел, если мы посмотрим на 1 ГБ или ОЗУ и выше)

Тим
источник
6
Возможная копия у меня 16 ГБ ОЗУ. Нужен ли подкачка 32 ГБ? Есть ответы от 2017 года (или обновленные в 2017 году), поэтому в настоящее время он содержит более свежие рекомендации, чем эта.
Мелебиус
1
@Melebius: я не согласен: хотя этот вопрос более новый, он более общий, чем тот, на который вы пытаетесь дублировать. Этот Q & A охватывает более старый, но обратное неверно! ;-)
Fabby
1
@ Fabby В таком случае, не должен ли другой быть помечен как дубликат этого?
Мелебиус
1
@Melebius Если оба вопроса могут использоваться рецензентами в качестве дублирующих вопросов других вопросов в разных ситуациях, то оба вопроса могут оставаться открытыми для решения этих различных ситуаций, поскольку оба вопроса имеют ответы с высоким рейтингом.
Карел
2
@Melebius Мы уже обсуждали эту тему в мета-версии, и сообщество решило оставить все как есть.
Fabby

Ответы:

30

Краткий ответ:

Установите свой файл подкачки на:

  • round(sqrt(RAM))если вы не используете спящий режим
  • RAM+round(sqrt(RAM))если вы используете спящий режим

Установите swappiness10 на рабочем столе, но не на сервере!

Длинный ответ:

В прошлом:

Эмпирическое правило, используемое в течение последних 25 лет, было минимум 1xRAM и максимум 2xRAM, так что это то, что вы будете видеть в кавычках все время.

Этот минимум был заложен еще в каменном веке, когда я был подростком, и динозавры все еще бродили по Земле, и потому что ОЗУ было слишком дорого, и вам совершенно необходимо было это пространство подкачки, чтобы иметь возможность что-либо сделать.

Максимум был установлен в то время из-за уменьшения отдачи: слишком медленно менять объем памяти, поскольку доступ к жестким дискам в 1000 раз медленнее, чем объем оперативной памяти: хорошо в чрезвычайной ситуации, но не очень хорошо для повседневного использования! В то время, когда вам не хватило места подкачки, пришло время добавить больше оперативной памяти! (что все еще верно сегодня).

В настоящее время:

  1. Если вы не используете режим гибернации, а объем вашей памяти превышает 1 ГБ, новое практическое правило - это, round(sqrt(RAM))где RAM, очевидно, размер вашей оперативной памяти в ГБ и sqrtквадратный корень. :-)

  2. Если вы используете спящий режим, вам нужно иметь возможность поменять весь объем ОЗУ + уже перезаписанный ОЗУ на диск, поэтому формула будет выглядеть так: RAM+round(sqrt(RAM))

  3. Правило уменьшения отдачи остается в силе и сегодня для максимума, но если вы не протестируете свое фактическое использование, использование 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было быстрым , поэтому установка значения swappiness10 предотвратит преждевременную замену ядра, гарантируя, что это не так. поменять слишком поздно:

Если у вас есть 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 $ и перезагрузиться ... :-)

Fabby
источник
1
Благодарю. Что вы имеете в виду под «убывающей отдачей»? Если и ОЗУ, и подкачка полностью используются, переход в спящий режим невозможен, даже если размер подкачки составляет 2 *, не так ли? (Поскольку гибернации потребуется размер подкачки, чтобы быть оперативной памятью + подкачка, что невозможно?)
Тим
Да, но у меня еще никогда такого не было ... (а я стар!) 2 * RAM: Когда вся оперативная память поменялась местами, вы все равно можете
перейти в
2
«Уменьшение отдачи» просто означает, что доступ к жестким дискам в 1000 раз медленнее, чем к ОЗУ, поэтому, если вам потребуется дважды выгрузить ОЗУ, вы умрете от старости до того, как он завершится ... Это просто для перехода в спящий режим, когда вы я уже обмениваюсь ...
Fabby
1
@Fabby Пришло время просмотреть резюме оригинального вопроса: askubuntu.com/review/close/889454 . См. Комментарий Yufenyuy Veyeh Dider под вопросом.
Карел
1
@mrkskwsnck: это от того же автора ... ;-)
Fabby
6

Необходимость обмена

Своп полезен по 3 причинам:

  1. Удаление беспорядка из RAM. Из статьи на kernel.org:

    «Значительное количество страниц, на которые ссылается процесс в начале его жизни, можно использовать только для инициализации, а затем никогда не использовать снова. Лучше поменять эти страницы и создать больше дисковых буферов, чем оставлять их резидентными и неиспользованными»

    Другими словами, данные, хранящиеся в ОЗУ, могут быть полезны только тогда, когда процесс запущен (например, процесс запуска), а затем просто находится там в ОЗУ, загромождая пространство, которое можно использовать для лучших целей.

  2. Это увеличивает объем памяти, который могут использовать процессы. Это хорошо понято. Вы не хотите, чтобы система исчерпала память и зависала из-за ее отсутствия. По этой конкретной причине, своп должен существовать, выступая в качестве защитной функции.

  3. Спящий режим: при переходе компьютера в спящий режим содержимое оперативной памяти отправляется на диск.

Сумма обмена

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

Например, linux.com рекомендует:

Практическое правило заключается в следующем: 1) для настольной системы используйте пространство подкачки двойной системной памяти, поскольку это позволит вам запускать большое количество приложений (многие из которых могут быть простаивающими и легко заменяться), делая больше оперативной памяти доступно для активных приложений; 2) для сервера используйте меньший объем подкачки (скажем, половину физической памяти), чтобы у вас была некоторая гибкость для подкачки при необходимости, но следите за объемом используемого пространства подкачки и обновляйте свою оперативную память при необходимости; 3) для старых настольных компьютеров (скажем, только 128 МБ) используйте столько места подкачки, сколько сможете, даже до 1 ГБ.

Из личного опыта вот что я бы сделал:

Учитывая, что машина с 1–2 ГБ не нуждается в спящем режиме и для случайного использования, у вас может быть от 1 до 2 ГБ пространства подкачки. Мой компьютер с 14.04 Ubuntu имеет 1 ГБ оперативной памяти и 2 ГБ подкачки. Сумма подкачки никогда не пересекает границу 800 МБ, и я использую свой компьютер только для работы в Интернете и написания сценариев.

Если у вас компьютер объемом более 2 ГБ, и вам не нужно переходить в спящий режим, вы можете сохранить объем подкачки от 512 МБ до 1 ГБ. У меня есть ноутбук с 15.04, который я никогда не впадаю в спящий режим и который имеет файл подкачки ( не раздел ) 512 МБ. Объем оперативной памяти составляет 6 ГБ, но не превышает 2-3 ГБ. Опять же: случайное использование.

Космоскалибур и Фабби уже обратились к свопу на случай, если вам понадобится спящий режим, поэтому я не буду вдаваться в подробности. Мое скромное мнение таково:

Если вы планируете переходить в режим гибернации, содержимое оперативной памяти необходимо будет заменить, поэтому он должен иметь размер, по крайней мере, такой же, как и объем оперативной памяти.

Сергей Колодяжный
источник
:-) Только заметил, что ты что-то написал. Отредактировано и проголосовало! (Как теперь хороший ответ после моего редактирования!: D: D: D)
Fabby