Сколько пространства подкачки в системе 2-4 ГБ?


53

Как мне решить, какой размер сделать подкачку на новой машине с Linux (Debian) с 2-4 ГБ ОЗУ? Мне действительно нужно пространство подкачки?


3
5-4 ГБ памяти больше не занимают больше памяти.
фифи финансы

@KasperSouren Нет, это не так. Была приличная сумма в то время.
С. Росс

Ответы:


54

Есть много способов выяснить, сколько свопа используется в машине. В общих предложениях используются формулы на основе ОЗУ, такие как 2 x ОЗУ, 1,5 x ОЗУ, 1 x ОЗУ, 0,75 x ОЗУ и. 5 x ОЗУ. Во многих случаях формулы меняются в зависимости от объема ОЗУ (таким образом, для блока с 1 ГБ ОЗУ может использоваться 2 х ОЗУ (2 ГБ), в то время как для блока с 16 ГБ ОЗУ может использоваться .5 х ОЗУ (8 ГБ).

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

Что касается того, следует ли включать своп, да, вы должны. Вы всегда должны включать пространство подкачки, если вы действительно не знаете, что делаете, и у вас действительно есть для этого веские причины.

Видите, как работает ядро ​​Linux, подкачка используется не только тогда, когда вы исчерпали всю физическую память. Ядро Linux будет принимать приложения, которые не активны (спят), и через некоторое время перемещает приложение для замены из реальной памяти. В результате, когда вам понадобится это приложение, будет кратковременная задержка (обычно всего одна или две секунды), когда память приложения будет считана обратно из раздела подкачки в ОЗУ. И это обычно хорошо.

Это позволяет переводить неактивные приложения в «спящий» режим, предоставляя активным приложениям доступ к дополнительной оперативной памяти. Кроме того, Linux будет использовать любую доступную (нераспределенную) оперативную память на компьютере в качестве дискового кэша, что сделает большую (медленную) активность диска более быстрой и более отзывчивой. Замена неактивных процессов дает вам больше дискового кэша и делает вашу машину в целом быстрее.

Наконец, давайте посмотрим правде в глаза, дисковое пространство дешево. Действительно дешево. На самом деле нет веской причины не использовать (относительно) небольшой кусок пространства для обмена. Если бы я работал с 2–4 ГБ ОЗУ в машине, я бы, вероятно, настроил пространство подкачки, по крайней мере, равное ОЗУ. Если бы это было менее 2 ГБ оперативной памяти, то я бы все равно пошел с не менее 2 ГБ подкачки.

ОБНОВЛЕНИЕ: В качестве отличного комментария упоминается (и я забыл включить), если вы используете ноутбук или настольный компьютер, который вы, возможно, захотите перевести в режим гибернации (Suspend to Disk), то вам всегда нужно как минимум столько же поменяй местами как у тебя память. Пространство подкачки будет использоваться для хранения содержимого оперативной памяти на компьютере, пока он «спит».


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

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

как я узнал прошлым летом, вам нужно иметь достаточно места подкачки, если вы используете Java
Warren

Если у пользователя объем оперативной памяти, намного превышающий объем, который он будет фактически использовать (16 ГБ / 32 ГБ) на настольном компьютере с 100% работоспособностью (без гибернации), тогда вы по-прежнему предлагаете запросить процессы, которые будут помещены в SWAP? Мне кажется, было бы полезно оставить все в оперативной памяти, если вы не приблизились к ее емкости.
earthmeLon

1
@earthmeLon - я бы предложил немного поменяться местами. Диски большие и дешевые в наши дни, поэтому потеря нескольких ГБ дискового пространства для замены незначительна. Наличие некоторого пространства подкачки дает вам страховой полис на случай, если что-то израсходует больше оперативной памяти, чем вы ожидаете.
Кристофер Кашелл

17

Red Hat рекомендует следующую формулу для серверов с большим количеством оперативной памяти:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

Если в вашей системе имеется 1 ГБ оперативной памяти, объем подкачки составит 2 ГБ, а для 16 ГБ - 18 ГБ.


3
Соответствующая ссылка из руководства RHEL6 хранения: docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/...
Ophidian

Сервер был бы довольно тупиковым, если бы он последовательно использовал 1 Гб подкачки, потому что его оперативная память была бы переполнена.
user2284570 22.11.15

12

Поздний ответ, и я думаю, что это было в значительной степени отражено в выбранном ответе, но есть некоторая хорошая и легко усваиваемая информация в ответе, предоставленном @ssapkota здесь (скопировано / вставлено ниже).

Вот очень хорошая рекомендация от RedHat: Рекомендуемое пространство подкачки

Выдержка из той же ссылки:

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

Текущая таблица (по состоянию на декабрь 2012 года):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

Оригинальный стол:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 

8

Это зависит от того, что вы делаете с этим. При соответствующей рабочей нагрузке вам на самом деле не требуется пространство подкачки, независимо от того, есть ли у вас 16 МБ или 16384 МБ ОЗУ; Действительно, большинство встроенных устройств Linux работают без каких-либо (к чему бы они поменялись?)

Учитывая стоимость оперативной памяти, вы, вероятно, не собираетесь использовать своп для активных вычислений. Итак, что осталось?

  1. На настольных компьютерах пространство подкачки используется для приостановки на диск. Это пространство подкачки должно составлять около 1 × ОЗУ, в зависимости от того, насколько хорошо сжато содержимое памяти.
  2. Разрешение удалять неактивные задачи из оперативной памяти, чтобы освободить место для дискового кэша
  3. То же самое, но чтобы активные процессы могли использовать его вместо кучи / стека

(2) и (3) сильно зависят от рабочей нагрузки. На моих рабочих столах я могу легко использовать 4 ГБ + (2), оставляя vims, xterms и т. Д. Запущенными на других рабочих столах.

На большинстве серверов, которые я запускаю, почти ничего не выгружается, и 1–2 ГБ подкачки (независимо от объема ОЗУ) кажется нормальным.


Пространство подкачки также используется, если вы запускаете что-либо , использующее JVM: не читайте и не забывайте выделять пространство подкачки, если вы используете Java!
Уоррен

@warren: У меня есть экземпляры Tomcat, каждый из которых превышает 3GiB, но при этом не использует подкачку (и один использует огромные страницы, и поэтому не может быть заменен). Не уверен, о чем ты говоришь.
Дероберт

в JVM есть неполная ошибка, связанная с минимальными и максимальными настройками памяти, с которыми я столкнулся прошлым летом ( antipaucity.com/?p=984 ). TL; DR - каждый раз, когда JVM запрашивает больше памяти у ОС, она записывает себя в раздел подкачки, получает новый фрагмент памяти, а затем считывает себя обратно в ОЗУ, так что ее память является непрерывной
гарантия

@warren: Хорошо, я использую OpenJDK на 64-битной версии, с Xmx и Xms одинаковыми. Но я не уверен, как java заставит себя поменяться, единственное закрытие системного вызова будет madvise, но это не сработает ... эта ошибка говорит об исчерпании памяти во время сборки мусора. Конечно, добавление свопа предотвращает это, но также и добавление оперативной памяти. Может быть, это связано с 32-битной с PAE?
Дероберт

это происходит с 64-битной JVM тоже: если у вас есть Xmsи Xmxне установлены в одних и те же значения, он может укусить вас плохо: вызвал серьезные проблемы для нас в течение двух + недель пока мы , наконец , отслеживали его вниз
Warren

4

Ну, это зависит от того, какие сервисы и приложения вы планируете запускать. Вы можете следить за использованием памяти с помощью free -m и соответствующим образом корректировать раздел подкачки.

Вот интересная дискуссия на эту тему. Лично (и после прочтения этого обсуждения) я бы все равно оставил около 1 ГБ для обмена.


2

Я не могу напрямую общаться с Debian, но я знаю, что когда вы получаете более 2 ГБ ОЗУ, исходное уравнение 2xRAM изменяется, обычно до 1xRAM. Я думаю, что как только вы достигнете 16 ГБ ОЗУ, предложение снова снизится до .75xRAM.

Конечно, я нашел это верным для Solaris, и на самом деле это показатель, используемый для установок Oracle, поэтому YMMV зависит от приложений, которые вы собираетесь там запускать.


2

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

В наши дни место на жестком диске дешевое, поэтому я не стесняюсь отдавать пространство подкачки.


2

Пространство подкачки может служить «заполнением», если в противном случае вам сразу же не хватило бы памяти.

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


2
Это обоюдоострый меч: на моем домашнем ПК я удалил файл подкачки, когда использовал Firefox 2.x, потому что он медленно поглощал всю память, а когда машина переставляла подкачку, он становился совершенно непригодным для использования; без свопа процесс firefox был просто закрыт ядром :)
wazoox

