Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

swap

Olej

swap

Сообщение Olej »

Последние времена:

- RAM Linux обязательно перевалили минимум за 1Gb (ещё не так давно 256Mb было "за глаза"), нормой стало 4Gb, очень часто на типовом десктопе 8Gb или 16Gb ... про сервера здесь не говорим...
- многие переходят на быстрые твёрдотельные SSD диски.

В связи с этим очень говорят и пишут, даже очень авторитетные люди и источники, утверждают (и именно в такой формулировке):
У меня много оперативной памяти и диск SSD и именно поэтому у меня вообще нет swap и нет в нём нужды.


Я думаю (IMHO :!: ), что это принципиально неверно. И поэтому в деталях хотелось бы уточнить (и собрать из разных мест) всё о swap в этой теме:
1. обязателен ли swap?
2. какие есть способы (варианты) организации swap?
3. связано ли как-то использование swap с SSD?
4. какой размер выбирать для swap?
5. как управлять (оптимизировать) работой swap.

Если у кого есть соображения, наблюдения, опыт использования на этот предмет - поделитесь.
Аватара пользователя
ALEXX
Администратор
Администратор
Сообщения: 1327
Зарегистрирован: 21 дек 2014, 14:59
Откуда: Королёв
Контактная информация:

Re: swap

Сообщение ALEXX »

Ну как минимум swap нужен для "сна" наверно... Хотя это вроде и не обязательно, ведь содержимое оперативки и в файл просто пишется....
Olej

Re: swap

Сообщение Olej »

hotmax писал(а):Ну как минимум swap нужен для "сна" наверно... Хотя это вроде и не обязательно, ведь содержимое оперативки и в файл просто пишется....
Имеется в виду гибернация?
Будем считать это глупостью (IMHO :) ), тянущейся от Windows, который грузится так долго и занудно (как собачья песня на Луну), что MS просто вынуждены были что-то такой придумать для создания иллюзий рыночной привлекательности. :x
Olej

Re: swap

Сообщение Olej »

Olej писал(а):Если у кого есть соображения, наблюдения, опыт использования на этот предмет - поделитесь.
Хотел этот же вопрос обсудить на форумах Mint, применительно к последним Mint (особенно в связи с тем, что в последних Ubuntu в качестве swap по умолчанию устанавливается файл, а не раздел)...

Но вот здесь, к примеру - Русский форум пользователей Linux Min - законченные дегенераты, ... они считают такие обсуждения флудом, отвлекающим их от обсуждения раскрасок свистелок и перделок.
Так что мнений из этого источника мы не узнаем. :evil: В принципе, жаль.
Страна должна знать своих героев.
© И.В.Сталин
Последний раз редактировалось Olej 16 апр 2017, 21:52, всего редактировалось 1 раз.
Olej

Re: swap

Сообщение Olej »

Так ... обсудив дегенератов (остальные по ходу подтянутся :D ), вернёмся в тему...
Olej писал(а): 1. обязателен ли swap?
2. какие есть способы (варианты) организации swap?
3. связано ли как-то использование swap с SSD?
4. какой размер выбирать для swap?
1. swap обязателен.
Вообще без swap систем может замечательно работать. И даже весьма долго... Но это до поры, до времени...
И падать система без свап никогда не будет.
Со swap как с понятием произошла дурная история, которая тянется ещё из Windows 3.11 ... с самим термином. Но swap Linux - это не выгрузка областей памяти на диск, а отображение логических страниц RAM на сектора диска (хотя при этом может происходить и выгрузка) - виртуализации.
При активной эксплуатации (в реальных условиях, а не "на поиграться") вся доступная RAM может исчерпаться практически на 100%. И тогда система истерически ищет хоть ненадолго освободить 1-2-3 физических страниц памяти, но без swap это невозможно, система начинает искать страницы, которые нужно просто утилизировать (самые неиспользуемые). и скорость системы может снизиться на 1-2-3 и более порядков! И выгребаться из этого состояния система может 1 минуту, 10 минут и т.д. ... и в это время вы не сможете вмешаться в её работу, её реакция отбита (или почти отбита).
(такую картину можно смоделировать если в современных браузерах открывать, открывать и открывать новые закладки ... и ещё при этом не перезагружать систему 2-3-5 дней ... в ждущем режиме)
Хуже того, что даже ядро Linux в некоторых случаях (достаточно редких) может потребовать загрузки-выгрузки образа страниц RAM. И здесь будут те же проблемы.
А при доступности swap таких эффектов не возникает.

3. SSD или не-SSD здесь вообще не при чём.
Увязывание SSD в контекст разговоров про swap связано, скорее всего, с опасением испортить SSD перезаписью. Но я где-то встречал оценки, что перезапись swap на современных (последних) SSD может его убить ... но случится это, скорее всего, лет через 99 непрерывной эксплуатации.
Но нужно поискать и уточнить такие оценки специально.

4. Когда-то, на заре Linux и Windows ... да и других систем, QNX, например, во всех них рекомендовали размер swap = 2 * RAM - в 2 раза больше оперативной памяти. Но это мотивировалось тем, что они хотели расширить размер небольшой памяти!
А на сегодня задача расширения большой памяти (4-8-16Gb) не стоит. А задача - подстраховаться на короткие периоды от клинча памяти, и освободить несколько страниц (по 4Kb для 32-бит, или 64Kb для 32-бит PAE) RAM. И вовсе не нужно, как советовали в древние времена, иметь swap размером в RAM*2 - более чем достаточно просто небольшого swap, скажем в 1Gb.
Последний раз редактировалось Olej 16 апр 2017, 22:26, всего редактировалось 1 раз.
Аватара пользователя
ALEXX
Администратор
Администратор
Сообщения: 1327
Зарегистрирован: 21 дек 2014, 14:59
Откуда: Королёв
Контактная информация:

Re: swap

Сообщение ALEXX »

Спасибо за информацию. Действительно как то пролетело про размеры для систем с памятью 32Gb и больше :?
Olej

Re: swap

Сообщение Olej »

hotmax писал(а):Спасибо за информацию.
Это ещё не всё :)
Есть ещё вопросы относительно swap, которые а). нужно уточнять, б). нужно поискать свежую, последнюю информацию, в). экспериментально проверить на компьютерах.
Olej

Re: swap

Сообщение Olej »

Olej писал(а): 2. какие есть способы (варианты) организации swap?
1. Самый распространённый и популярный способ - выделение раздела диска. Это общеизвестно.

2. Наверное все знают другом способе - использовании для swap файла в файловой системе. Объявлено, что в Ubuntu последних версий этот способ используется по умолчанию. Я могу предположить, что это сделано именно из-за нарастающего распространения SSD, желания облегчить их от многократной перезаписи: swap-раздел всегда находится в ограниченном числе последовательных фиксированных секторов диска, а файл в файловой системе "разбросан", не располагается в последовательных секторах, и при перезаписи "размазывается" по диску. Это предположение (IMHO :!: ).

3. Не очень известно, что есть такой проект-модуль zRam. В случае использования zRam, swap будет находиться в специальном сжатом разделе оперативной памяти. Как утверждают, этот вариант прекрасно подойдет для нетбуков, имеющих 2Гб ОЗУ.
Подробнее см. здесь своп в оперативную память - модуль zRam.
Этот проект включен в стандартные репозитории некоторых дистрибутивов:
Это Mint 17.3:

Код: Выделить всё

olej@atom ~ $ apt search zram-*
p   zram-config                     - Upstart job to enable zram support   
Это Mint 18.1:

Код: Выделить всё

olej@nvidia ~ $ apt search zram-*
p   zram-config                     - Upstart job to enable zram support        
Но в RPM дистрибутивах (Fedora 23) я его не вижу.

