Да.
Скорее всего, вы всегда должны включать swap, за исключением случаев, когда есть очень веская причина, например, отсутствие диска или наличие только сетевого диска. Если у вас есть своп на порядок часто рекомендуемых смешных размеров (например, в два раза больше оперативной памяти)? Ну нет .
Причина в том, что подкачка полезна не только тогда, когда ваши приложения потребляют больше памяти, чем физической памяти (фактически, в этом случае подкачка не очень полезна вообще, потому что она серьезно влияет на производительность). В настоящее время основным стимулом для обмена является не магическое превращение 16 ГБ ОЗУ в 32 ГБ, а более эффективное использование установленной и доступной ОЗУ.
На современном компьютере оперативная память не остается неиспользованной. Неиспользованная оперативная память - это то, что вы могли бы не купить и не сэкономить. Поэтому, все, что вы загружаете или что - нибудь , что в противном случае отображенных в памяти, ничего , что могло возможно быть повторно использовано кем - либо позже в любое время (ограниченно ограничения безопасности) находится в кэше. Очень скоро после загрузки машины все физическое ОЗУ будет использовано для чего-либо .
Всякий раз, когда вы запрашиваете новую страницу памяти из операционной системы, диспетчер памяти должен принять взвешенное решение:
- Очистить страницу из буфера кеша
- Очистить страницу от сопоставления (фактически так же, как # 1, в большинстве систем)
- Переместить страницу, к которой долгое время не обращались - желательно никогда - чтобы поменяться (это может даже произойти заранее, не обязательно в самый последний момент)
- Убей свой процесс или убей случайный процесс (OOM)
- Ядро паники
Варианты № 4 и № 5 крайне нежелательны и произойдут только в том случае, если у операционной системы нет другого выбора. Опции # 1 и # 2 означают, что вы выбрасываете то, что вам, возможно, скоро понадобится снова. Это негативно влияет на производительность.
Вариант № 3 означает, что вы перемещаете то, что вам (вероятно) не нужно в ближайшее время, на медленное хранилище. Это нормально, потому что теперь то, что вам нужно, может использовать быструю оперативную память.
Удалив опцию № 3, вы фактически ограничили операционную систему выполнением # 1 или # 2. Перезагрузка страницы с диска - это то же самое, что перезагрузка ее из свопа, за исключением того, что перезагрузка из свопа обычно менее вероятна (из-за принятия правильных решений по подкачке).
Другими словами, отключив подкачку, вы ничего не получите, но вы ограничите число полезных опций операционной системы при работе с запросом памяти. Что может и не быть , но очень возможно может быть недостатком (и никогда не будет преимуществом).
[РЕДАКТИРОВАТЬ]
Внимательный читатель mmap
справочной страницы , в частности описание MAP_NORESERVE
, заметит еще одну вескую причину, по которой своп является в некоторой степени необходимостью даже в системе с «достаточным количеством» физической памяти:
«Когда пространство подкачки не зарезервировано, можно получить SIGSEGV при записи, если физическая память недоступна».
- Подожди, что это значит?
Если вы отобразите файл, вы можете получить доступ к содержимому файла напрямую, как если бы он каким-то образом волшебным образом находился в адресном пространстве вашей программы. Для доступа только для чтения операционной системе в принципе требуется не более одной страницы физической памяти, которую она может заполнять различными данными каждый раз, когда вы обращаетесь к другой виртуальной странице (по соображениям эффективности это, конечно, не то, что делается, но в принципе, вы можете получить доступ к данным в терабайтах с одной страницы физической памяти). А что если ты тоженаписать в файл сопоставления? В этом случае операционная система должна иметь физическую страницу - или пространство подкачки - готовую для каждой записанной страницы. Нет другого способа сохранить данные до тех пор, пока процесс обратной записи грязных страниц не выполнит свою работу (это может занять несколько секунд). По этой причине операционная система резервирует (но не обязательно когда-либо фиксирует) пространство подкачки, поэтому, если вы пишете в сопоставление, в то время как физическая страница не используется (это вполне возможно и нормальное состояние), вы ' вновь гарантировано , что он все равно будет работать.
Что теперь, если нет свопа? Это означает, что никакой обмен не может быть зарезервирован (дух!), И это означает, что, как только не осталось свободных физических страниц, и вы пишете на страницу, вы получаете приятный сюрприз в виде процесса получения ошибка сегментации, и, вероятно, быть убитым.
[/РЕДАКТИРОВАТЬ]
Тем не менее, традиционная рекомендация сделать своп в два раза больше оперативной памяти бессмысленна. Хотя дисковое пространство дешевое, не имеет смысла назначать такой большой объем подкачки. Потеря чего-то дешевого все еще расточительна, и вы абсолютно не хотите постоянно менять рабочие наборы размером в несколько сотен мегабайт (или больше).
Не существует единого «правильного» размера свопа («правильных» размеров столько же, сколько пользователей и мнений). Я обычно назначаю фиксированные 512MiB, независимо от объема оперативной памяти, что очень хорошо работает для меня. Причина в том, что 512MiB - это то, что вы всегда можете себе позволить в наше время, даже на маленьком диске. С другой стороны, добавление нескольких гигабайт подкачки не лучше. Вы не собираетесь их использовать, за исключением случаев, когда что-то идет серьезно.
Даже на SSD подкачка на несколько порядков медленнее, чем ОЗУ (из-за пропускной способности шины и задержки), и хотя вполне приемлемо переместить что-то для подкачки, что, вероятно, не понадобится снова (т.е. вы, скорее всего, не будете поменяйте местами снова, чтобы ваш пул доступных страниц был эффективно расширен бесплатно (если вам действительно нужно значительное количество свопа (то есть у вас есть приложение, которое использует, например, набор данных 50 ГБ)), вы в значительной степени потеряны.
Как только ваш компьютер начинает выгружать и выводить гигабайты страниц, все идет на спад. Таким образом, для большинства людей (включая меня) это не вариант, и поэтому такой большой обмен не имеет смысла.