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

28075
Mihai Bratulescu

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

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

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

9
Вы должны создать своп, я однажды пытался не создавать своп, не мог продолжить установку Lynob 10 лет назад 0
что происходит при установке внутри Windows? Я сделал это, и это также показалось мне немного медленным по сравнению с Windows, но я не создал раздел Mihai Bratulescu 10 лет назад 0
Я никогда не пытался установить Linux внутри Windows, я всегда создаю отдельный раздел Lynob 10 лет назад 0

6 ответов на вопрос

12
David Schwartz

Modern operating systems require a swap space to make efficient use of RAM. Even if your system has plenty of RAM, wasting RAM results in a smaller buffer cache, which means increased disk I/O. So no matter how much RAM you have, you still want the system to use it efficiently. Using it efficiently means getting things out of RAM that are extremely unlikely to ever be accessed.

When you start up a typical system, a large number of services start up. Programs run initialization code and modify private memory mappings in the process. A number of these services will never run again. Many of them won't run for hours. Without swap, the OS has no choice but to keep the modified private memory mappings associated with those services in RAM forever. That's RAM that can never be used as disk cache.

So you want swap whether you need it or not.

* «Значит, вы хотите обменяться независимо от того, нужен он вам или нет». * - Похоже, вы сделали так, что ему нужен обмен независимо от того, хочет он этого или нет. sawdust 10 лет назад 8
Предположим, у меня достаточно оперативной памяти и я могу позволить себе тратить 2 ГБ. Зачем мне нужен файл подкачки? Tarik 7 лет назад 2
В этом случае вам не нужен файл подкачки. Но, как я уже говорил, вы хотите один. Потому что, независимо от того, можете ли вы позволить себе тратить ОЗУ, вы не должны * хотеть * использовать ОЗУ неэффективно, когда в этом нет необходимости. David Schwartz 7 лет назад 1
Я использую CLI-сервер без подкачки, и он работает отлично. Запустив сервер teampeak3, apache2, node.js, я никогда не вижу, чтобы использовалось более 500 МБ оперативной памяти. Поэтому меня не беспокоит использование ОЗУ «неэффективно» ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: функция веб-сервера на этом сервере предназначена исключительно для разработки, поэтому нагрузка всегда остается низкой. И если у меня будет утечка памяти во время разработки, я бы предпочел, чтобы убийца OOM убил ее, как только у меня кончится память, чем вытолкнул всю эту ерунду на диск. Native Coder 6 лет назад 0
11
Jeff Taylor

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

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

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

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

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

Это тоже мой опыт. Linux недостаточно хорошо справляется с переключением подкачки, чтобы позволить вам убить программу-нарушителя самостоятельно. Надежнее просто, чтобы убийца OOM делал это сам. Конечно, это ужасный дизайн - лучше было бы заморозить нарушающий процесс, чем убить его, и предоставить хороший графический интерфейс, который позволит разморозить или убить его, но ... Linux. Timmmm 8 лет назад 0
Наконец ответ, который имеет смысл и соответствует моему собственному опыту. Я не могу понять обоснование «у вас должен быть раздел подкачки». За исключением случаев, когда мы хотим перевести систему в спящий режим. Tarik 7 лет назад 2
5
psusi

Swap is required for hibernation, otherwise you can get by without it just fine.

Таким образом, размер области подкачки должен быть немного больше размера памяти, установленной в вашей системе. mdpc 10 лет назад 0
@mdpc, не обязательно; он просто должен быть достаточно большим, чтобы вместить использованный оперативный диск, который нельзя сбросить (т. е. данные, подкрепленные файлом на диске). psusi 10 лет назад 0
и как бы вы оценили это на творении? Разве вы не планируете правильное планирование и не готовитесь к худшему случаю, так как разделение - это, как правило, боль в изменении после того, как оно установлено? mdpc 10 лет назад 0
2
jlliagre

It is a common misconception to think having a swap area negatively affects performance. What does severely affects performance is not having enough RAM. Swap area per se have no negative effect on performance unless you do not care about reliability. It can have a positive impact on performance even while you think you have enough RAM (and no RAM shortage is reported).

There are essentially three cases to consider:

  • 1: There is enough RAM for internal kernel needs, for all your applications to have their working set of pages on RAM and still have "free" RAM for the buffer cache to store most of the file system hot data.

  • 2: same as the above except you have not enough free RAM for the buffer cache to be fully efficient.

  • 3: There is not enough RAM to even store your applications used pages.

