Насколько большим должен быть раздел подкачки?

10

В течение нескольких лет я читал, что это хорошая идея - создать раздел подкачки с двойным пространством в моей оперативной памяти. это все еще применяется сегодня? или это больше не нужно?

У меня есть сервер с 8 ГБ ОЗУ, и мне нужно создать раздел подкачки, и мне было интересно, если 16 ГБ это слишком много.

CD1
источник

Ответы:

11

В больших системах, 8 ГБ физической памяти, мы обычно выделяем 2 ГБ подкачки. Это загруженные серверы баз данных под управлением Oracle или PostgreSQL. В течение многих лет я никогда не видел, чтобы своп попадал даже под большой нагрузкой. Большая нагрузка - примерно 100-150 пользователей, которые выполняют около 10000 операций чтения SQL и, возможно, 2500 операций записи в минуту.

Мы также корректируем уровень подкачки, чтобы предотвратить обмен, и отключаем ненужные процессы, которые, как мы знаем, нам не нужны. (Пользовательские сборки Linux)

Как говорит Эдди выше, 1x физическая оперативная память - хорошее эмпирическое правило для всего, что меньше 4 ГБ. Я делаю пользовательские сборки Linux для большой компании из списка Fortune-500, и это именно то, чем мы обычно занимаемся, и у нас не было проблем в течение последних 5 лет или около того, с которыми я консультировался.

В более крупных системах: 64-битный Linux с 32 ГБ и 64 ГБ ОЗУ - это наши серверы баз данных Oracle, и мы обычно оставляем 2 ГБ подкачки для вещей, на которые указывает Эдди выше - незанятые процессы будут перемещены на подкачку в зависимости от ваших настроек подкачки.

кило
источник
5

Казалось бы, неподвластный времени вопрос. Хорошие люди из SlashDot обсуждали это некоторое время назад. Проверьте, что они должны были сказать:

  • Дисковое пространство не является проблемой с современными жесткими дисками, 16 ГБ - все еще тривиальная сумма для современных жестких дисков.
  • Тем не менее, значительное пространство подкачки может быть проблемой в случае плохого управления памятью:

Если я посмотрю фильм объемом 4 ГБ в течение 2 часов, многие менеджеры памяти решат, что попытка кэшировать все эти данные может быть полезной. В середине фильма он подумает, что все остальные работающие программы не использовались в течение часа, и их можно смело заменять в пользу кэширования большего объема этого файла объемом 4 ГБ. Конечным результатом является то, что половина ваших программ выгружается после просмотра фильма, что приводит к вялой системе, которая перебирает весь файл подкачки.

  • В конце концов, правильное решение должно исходить из требований к памяти, а не приблизительных формул:

Если у вас [достаточно оперативной памяти для ежедневного запуска программ, которые вы хотите использовать], то нет смысла использовать своп.

KPWINC
источник
3

См. Ответ. Сколько места SWAP в системе с высокой памятью? для некоторого руководства, хотя ваш вопрос носит более общий характер. Мнения по этому вопросу сильно различаются, но, как правило, люди с 1 ГБ ОЗУ или более, похоже, либо работают без обмена, либо с 1x памяти в качестве обмена.

Даже если вы не планируете использовать так много оперативной памяти, что это приведет к обмену, есть смысл иметь как минимум 1x памяти как swap: это позволяет операционной системе заменять некоторые вещи, которые не предполагается использовать немедленно, чтобы он мог вместо этого использовать эту память, например, для дискового или буфера ввода-вывода.

Эдди
источник
3

Если вы ожидаете, что ваша система будет в состоянии гибернации, а затем возобновит успешно :-), вероятно, лучше выделить больше места для раздела подкачки, чем объем физической памяти.

dmityugov
источник
3

Мой VPS-провайдер даже не предоставляет пространство подкачки для серверов, и мой работает без него.

Большинство серверов, которые я вижу ежедневно на работе, также не имеют подкачки.

редактировать

Однако - если вы работаете с JVM, убедитесь, что у вас по крайней мере столько же места подкачки, сколько вы когда-либо установите -Xmxиз-за известной проблемы с JVM.

Короче говоря, когда JVM требуется больше памяти, чем она использует в настоящее время (но все еще не использует ее Xmx), она:

  • переключается на диск
  • выделяет новую память
  • читает себя обратно в RAM

Это означает, что если вы поменяете меньше, чем ваш Xmx, он может потерпеть неудачу.

Цитировать отчет об ошибке

Лучше всего увеличить размер подкачки на машинах, где произошла эта ошибка.

Я стараюсь соблюдать осторожность при работе с JVM и устанавливаю в swap равную физическую память.

кроличий садок
источник
2

Учитывая скорость современных жестких дисков, большие свопы - это всего лишь приглашение к победе. Возможно, твердотельные накопители обратят эту тенденцию вспять, но с максимальной скоростью передачи данных, равной 300 МБ / с, замена на 2-4 ГБ займет некоторое время.

В старые времена (то есть: Linux 1.2, i386, SunOS 4.x), у вас могло быть 5-15 МБ запущенных процессов-демонов и где-то от 4-32 МБ ОЗУ, и поэтому демоны, которые были просто заблокированы, ожидали ввода-вывода O можно заменить без реального снижения производительности ... И они будут лучше, поскольку пользовательские программы могут иметь всего 2-3 МБ доступной оперативной памяти. Обмен имел большой смысл.

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

Исключение для ноутбуков и рабочих станций , которые могут спать. Многие ОС используют область подкачки для сохранения образа приостановки, и в этих случаях объем подкачки должен быть больше физической памяти. В Linux с suspend2 / tuxonice у вас должно быть 2xRAM в размере подкачки для поддержки suspend-to-disk.

Александр Кармель-Вейе
источник
В прежние времена в System V 3.2 и более ранних версиях использовался подкачка размером точно с RAM. Меньше было сломано и больше потрачено впустую, так как это не была настолько сложная система виртуальной памяти, как BSD.
Кмарш
2

В наши дни, если вы используете сервер 32 ГБ или 64 ГБ, 4 ГБ подкачки по умолчанию - безопасная сумма. Все, что больше, чем это, излишне с таким большим количеством доступной физической памяти.

Edward_178118
источник
1

В идеале вы вообще не будете использовать своп, а вещь с 2-кратной оперативной памятью - это то, что осталось от прошлых лет.

Если вы беспокоитесь об этом, я бы сделал что-то вроде:

Max Memory Requirement - Physical Ram = Swap

Я думаю, что 16GB звучит слишком много, лично.

WerkkreW
источник
1

В старые времена, когда вы хотели столько, сколько могли получить, потребление памяти в современных ядрах * nix осталось в прошлом. Старая поговорка была «2 раза твоя память». Между 2 ГБ или количеством места, которое машина имеет в оперативной памяти в этот день, и возраст приблизит вас к тому, что вам нужно.

XTZ
источник
1

Своп также используется для хранения дампов после паники ядра. Если вы заинтересованы в анализе этих дампов и не указали другое место назначения дампов, ваш своп должен быть как минимум таким же большим, как и ваша RAM.

Benoit
источник
0

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

Что касается физической памяти, вы должны поставить свою систему под фактическую «круизную» нагрузку, которую вы ожидаете обрабатывать, и покупать соответственно. Для систем с низкой задержкой вам вообще не следует менять местами внутри круизной нагрузки (это не то же самое, что не выделять или даже не использовать своп). Небольшое количество свопов может произойти из-за малоиспользуемых системных утилит, выполняющих ведение домашнего хозяйства. Но, по большому счету, вы должны иметь как можно меньший обмен.

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

Кристофер
источник