swap

swap

Сообщение Olej » 16 апр 2017, 20:20

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

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

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


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

Если у кого есть соображения, наблюдения, опыт использования на этот предмет - поделитесь.
Olej
 
Стаж: 48 лет 9 месяцев 15 дней

swap

Спонсор

Спонсор
 

Re: swap

Сообщение ALEXX » 16 апр 2017, 20:25

Ну как минимум swap нужен для "сна" наверно... Хотя это вроде и не обязательно, ведь содержимое оперативки и в файл просто пишется....
Аватар пользователя
ALEXX
Администратор
Администратор
 
Сообщений: 1154
Фото: 35
Стаж: 3 года 9 месяцев 26 дней
Откуда: Королёв
Благодарил (а): 337 раз.
Поблагодарили: 187 раз.

Re: swap

Сообщение Olej » 16 апр 2017, 20:33

hotmax писал(а):

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

Имеется в виду гибернация?
Будем считать это глупостью (IMHO :) ), тянущейся от Windows, который грузится так долго и занудно (как собачья песня на Луну), что MS просто вынуждены были что-то такой придумать для создания иллюзий рыночной привлекательности. :x
Olej
 
Стаж: 48 лет 9 месяцев 15 дней

Re: swap

Сообщение Olej » 16 апр 2017, 21:42

Olej писал(а):

Если у кого есть соображения, наблюдения, опыт использования на этот предмет - поделитесь.

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

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

© И.В.Сталин
Последний раз редактировалось Olej 16 апр 2017, 21:52, всего редактировалось 1 раз.
Olej
 
Стаж: 48 лет 9 месяцев 15 дней

Re: swap

Сообщение Olej » 16 апр 2017, 21:44

Так ... обсудив дегенератов (остальные по ходу подтянутся :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 раз.
Olej
 
Стаж: 48 лет 9 месяцев 15 дней

Re: swap

Сообщение ALEXX » 16 апр 2017, 21:55

Спасибо за информацию. Действительно как то пролетело про размеры для систем с памятью 32Gb и больше :?
Аватар пользователя
ALEXX
Администратор
Администратор
 
Сообщений: 1154
Фото: 35
Стаж: 3 года 9 месяцев 26 дней
Откуда: Королёв
Благодарил (а): 337 раз.
Поблагодарили: 187 раз.

Re: swap

Сообщение Olej » 16 апр 2017, 22:22

hotmax писал(а):

Спасибо за информацию.

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

Re: swap

Сообщение Olej » 16 апр 2017, 22:52

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
 
Стаж: 48 лет 9 месяцев 15 дней

Re: swap

Сообщение Olej » 16 апр 2017, 23:34

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
 
Стаж: 48 лет 9 месяцев 15 дней

Re: swap

Сообщение Olej » 16 апр 2017, 23:54

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/, но его обычно нет, и нужно создать.
Olej
 
Стаж: 48 лет 9 месяцев 15 дней

След.

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

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron