Обычный режим
Правила форума
Ответить

Swap

26 янв 2018, 20:45

Сегодня в новостях случайно нашел такую такую статью. Очень спорный вопрос об объеме swap (раздела или файла подкачки). В нем до сих пор не пришли к согласию. Провожу свой вольный перевод:

Каким должен быть объем swap? Должен ли объем swap быть равен двойному объему ОЗУ или объем должен быть равен половине объема ОЗУ? Нужен ли вообще swap, если у моей системы есть какой-то объем ГБ ОЗУ?
Это наиболее часто возникающий вопрос при выборе размера раздела (файла) подкачки при установке Linux.
Ничего нового. Вокруг объема swap всегда было много путаницы.
В течение долгого времени рекомендуемый объем swap был вдвое меньше объема RAM, но это золотое правило больше не применимо к современным компьютерам. У нас есть системы с объемом оперативной памяти в 128 ГБ, у многих старых компьютеров даже нет такой емкости жесткого диска.
Так какой объем swap вы выделили бы системе с 32 ГБ ОЗУ? с 64GB? Это была бы смехотворная трата жесткого диска, не так ли?.
Прежде чем мы увидим, какой нужно иметь объем swap, давайте сначала узнаем что-то о swap-памяти. Это поможет вам понять, почему используется swap.
При запуске приложения ваша система использует Random Access Memory - память произвольного доступа (aka RAM). Когда работает несколько приложений, то ваша система управляется доступной оперативной памятью.
Но, если запущено достаточно много приложений или если приложениям требуется много оперативной памяти, то ваша система попадает в беду. Если для приложения требуется больший объем памяти, а вся оперативная память уже используется, то приложение аварийно завершится.
Когда ОЗУ исчерпано, то swap для вашей системы работает как буфер. Что происходит когда исчерпано ОЗУ? Ваша система Linux использует часть жесткого диска в виде буфера и исползует его для текущего приложения.
Звучит круто! Т.е. если вы выделите под swap 50% от объема ОЗУ, то ваша система сможет одновременно запускать сотни или, возможно, тысячи приложений? ВОТ И НЕТ!
Видите ли, здесь важна скорость. Доступ к данным в ОЗУ составляет порядка наносекунд. Доступ к данным на SSD составляет микросекунды, а доступ к данным на обычном жестком диске - миллисекунды. Это означает, что доступ к оперативной памяти в 1000 раз быстрее, чем к SSD и в 100 000 раз быстрее, чем к обычному жесткому диску.
Если приложение избыточно использует swap - его производительность ухудшится, поскольку он не сможет получать доступ к данным с той же скоростью, что и к данным в ОЗУ. Поэтому вместо того, чтобы задача выполнялась за 1 секунду - она будет выполняться несколько минут.
Другими словами, небольшой swap полезен. Большой будет бесполезен.
Так все таки, зачем же нужен swap?
Существует несколько причин по которым нужен swap.
Если ваша система имеет объем оперативной памяти менее 1 ГБ, то нужно использовать swap, поскольку большинство приложений быстро исчерпывают ОЗУ.
Если ваша система использует ресурсоёмкие приложения, такие как видеоредакторы, было бы неплохо использовать некоторое пространство подкачки, так как ОЗУ в этом случае может быть быстро исчерпана.
Если вы используете спящий (hibernation) режим, то вы должны использовать swap, потому что содержимое ОЗУ будет записываться в раздел swap. Это также означает, что объем swap должен быть, по крайней мере, равен объему ОЗУ.
Нужен swap, если можно ограничиться оперативной памятью?
Действительно хороший вопрос. Если у вас 32 ГБ или 64 ГБ ОЗУ,то скорее всего ваша система никогда не будет использовать всю оперативную память и, следовательно, никогда не будет использовать раздел swap.
Рискнете? Предполагается, что если ваша система имея 32 ГБ оперативной памяти также имеет жесткий диск объемом не менее 100 ГБ. При этом выделение пары GB для swap не повредит. Это обеспечит дополнительную стабильность, если неисправная программа начнет злоупотреблять ОЗУ.
Можно ли использовать Linux без swap?
Да, особенно если ваша система имеет достаточно большой объем оперативной памяти. Но, как объяснялось выше, немного swap всегда приветствуется.
Каким должен быть объем swap?
Сначала возникает вопрос: Каким должно быть идеальное пространство swap при установке Linux?
Проблема в том, что определенного ответа на этот вопрос нет. Есть только рекомендации.
У разных людей разные мнения относительно идеального объема swap. Даже основные дистрибутивы Linux не имеют одинакового мнения по объему swap.
Если вы принять предложения Red Hat, то размер swap рекомендуется для современных систем в 20% оперативной памяти (то есть 4 ГБ или выше ОЗУ).
CentOS даеть различные рекомендации по размеру раздела swap. Он предлагает объем swap:
Два объема ОЗУ, если ОЗУ меньше 2 ГБ
Размер ОЗУ + 2 ГБ, если размер ОЗУ составляет более 2 ГБ, т.е. 5 ГБ swap для 3 ГБ ОЗУ
Ubuntu имеет совершенно другой взгляд на объем swap, поскольку здесь учитывается спящий (hibernation) режим. Если вам нужна hibernation,то Ubuntu требует следующий объем swap от размера ОЗУ.
Рекомендуется:
Если ОЗУ меньше 1 ГБ, то объем swap должен быть не менее размера ОЗУ и не более, чем удвоенного объема ОЗУ
Если ОЗУ более 1 ГБ, объем swap должен быть не менее квадратного корня из объема ОЗУ и не более удвоенного объема ОЗУ
Если используется спящий режим, то размер swap должен быть равен размеру ОЗУ + квадратный корень от объема ОЗУ
Смущенны? Понятно, это сбивает с толку. Поэтому я создал таблицу, которая дает рекомендуемый Ubuntu размер swap на основе обема ОЗУ и необходимости hibernation.
RAM Swap (без Hibernation) Swap (с Hibernation)
256MB 256MB 512MB
512MB 512MB 1GB
1GB 1GB 2GB
2GB 1GB 3GB
3GB 2GB 5GB
4GB 2GB 6GB
6GB 2GB 8GB
8GB 3GB 11GB
12GB 3GB 15GB
16GB 4GB 20GB
24GB 5GB 29GB
32GB 6GB 38GB
64GB 8GB 72GB
128GB 11GB 139GB
Какой вы используете объем swap ?
Ответ не прост. Как я говорил ранее, в течение долгого времени swap рекомендовалось иметь вдвое больший объем, чем оперативная память. Мой Dell XPS 13 Ubuntu имеет объем swap 16 ГБ при 8 ГБ оперативной памяти. Даже Dell решила согласиться с золотым правилом swap=2xRAM.
Ну и какой объем swap вы предпочтете для своей ОС Linux?

