Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Max Memory Requirement - Physical Ram = Swap

Лично я считаю, что 16 ГБ - это слишком много.

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

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

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

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

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