Как выбрать размер свопа
Я хотел просто подтвердить, каким должен быть размер раздела подкачки. Многие места говорят, что размер подкачки должен быть в два раза больше оперативной памяти. Кто-то также сказал мне, что он не должен превышать 8 ГБ. Если размер ОЗУ в два раза превышает 8 ГБ, насколько большим должен быть раздел подкачки?
4 ответа
Приведенный ниже текст был получен со страницы nixCraft Linux: стоит ли использовать в качестве пространства подкачки дважды объем памяти?, (Пожалуйста, перейдите по ссылке и прочитайте источник для получения дополнительной информации)
Обратите внимание, что на странице nixCraft цитируется текст, предположительно полученный из FAQ по OpenBSD, но в текущем документе нет соответствующего текста; однако это может быть то, что было в 2006 году (поэтому правило 2 x RAM уже устарело более 10 лет назад):
Правило бессмысленности: вдвое больше оперативной памяти вашей основной системы для серверов
Согласно OpenBSD FAQ:
Многие люди следуют старому практическому правилу, согласно которому раздел подкачки должен быть в два раза больше оперативной памяти вашей основной системы. Это правило бессмыслица. В современной системе это МНОГО своп, большинство людей предпочитают, чтобы их системы никогда не менялись. Вы не хотите, чтобы ваша система когда-либо исчерпывала подкачку RAM+, но вы обычно предпочитаете иметь достаточно оперативной памяти в системе, чтобы ее не нужно было переставлять.
Больше со страницы nixCraft:
Красная шляпа рекомендует установить следующее для RHEL 5:
Реальность такова, что объем пространства подкачки, в котором нуждается система, на самом деле не зависит от объема оперативной памяти, а скорее от рабочей нагрузки памяти, которая работает в этой системе. Система Red Hat Enterprise Linux 5 будет нормально работать без пространства подкачки, если сумма анонимной памяти [отображение памяти без файла или устройства, его поддерживающего: память, полученная из стека и кучи ОС] и разделяемая память системы V менее чем около 3/4 объема оперативной памяти. В этом случае система просто блокирует анонимную и системную разделяемую память V в ОЗУ и использует оставшуюся ОЗУ для кэширования данных файловой системы, поэтому, когда память исчерпана, ядро освобождает только память кэша страниц.
Учитывая, что: 1. Во время установки при настройке пространства подкачки нет простого способа предопределить объем памяти, который потребуется рабочей нагрузке, и 2. Чем больше ОЗУ в системе, тем меньше места подкачки, как правило, лучше, чем пространство подкачки [может следуйте этой рекомендации для CentOS Linux 7.x и RHEL 7]:
Итак, страница nixCraft завершает:
Заключение
Если ядро Linux будет использовать более 2 ГБ места подкачки за раз, все пользователи почувствуют тепло. Либо вы получаете больше оперативной памяти (рекомендуется) и переходите на более быстрое хранилище, чтобы улучшить дисковый ввод-вывод. Здесь нет правил, каждая настройка и конфигурация уникальны. Отрегулируйте значения в соответствии с вашими требованиями. Выберите сумму обмена, которая подходит именно вам.
Кроме того, эта статья в Red Hat: действительно ли нам нужен своп в современных системах? (2017) говорит:
Наша рекомендация по размеру для большинства современных систем составляет "часть физической памяти", например, 20%. При этом мучительно медленная фаза работы в нашем примере не будет длиться так долго, и OOM включится раньше.
Конечно, есть сценарии, когда желательно другое поведение. Когда известно о поведении, такие конфигурации подкачки в порядке, а также запуск системы без какой-либо подкачки. Такая система поддерживается и нами, но клиент должен знать поведение в вышеуказанных ситуациях.
Своп не то, что вы хотите использовать. Это то, что вы хотите иметь в качестве последнего средства, потому что своп не быстрый, он невероятно медленный. И если вы используете как 1 ГБ подкачки, то ваша система будет очень медленно реагировать.
Весь смысл SWAP-памяти состоит в том, чтобы при сбое доступной оперативной памяти не происходил сбой системы. Это не то, что вы можете использовать в качестве дополнительной памяти или что-то, что вы действительно хотите использовать, если вам действительно не нужно.
Что касается размера, я бы сказал, 5 ГБ, но если вы действительно делаете тяжелые вещи, которые используют много оперативной памяти, то вы можете увеличить до 8 ГБ. Но на самом деле, если вы начнете использовать более 1 ГБ подкачки, начните убивать процесс. так что у вас нет аварии.
Единственное жесткое правило для пространства подкачки, о котором я знаю, это 1x ОЗУ в Hibernate. Команда System Monitor или CLI free сообщит вам, сколько пространства подкачки вы используете с вашей конкретной конфигурацией оборудования и схемами использования. С 2 ГБ ОЗУ моя система редко использует пространство подкачки вообще и никогда не превышает 0,4 ГБ, что я видел.
Обычно вы не хотите (и не должны) использовать своп так часто, так что, да, более 8 Гб - это много. У меня 8 ГБ оперативной памяти на рабочем столе и 8 ГБ подкачки, я не думаю, что когда-либо использовал более 1 ГБ подкачки. Правила 2х имеют смысл для небольшого объема ОЗУ, но он немного сходит с ума с ~6+ ГБ ОЗУ.
Конечно, это зависит от того, что вы делаете со своим компьютером...