Re: Swap

26 янв 2018, 23:28

у меня всегда в 2 раза больше оперативки..

Re: Swap

27 янв 2018, 12:31

Вангую что разработчики каждого отдельно взятого дистрибутива имеют свои соображения не просто так а с учётом особенностей построения сервисов и приложений. только совершенно не понятно зачем все эти таблицы с приблизительными и необъяснёными расчётами?
Вот ставите вы первый раз персонально дистрибутив на отдельно взятую конфигурацию железа, дайте инсталлятору сделать разметку автоматом. Не обязательно сохранять изменения на диск но оптимальный размер подкачки вы увидите.
Не все пользуются гибернацией, некоторые считают что своп не нужен вообще типа и так оперативки хватает. Да хватает, больше того с большим запасом. Я вот не играю в игрушки, пик нагрузок на всё каогда что нибудь компилирую. 8 гигов оперативки, смысла ставить больше для меня нет так как больше 3,5 гигов ни разу не использовал. Своп вообще не задействуется, за то когда что то ищешь в интернете могу открыть и 10 и 15 вкладок в браузере, потом мне всё надоело, оставляю вкладки и закрываю браузер, выключаю. На следующий подход всё сразу открывается. Есть и другие приложения которые держат недавнюю историю в своп.

Re: Swap

27 янв 2018, 13:07

ОЗУ 4 Гб, SWAP 1 ГБ, вполне комфортно. Система Ubuntu MATE 16.04.3

Re: Swap

27 янв 2018, 13:22

ОЗУ 8Гб, сейчас на домашнем десктопе swap 1Гб. То же достаточно комфортно, гибернация не используется... Однако, при работе над переводом ABS Guide (cлава богу недавно закончил), вроде и файл-то сам по себе небольшой, при производстве гиперссылок в документе использовался swap (около 1000 страниц и бесконечное множество гиперссылок), причем чем дальше, тем время производства гиперссылок доходило до 5 минут на ссылку. Без подкачки доходило до 10 минут на ссылку!!! У детей на ноутах - swap = 2xОЗУ - никаких проблем с гибернацией и суспендом. Так что объем подкачки надо выбирать из стоящих перед вами задач, ИМХО. Но вот что в статье интересно: почему корень квадратный от ОЗУ + ОЗУ?

Re: Swap

31 янв 2018, 09:38

Oleg65 писал(а):Но вот что в статье интересно: почему корень квадратный от ОЗУ + ОЗУ?

Не совсем уверен, но какая то часть тела подсказывает , при интесивной работе часть свопа уже занята, и при уходе в сон вряд ли система заморачивается , чтобы подчистить себе место, а просто записывает туда рам. И получается , что двойного размера точно хватит при любом раскладе. (ИМХО)

Re: Swap

31 янв 2018, 16:16

symon2014 писал(а):
Oleg65 писал(а):Но вот что в статье интересно: почему корень квадратный от ОЗУ + ОЗУ?

Не совсем уверен, но какая то часть тела подсказывает , при интесивной работе часть свопа уже занята, и при уходе в сон вряд ли система заморачивается , чтобы подчистить себе место, а просто записывает туда рам. И получается , что двойного размера точно хватит при любом раскладе. (ИМХО)

Ну как бэ так.... ну.... своп бывает нужен...

Re: Swap

31 янв 2018, 18:05

Но лучше всё таки памяти побольше, заметил , если в своп хоть 10 метров залетит, машина на ручник встаёт, на слабых заметно бывает.

Re: Swap

04 фев 2018, 13:47

Это только моё мнение.
Для спящего режима хватит объём оперативной памяти плюс от 10% до 50%.
Больше чем установленный физический размер оперативной памяти не будет.
У меня ОП 8192MB+20%(1648,4MB)=9830,4MB округлил до 10GB
Никаких проблем с оперативной памятью нету.
Ответить