Решил собрать воедино высказывания по поводу создания раздела под swap
Начну с того, что предлагают его не создавать вовсе, дескать в современных реалиях достаточно оперативной памяти от 8Гб и выше. Я не соглашусь и скажу что swap нужен, хотя бы swap=ОЗУ или swap= (1,5 - 2) х ОЗУ, в зависимости от установленного ОЗУ у вас в ПК.
Но начну с новых рекомендаций(сылку на пруф дать не могу, форум закрылся):
bormant пишет: Re: Размер раздела под swap
/sys/power/image_size управляет размером образа гибернации.
В него можно записать строку, представляющую неотрицательное целое число, которое будет любой ценой использоваться как верхний предел размера образа в байтах. Ядро гибернации сделает все возможное, чтобы не превысить этот размер.
Если это невозможно, будет создан образ минимально возможного размера.
В частности, если записать в этот файл '0', то это заставит создавать образы гибернации минимального размера.
Чтение из файла возвращает текущий предельный размер образа, который по умолчанию задан как 2/5 размера ОЗУ.
Если желаете ограничить размер образа сна в N байт, выполните
echo N > /sys/power/image_size
перед засыпанием (по умолчанию размер ограничен 500 МБ).
Как было сказано выше, разработчики ядра считают, что в большинстве случаев для засыпания достаточно файла размером в 2/5 ОЗУ. Соответственно, если нужно засыпать на диск, есть смысл делать swap раздел в 2,5-3 ГБ.
Возможны варианты, когда для засыпания используется дисковый файл. Они сложнее в настройке, тем не менее, если решите использовать именно их, то указанный критерий для принятия решения о необходимости и размере swap становится несущественным.
Лично мне понравилась следующая цитата, пруф:
IgorZ пишет:Есть физическое адресное пространство (ФАП) - это та память, что воткнута в мать. Есть виртуальное адресное пространство (ВАП) - это та память, с которой работает процессор. ФАП и ВАП совершенно разные, даже по размеру. Скажем, у какого-нибудь достаточно древнего компьютера ФАП равен 64-128 МБ, а ВАП равен 64 ГБ. Или у ещё более древнего (середины 90-х годов прошлого века) компьютера с процессором i80386 ФАП 2 или 4 Мб, а ВАП 4Гб. Поэтому часть ВАП может находиться не в ФАП, а на диске. Пересчётом между ВАП, ФАП и диском занимается диспетчер памяти (ДП), он же memory manager (MM). Ядро ДП реализовано аппаратно, поэтому его работа в принципе не может зависеть от того, какая операционная система (ОС) работает (хотя мелкие детали, отданные на реализацию ОС, могут изменяться в зависимости от неё). Несколько различных фрагментов ФАП/диска могут соответствовать непрерывному пространству ВАП (и наоборот). Когда процессор запрашивает новый кусок ВАП, ДП ищет в ФАП непрерывное свободное пространство нужной длины. Есть - выделяет. Но может получиться так, что ФАП или просто занята, или свободное пространство нужного размера есть, но фрагментировано (а фрагментация неизбежно увеличивается со временем). Тогда ДП смотрит список имеющихся занятых кусков ФАП и с того, к которому дольше всего не обращались, снимает специальный признак "удерживать в памяти". Затем повторяет запрос. Фрагмент со снятым признаком выгружается на диск (если в будущем процессор к нему обратится, ему предстоит точно такая же процедура), и, если непрерывный кусок ФАП нужного размера появился, память выделяется. Нет - процедура повторяется, пока память не будет выделена.
Теперь посмотрим, что будет, если свопа нет. К примеру, ФАП=16Гб, из них занято 12 Гб, процессор захотел 120 Мб, а наибольший непрерывный свободный кусок ФАП - 80 Мб. ДП снимает признак "в памяти" с фрагмента ФАП размером 32 Мб, находящегося между двумя свободными кусками размером 32 Мб и 64 Мб. Если бы своп был, при повторном обращении фрагмент выгрузился бы на диск, в ФАП образовался бы непрерывный свободный кусок размером 128 Мб, и ДП выделил бы процессору вожделенные 120Мб. Но свопа нет, фрагмент не выгружается, память не выделяется и ДП снимает пометку "в памяти" со следующего кандидата на выгрузку в своп. Тот тоже не выгружается (некуда) и веселье продолжается. До бесконечности, поскольку занятые фрагменты ФАП не кончатся никогда.
Поскольку именно так (если не считать того, что часть моментов я пропускал для простоты) работает диспетчер памяти в любом компьютере с интел8086-совместимым процессором, начиная с i80386, то беспроблемная работа без свопа гарантирована только если физической памяти в компьютере столько, что никогда не будет занято больше 1/2 - это теоретически обоснованная цифра, но обоснование я просто не помню за ненадобностью. При превышении порога в половину занятой физической памяти появляется вероятность описанного клинча, и она тем выше, чем больше памяти занято, и чем дольше работает компьютер с момента последней загрузки ОС.
На LinuxForum'е тоже есть весьма увлекательная тема: Пара вопросов по swap
и ещё немного от сообщения пользователя caspar топик №46
На данный момент swap у меня не используется:
Консоль: user
[user@localhost ~]$ cat /proc/meminfo | grep -i swap
SwapCached: 0 kB
SwapTotal: 13651964 kB
SwapFree: 13651964 kB
Консоль: user
[user@localhost ~]$ free
total used free shared buffers cached
Mem: 6095220 3384344 2710876 50304 96660 901776
-/+ buffers/cache: 2385908 3709312
Swap: 13651964 0 13651964
Но исходя из своего и чужого опыта я и впредь буду делать раздел под swap размером ОЗУх2, так как планки 2+4=6, то 12Гб невелика потеря, пусть будет и поможет, чем в нужную минуту ОСь встанет колом без swap'а или от его недостатка.
зы: если кому попадутся дельные высказывания в сети, то прошу их цитировать сюда, пригодятся