У меня 16 ГБ оперативной памяти. Нужна ли мне файл подкачки на 32 ГБ?

Я читал во многих местах, что эмпирическое правило для пространства подкачки заключается в удвоении объема физической оперативной памяти. Тем не менее, 32 ГБ действительно кажутся СЛИШКОМ БОЛЬШИМИ. Нужно ли мне так много? Нужно ли мне это вообще с таким большим объемом физической оперативной памяти?

Вот очень хорошая рекомендация от Red Hat: Рекомендуемое Системное пространство Подкачки

Выдержка из той же ссылки:

В прошлые годы рекомендуемый объем пространства подкачки увеличивался линейно с объемом оперативной памяти в системе. Однако современные системы часто включают в себя сотни гигабайт оперативной памяти. Как следствие, рекомендуемое пространство подкачки считается функцией загруженности системной памяти, а не системной памяти.

И еще один отрывок из более старая версия страницы:

Однако, учитывая, что пространство подкачки обычно назначается во время установки и что может быть трудно заранее определить нагрузку на память системы, мы рекомендуем определить системную подкачку, используя следующую таблицу.

Таблица RHEL 8:

Amount of RAM    Recommended swap space       Recommended swap space in the system                                 if allowing for hibernation--------------   --------------------------   ---------------------------⩽ 2 GB           2 times the amount of RAM    3 times the amount of RAM> 2 GB – 8 GB    Equal to the amount of RAM   2 times the amount of RAM> 8 GB – 64 GB   At least 4 GB                1.5 times the amount of RAM> 64 GB          At least 4 GB                Hibernation not recommended

На границе между каждым диапазоном, перечисленным в таблице выше, например, в системе с 2 ГБ, 8 ГБ или 64 ГБ системной оперативной памяти, можно по своему усмотрению выбирать пространство подкачки и поддержку гибернации. Если ваши системные ресурсы позволяют это, увеличение пространства подкачки может привести к повышению производительности. Для систем с более чем 140 логическими процессорами или более чем 3 ТБ оперативной памяти рекомендуется использовать пространство подкачки объемом не менее 100 ГБ.

Оригинальная таблица RHEL 5:

Amount of RAM in the System     Recommended Amount of Swap Space4GB of RAM or less              a minimum of 2GB of swap space4GB to 16GB of RAM              a minimum of 4GB of swap space16GB to 64GB of RAM             a minimum of 8GB of swap space64GB to 256GB of RAM            a minimum of 16GB of swap space256GB to 512GB of RAM           a minimum of 32GB of swap space 

Это полностью зависит от того, что вы планируете делать с машиной. Например, если бы это был сервер Sap, то да, я бы добавил 32 Гб подкачки (у нас есть работающие боксы с 128 Гб оперативной памяти и 32 Гб подкачки). Если вы манипулировали массивными изображениями и видео, тогда имеет смысл немного поменяться местами. 32 Гб - это, вероятно, перебор.

Однако я бы не сказал, что нулевой обмен.

В маловероятном случае, если у вас закончится оперативная память - возможно, вы откроете большой файл, возможно, долго работающую вкладку в firefox, это не имеет значения, в этом случае ваш kernel OOM killer включится и начнет убивать приложения, чтобы вернуть память. При таких обстоятельствах вполне возможно, что вы потеряете данные из-за того, что приложения будут уничтожены. Однако, если у вас есть немного подкачки, система продолжит работу, захватывая подкачку и позволяя системе продолжить. Система замедляется, когда происходит интенсивная замена, вы замечаете это и проводите расследование до того, как вся замена будет исчерпана. Кроме того, диск очень дешевый, так почему бы не использовать swap?

Любой, кто говорит: "вам не нужен swap", не спрашивая вас, что вы на самом деле делаете со своим компьютером, делает предположения. Хотя вы вполне можете сделать очень мало со своим компьютером, который потребляет оперативную память, все же лучше задать вопросы о том, что вы планируете с ним делать, прежде чем принимать поспешное решение о том, что вам "не нужен" swap. По моему скромному мнению

Аргх. Ответы в этом посте очень неправильны, и это появляется как один из первых результатов в поиске Google по запросу "Сколько свопов?"

Во-первых, хорошей отправной точкой является Часто ЗАДАВАЕМЫЕ вопросы по Ubuntu Swap

В этом часто задаваемом вопросе содержится важный момент, о котором здесь никто не упоминает, и это (курсив мой)

