Linux: не создавать раздел подкачки?

Мне было интересно, так как я слышал, что подкачка используется, когда у вас нет оперативной памяти, и переполнение слишком много, это плохо, так как у меня много оперативной памяти ( 8 ГБ)....

Что делать, если я не создаю раздел подкачки?

Кроме того, мне нужно это для спячки или это не обязательно?

6 ответов

Решение

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

Когда вы запускаете типичную систему, запускается большое количество сервисов. Программы запускают код инициализации и изменяют частные отображения памяти в процессе. Ряд этих сервисов больше никогда не будет работать. Многие из них не будут бегать часами. Без свопа у ОС нет иного выбора, кроме как навсегда сохранить измененные сопоставления частной памяти, связанные с этими сервисами, в ОЗУ. Это оперативная память, которая никогда не может быть использована в качестве дискового кэша.

Итак, вы хотите поменяться, нужно вам это или нет.

Пару лет я запускаю настольную систему без какого-либо обмена, и она идет отлично! Есть несколько поведений, которые отличаются; некоторые из них выгодны, а некоторые могут навредить вам. Все зависит от того, что вы делаете.

Одним из основных отличий является то, как система ведет себя, когда заканчивается память:

Если нет раздела подкачки, OOM killer запускается немедленно. Если у вас есть утечка памяти в программе, скорее всего, она будет убита. Это происходит, и вы восстанавливаете систему практически мгновенно.

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

Таким образом, поскольку я в любом случае потеряю свои данные, когда системные OOMs, я предпочитаю, чтобы первый вариант имел, по крайней мере, (высокий) шанс на восстановление.

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

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

Есть по существу три случая для рассмотрения:

  • 1: ОЗУ достаточно для внутренних нужд ядра, чтобы все ваши приложения имели рабочий набор страниц в ОЗУ и при этом имели "свободную" ОЗУ для буферного кеша для хранения большей части горячих данных файловой системы.

  • 2: то же, что и выше, за исключением того, что у вас недостаточно свободной оперативной памяти для полной эффективности буферного кеша.

  • 3: Недостаточно ОЗУ для хранения страниц приложений.

В случае 1, который должен быть нормой для рабочей машины, наличие области подкачки или нет ничего не меняет (по крайней мере, в ОС на базе Linux и других ОС, которые перерасходуют память).

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

В случае 3 наличие области подкачки позволяет приложению продолжать работу за счет снижения производительности из-за разбиения на страницы. С другой стороны, отсутствие области подкачки (или достаточно большой) приведет к случайному сбою приложений. Кроме того, в зависимости от настроек ОС, OOM killer может также решить убить наиболее ресурсоемкие приложения, если существует сильная потребность в оперативной памяти, даже не давая им возможности сохранить свои (ваши) критические данные.

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

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

Если вы не хотите использовать раздел подкачки, вы можете использовать файл подкачки: образ файловой системы, хранящийся в обычном файле и используемый в качестве пространства подкачки.

В следующих статьях объясняется, как это сделать подробно:

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

Почему?

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

Для получения более подробной информации об этой тонкой проблеме см. Этот пост в блоге.

Вывод: всегда есть своп.

А для приблизительного размера используйте что-то между 4 и 8 ГБ, даже для систем с большим объемом оперативной памяти, при условии, что вы не переходите в спящий режим. Для получения дополнительной информации см . Документацию Red Hat о пространстве подкачки.

Это немного опасно, но вы МОЖЕТЕ бежать без места подкачки. Но если вы, наконец, превысите объем памяти, ваша система почти сразу же выйдет из строя без уведомления.

То, что дает вам своп, это расширенная, но гораздо более медленная память. Если вы превысите, вы начнете менять местами, это действительно отнимет у вашей системы жизнь… ОДНАКО, убивая ошибочные процессы, вы все равно можете сохранить свою систему.

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

Наконец, посмотрите, что SWAP - это ДЕШЕВЛЕ в том, что вам не нужно делать резервную копию области. (Я надеюсь, что вы один из этих замечательных выдающихся системных администраторов, которые выполняют резервное копирование своих систем).

Так что создай это.

Мое эмпирическое правило было 2* размером памяти..... но теперь, во многих случаях, я в порядке с 1* размером памяти, но обычно использую 1,5*(размер памяти). Вам не нужно создавать это большое количество, но я бы... особенно, если бы вы выполняли какую-либо производственную работу.

Ах, да, и для спящего режима ОБЯЗАТЕЛЬНО требуется обмен, чтобы хранить общее изображение памяти. И, таким образом, размер, если вы рассматриваете h8ibernation, должен быть как минимум (1* объем памяти)+100 МБ... 100 МБ предназначены для возможных издержек, необходимых в процессе.

Другие вопросы по тегам