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


9

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

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

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


Вы должны создать своп, я однажды попытался не создавать своп, не смог продолжить установку
Lynob

что происходит при установке внутри windows? Я сделал это, и это также показалось мне немного медленным по сравнению с окнами, но я не создал раздел
Михай Братулеску

Я никогда не пытался установить Linux внутри Windows, я всегда создаю отдельный раздел
Lynob

Ответы:


13

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

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

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


8
«Итак, вы хотите поменяться, нужно вам это или нет». - Похоже, вы сделали так, что ему нужно поменяться, хочет он этого или нет.
опилки

2
Предположим, у меня достаточно оперативной памяти и я могу позволить себе тратить 2 ГБ. Зачем мне нужен файл подкачки?
Tarik

1
В этом случае вам не нужен файл подкачки. Но, как я утверждал, вы хотите один. Из - за того , или вы не можете позволить себе тратить RAM, вы не должны хотеть использовать RAM нерационально , когда вы не должны.
Дэвид Шварц

Я использую CLI-сервер без подкачки, и он работает отлично. Запустив сервер teampeak3, apache2, node.js, я никогда не вижу, чтобы использовалось более 500 МБ оперативной памяти. Поэтому меня не беспокоит использование ОЗУ «неэффективно» ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: функция веб-сервера этого сервера предназначена исключительно для разработки, поэтому нагрузка всегда остается низкой. И если у меня будет утечка памяти во время разработки, я бы предпочел, чтобы убийца OOM убил ее, как только у меня кончится память, чем вытолкнул всю эту ерунду на диск.
Родной кодер

12

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

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

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

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

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


Это тоже мой опыт. Linux недостаточно хорошо справляется с переключением подкачки, чтобы позволить вам убить вредоносную программу самостоятельно. Более надежно, чтобы убийца OOM делал это сам. Конечно, это ужасный дизайн - лучше было бы заморозить нарушающий процесс, чем убить его, и предоставить хороший графический интерфейс, который позволит разморозить или убить его, но ... Linux.
Тимммм

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

5

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


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

@mdpc, не обязательно; он просто должен быть достаточно большим, чтобы вместить использованный оперативный диск, который нельзя сбросить (т. е. данные, подкрепленные файлом на диске).
psusi

и как бы вы оценили это на творении? Разве вы не планируете правильное планирование и не готовитесь к худшему случаю, так как разделение - это, как правило, боль в изменении после того, как оно установлено?
mdpc

2

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

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

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

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

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

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

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

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

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

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


1

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

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


В чем разница между файлом подкачки и разделом подкачки? и что будет, если у меня их нет?
Михай Братулеску

скорость доступа ....
Якорь ,

2
Если используется ДА, это довольно существенно. Если вы используете раздел, это простая адресация, если вы используете файл, вы должны выполнить все накладные расходы файловой системы, чтобы использовать файл подкачки, и вы НЕ МОЖЕТЕ гарантировать, где на диске будут находиться сегменты.
MDPC

2
@mdpc Нагрузка на файловую систему незначительна, начиная с ядра 2.6. Метаданные, кеш и код файловой системы обойдены. К необработанным дисковым блокам просто обращаются напрямую.
июля

1
@mdpc Файл подкачки не должен быть существенно фрагментирован, если он вообще не создан в последнее время. Кроме того, доступ подкачки редко бывает последовательным, но в основном случайным, из-за того, как работает разбиение по страницам, поэтому фрагментация не должна быть проблемой.
июля 13 июля

0

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

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

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

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

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

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

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


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

Правило 2x размера памяти является старым и устаревшим. Но иметь некоторый обмен не плохая идея. Он не использует слишком много места на диске, поэтому вы не пропустите использованное пространство; обычно он не используется, если у вас достаточно оперативной памяти, и позволяет вам выгружать ядро ​​в ваш своп.
Хеннес

@Hennes - прочитайте мою заметку ... "раньше"
mdpc

0

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

Почему?

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.