Иногда большая программа (например, OpenOffice, Neverwinter Nights или видеоредактор) заставляет всю систему нуждаться в дополнительной памяти. Значительное количество страниц, используемых этими большими программами во время их запуска, может использоваться только для инициализации, а затем никогда не использоваться снова. Система может поменять местами эти страницы и освободить память для других программ или даже для дискового кэша. В этих случаях swap будет использоваться, чтобы помочь системе справиться с любой дополнительной нагрузкой.

Так, swap предназначен не только для гибернации! Это действие, замена неиспользуемых страниц, может быть полезным в одних сценариях и вредным в других. Полезно, потому что это может освободить память для использования системой в другом месте, но вредно, когда эта замена слишком агрессивна и заменяет страницы, которые вам действительно нужны. Это особенно верно для настольных систем, где приложения могут простаивать в течение длительных периодов времени, но пользователь все равно ожидает немедленной производительности при возвращении его к жизни. Контроль за тем, насколько это агрессивно, называется сменяемость

В часто задаваемых вопросах Ubuntu Swap этот вопрос обсуждается в разделе Что такое swappiness и как мне его изменить? Значение по умолчанию в системе Ubuntu равно 60, в то время как часто задаваемые вопросы рекомендуют значение 10 для настольного компьютера.

Итак, я бы сказал, что это обычно очень важно не иметь системы с абсолютно отсутствующим пространством подкачки, как рекомендовали некоторые люди по этому вопросу, если только вы не знаете определенных очень специфических сценариев использования вашей системы и не очень хорошо осведомлены о последствиях, которые это может иметь. (Лично у меня нет ситуации, когда я бы запускал систему без подкачки) В сценарии нехватки памяти без подкачки система начнет уничтожать процессы (как правило, те, которые вызвали ООМ)

Вероятно, нет. Если вы планируете перевести свой компьютер в спящий режим (приостановка на диске), вам потребуется не менее 16 ГБ. Если вы не хотите переходить в спящий режим, достаточно выделить несколько гигабайт для подкачки (максимум 4-8).

По собственному опыту я могу сказать следующее:

Из того, что я видел, используя 4 ГБ оперативной памяти в течение 3 лет, Ubuntu использовала подкачку около 60 МБ, но только при выполнении некоторых очень интенсивных задач. Пару недель назад я начал использовать компьютер с 16 ГБ оперативной памяти, и использование подкачки навсегда осталось на уровне 0%. Я выполнил несколько компиляций, рендеринг видео и другие интенсивные задачи. В swap никогда не было никаких изменений. Даже 1 КБ не изменилось.

По сути, в Ubuntu, чем больше у вас оперативной памяти, тем меньше вероятность того, что вы будете использовать или нуждаться в подкачке для какой-либо задачи. 16 ГБ оперативной памяти или даже 8 ГБ оперативной памяти более чем достаточно. Я сделал с 16-гигабайтным ПК 8 компьютеров Virtualbox (каждый от 1 ГБ до 2 ГБ оперативной памяти). Я скомпилировал и отрисовал видео с разрешением 720p, и даже в этих условиях подкачка не изменилась.

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

Другая деталь заключается в том, что некоторые приложения (не все) по-прежнему будут принудительно выполнять чтение из swap. Так что немного выпить - это хорошо. Полное отключение его очень плохо в том случае, если вы дойдете до точки нехватки памяти или ООМ. На данный момент, если у вас нет swap, ядро никак не может переключаться между различными приложениями ram и в конечном итоге начнет уничтожать менее используемые приложения.

Если это поможет в принятии решений на домашнем рабочем столе, то после обновления этого ответа более чем за 4 года я использовал ПК с 16 Гб, 32 Гб, а теперь и 64 Гб оперативной памяти. Тестирование с объемом подкачки всего 128 МБ показало, что у меня не было необходимости в большем объеме подкачки, за исключением случаев, когда я хотел перейти в спящий режим. Я использовал облачные среды на них, lxc, virtualbox, wine, вы называете это. Я отрисовывал видео с помощью openshot, kazam, handbrake, audacity. Я использовал gimp, blender, Inkscape и даже полный пакет LibreOffice. Я даже играл в steam, и ни в одном из этих сценариев обмен не использовался. Конечно, он в конечном итоге привыкнет, если вы так или иначе будете использовать весь объем оперативной памяти, но в целом, чем больше у вас оперативной памяти, тем меньше подкачки вам понадобится.

Только мои 2 цента.