In case 1, which should be the norm for a production machine, having a swap area or not doesn't change anything (at least on Linux based OSes and other OSes that over-commit memory).

In case 2, having a swap area might improve the overall performance by allowing the system to page out very infrequently used pages and then allow the buffer cache to better play its role.

In case 3, having a swap area allows application to keep on running at the expense of a performance degradation due to pagination. On the other hand, missing a swap area (or a large enough one) will make applications crash randomly. Additionally, depending on OS settings, the OOM killer might also decide to kill the most memory hungry applications if there is a strong RAM demand without even giving them a chance to save their (your) critical data.

This latter case is one with which you have to make a choice. There are certainly some use cases where having processes being killed is the preferred option like systems where response time is crucial and where losing a transaction / process is no big deal.

However, I tend to believe in most situations, it is better to be able to let a chance for the user/administrator to notice the RAM shortage and act accordingly without risking losing data.

0
Joseph R.

If you don't want to use a swap partition, you can use a swap file: a filesystem image stored on a regular file and used as your swap space.

The following articles explain how to do it in detail:

В чем разница между файлом подкачки и разделом подкачки? и что будет, если у меня их нет? Mihai Bratulescu 10 лет назад 0
скорость доступа .... mdpc 10 лет назад 0
@mdpc Значительна ли разница во времени доступа? Из моего ограниченного понимания, это не должно иметь большого значения с точки зрения скорости дискового ввода-вывода, не так ли? Разве вы не думаете, что файл подкачки хранится в несмежных блоках? Joseph R. 10 лет назад 0
Если используется ДА, это весьма существенно. Если вы используете раздел, это простая адресация, если вы используете файл, вы должны выполнить все накладные расходы файловой системы, чтобы использовать файл подкачки, и вы НЕ МОЖЕТЕ гарантировать, где на диске будут находиться сегменты. mdpc 10 лет назад 2
@mdpc Нагрузка на файловую систему незначительна, начиная с ядра 2.6. Метаданные, кеш и код файловой системы обойдены. К необработанным дисковым блокам просто обращаются напрямую. jlliagre 10 лет назад 2
@jlliagre - файл подкачки по-прежнему фрагментирован, и вы не можете просто выполнить большое непрерывное чтение / запись, как это было бы без файловой системы. mdpc 10 лет назад 0
@mdpc Файл подкачки не должен быть существенно фрагментирован, если он вообще не создан в последнее время. Более того, доступ подкачки редко бывает последовательным, но в основном случайным, из-за того, как работает пейджинг по требованию, поэтому фрагментация не должна быть проблемой. jlliagre 10 лет назад 1
@mdcp Как часто вы выходите за пределы вашей оперативной памяти? Tarik 7 лет назад 0
0
mdpc

It's a bit dangerous but you CAN run without a swap space. But if you finally exceed the amount of memory you have your system will nearly immediately crash without notice.

What swap gives you basically is an extended but far slower for your memory. If you exceed you will start swapping, it will really take the life out of your system....HOWEVER by killing off the errant processes you can still save your system.

Some programs insist on allocating (but not using) swap space, some of these are database programs if I recall. Again, by not having swap space you might limit the programs that may be run.

Finally, look SWAP is CHEAP in the fact that you do not have to backup the area. (I'm hoping that you are one of these fine outstanding sysadmins who backup their systems).

So create it.

My rule of thumb used to be 2*memory-size.....but now adays I am ok in many cases with 1*memory-size but generally use 1.5*(memory-size). You don't have to create this great of an amount, but I would...especially if there is any production type of work you are doing.

Oh yes, and for hibernation, swap is REQUIRED to hold a total image of memory. And thus the size if you are considering h8ibernation should be AT LEAST (1*memory-size)+100MB..the 100 MB is for possible overhead needed in the process.

так что ... для некоторых программ вам нужна область подкачки для их запуска? Я не волнуюсь из-за исчерпания памяти с 8 ГБ (хотя не невозможно) Mihai Bratulescu 10 лет назад 0
Правило 2x размера памяти является старым и устаревшим. Но иметь некоторый обмен не плохая идея. Он не занимает слишком много места на диске, поэтому вы не пропустите использованное пространство; Обычно он не используется, если у вас достаточно оперативной памяти, и позволяет вам выгружать ядро ​​в ваш своп. Hennes 10 лет назад 0
@Hennes - прочитайте мою заметку ... "раньше" mdpc 10 лет назад 0

Похожие вопросы