Текущий используемый swap смотрим:

Код: Выделить всё

[olej@dell .ssh]$ swapon -s
Имя файла				Тип		Размер	Исп-но	Приоритет
/dev/dm-0                              	partition	6288892	480	-1
4. Менее известно, что для swap могут одновременно использоваться несколько источников, которые могут быть разбросаны по разным ... "остаткам" на дисковых устройствах. Подключаются все они swapon, а отключаются, соответственно, swapoff (об этом позже).
Последний раз редактировалось Olej 17 апр 2017, 00:56, всего редактировалось 1 раз.
Olej

Re: swap

Сообщение Olej »

Olej писал(а):5. как управлять (оптимизировать) работой swap.
Активность текущего использования swap смотрим легко:

Код: Выделить всё

[olej@dell ~]$ free
              total        used        free      shared  buff/cache   available
Mem:        8160932     3855356      229272      198868     4076304     3708128
Swap:       6288892         484     6288408
В ядре Linux есть такой параметр swappiness, который устанавливает значение в % (значение от 0 до 100) сколько должно в % остаться свободной памяти, когда начинать активно использовать виртуализацию страниц в swap.
Этот параметр отображается, и по чтению и по записи:

Код: Выделить всё

 
[olej@dell ~]$ cat /proc/sys/vm/swappiness
60
Это умалчиваемое обычное значение.
Если его уменьшить, это означает, что ядро начнёт агрессивно использовать swap когда останется 15% доступной RAM:

Код: Выделить всё

[root@dell ~]# echo 15 > /proc/sys/vm/swappiness
[olej@dell ~]$ cat /proc/sys/vm/swappiness
15

Но это можно проделать только с терминала, зарегистрированного как root, простое перенаправление с sudo здесь не проканывает:

Код: Выделить всё

[olej@dell ~]$ sudo echo 10 > /proc/sys/vm/swappiness
bash: /proc/sys/vm/swappiness: Отказано в доступе
Но если вы этого (регистрироваться как root) не хотите ... или затрудняетесь (в Ubuntu это можно, но с хлопотами), то этого можно добиться так:

Код: Выделить всё

[olej@dell ~]$ echo 10 | sudo tee /proc/sys/vm/swappiness 
[sudo] пароль для olej: 
10
[olej@dell ~]$ cat /proc/sys/vm/swappiness
10
Olej писал(а): 3. связано ли как-то использование swap с SSD?
В принципе, для SSD, пожалуй, этот параметр можно установить, например, в swappiness = 5, чтобы swap включался как можно позже и только в экстренных случаях.

При достаточно большой RAM и малых значениях swappiness реакция системы субъективно будет быстрее.
Olej

Re: swap

Сообщение Olej »

Olej писал(а): В ядре Linux есть такой параметр swappiness, который устанавливает значение в % (значение от 0 до 100) сколько должно в % остаться свободной памяти, когда начинать активно использовать виртуализацию страниц в swap.
Этот параметр отображается, и по чтению и по записи:
Но если изменить значение swappiness как показано выше, то изменения будут действовать только до следующей перезагрузки, после чего опять восстановится умалчиваемое значение.
Чтобы желаемое вами значение для swappiness устанавливалось сразу после загрузки, нужно в конфигурационный файл /etc/sysctl.conf строку вида:

Код: Выделить всё

vm.swappiness=15


P.S. Если не хотите портить /etc/sysctl.conf, можно то же записать в любой файл (а ещё лучше добавить свой файл) в:

Код: Выделить всё

[olej@dell Privat.bank]$ ls /usr/lib/sysctl.d
00-system.conf  10-default-yama-scope.conf  50-coredump.conf  50-default.conf  60-libvirtd.conf
Или даже в каталог /run/sysctl.d/, но его обычно нет, и нужно создать.
Ответить

Вернуться в «Ядро, модули и конфигурация»