1

На протяжении многих лет я следовал правилу, согласно которому для машин Windows у вас столько же свопов, сколько у вас есть ОЗУ ... На Novell мы настроили бы своп выше, если бы у нас было больше принтеров ... Для Linux правило и практика для меня составляли 1 ГБ поменяйте местами на каждые 2 ГБ ОЗУ. И вы помещаете его в переднюю часть диска, чтобы он был доступен быстрее.

  • Если это шлюз почты / спама, я использую двойной своп в ОЗУ
  • Если это * сервер, я вообще не использую своп
  • если это сервер LAMP, действует правило 1/2.

  • Пробег будет варьироваться в зависимости от приложения и использования графического интерфейса.


На самом деле, я думаю, что обмен в середине диска будет доступен быстрее всего.
Эдди

0

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


0

Для чего вы используете систему? Лично я не использую своп. Если что-то использует токен 512 МБ или что-то другое, то все может быть помещено на диск, если оно постоянно, но неактивно в течение длительного времени.


0

Я просто использую небольшую замену токена (обычно 256 МБ, но я даже сделал 64 МБ), потому что настройка системы с нулевым обменом требует специальной настройки.

Дисковое пространство дешевое, но затооооооооо. Как только система начинает обмениваться, производительность равна нулю. И оперативная память уже не такая дорогая.

Поверьте мне, купите немного более медленный процессор и купите больше оперативной памяти. 2,8 ГГц вместо 3,0 ГГц сэкономят вам достаточно денег, чтобы купить еще 2 ГБ ОЗУ, по крайней мере.

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