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


10

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

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


Ответы:


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 ГБ. Конечным результатом является то, что половина ваших программ выгружается после просмотра фильма, что приводит к вялой системе, которая перебирает весь файл подкачки.

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

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


3

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

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


3

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


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 ГБ подкачки по умолчанию - безопасная сумма. Все, что больше, чем это, излишне с таким большим количеством доступной физической памяти.


1

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

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

Max Memory Requirement - Physical Ram = Swap

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


1

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


1

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


0

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

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

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

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