swap

Olej

New member
Сообщения
684
#1
Astra Linux CE по умолчанию создаёт так:
Код:
olej@astra:~$ lsb_release -a
No LSB modules are available.
Distributor ID: AstraLinuxCE
Description:    Astra Linux CE 2.12.14 (Orel)
Release:        2.12.14
Codename:       orel
Код:
olej@astra:~$ free
              total        used        free      shared  buff/cache   available
Mem:        4039172      758568     2386804      113064      893800     2939552
Swap:       4191228           0     4191228
Код:
olej@astra:~$ /sbin/swapon -s
Имя файла                               Тип             Размер  Исп-но  Приоритет
/dev/sda5                               partition       4191228 0       -2
Т.е. при 4Gb RAM создаёт swap раздел 4Gb.
 

Olej

New member
Сообщения
684
#2
Т.е. при 4Gb RAM создаёт swap раздел 4Gb.
И по использованию swap есть несколько любопытных вопросов ... особенно в связи с разными и большими объёмами RAM современных компьютеров (1, 2, 4, 8, 16, ... 64 Gb):
1. Нужен ли swap вообще? (я то этот ответ знаю ;) ... но послушать было бы любознательно)

2. Какой размер? Кода-то давно ("когда Земля была ещё тёпленькая" :)), когда RAM в 256Mb или 512Mb было "жируете" ... общее правило неукоснительно звучало так: "Делаем размер swap - удвоенный размер RAM".
Сейчас это явно должно быть не так!
Об этом пишут (кто во что горазд, по-разному):
В защиту swap'а [в Linux]: распространенные заблуждения
Оптимальный размер swap в Linux для современных компьютеров
Например, специалисты Red Hat рекомендуют использовать 20% от RAM, но при условии, что компьютер является современным. Под современным инженеры RH понимают такие, в которых установлено 4 Гб и более.
Разработчики CentOS рекомендуют другую формулу: удваивайте объем ОЗУ, если на компьютере 2 Гб и менее. Если более, используйте формулу: объем ОЗУ + еще 2 Гб. Например, в системе 4 Гб оперативной памяти, тогда создавайте своп на 6.
Программисты Canonical советуют диапазон: от квадратного корня из объема RAM до удвоенного значения. Это при условии, что памяти больше, чем 1 Гб. В противном случае удваивать память.
(я специально показал ссылки только на свежие публикации)

3. Есть такой параметр swappiness - значение в % (значение от 0 до 100) сколько должно в % остаться свободной памяти, когда начинать активно использовать виртуализацию страниц в swap. По умолчанию это 60%.
Код:
olej@astra:~$ cat /proc/sys/vm/swappiness
60
Вот такой вопрос: какие значения swappiness будут оптимальны ... для рабочей станции, скажем ... при очень разных значениях RAM (1, 2, 4, 8, 16,...64, ... Gb)?
Это означает, что по умолчанию в системе с 16Gb RAM (а сейчас это не редкость, а вскоре станет обыденностью) swap начинает использоваться когда в системе остаётся свободных ещё 9.6Gb (почти 10Gb).
Так тогда зачем мы тратились на последние 8Gb?

Это можно легко поменять:
Код:
root@astra:~# echo 15 > /proc/sys/vm/swappiness
(но только с терминала root, не с sudo)
Код:
olej@astra:~$ cat /proc/sys/vm/swappiness
15

4. Какие есть ещё другие способы (кроме раздела диска) для организации swap? (swap-файл, Zram и Zswap, Swapspace, ...)

Интересовали бы мнения только на основе практического опыта использования Linux ... , а не из досужих домыслов.
 
Последнее редактирование:

CrashBldash

New member
Сообщения
230
#3
При нормальном количестве оперативы (когда системе и программам хватает и на кеш остается) я обычно ставлю своп 1 гиг. Вполне хватает. Единственный минус что дамп не влезет в случае краша системы.. да и пофигу. Это редко надо.

Своп отдельным разделом. Желательно первым или вторым. А потом уже корневой и т.д. Чтоб своп был максимольно ближе к началу диска.

Это раб станция. На серваках все индивидуально.
 

2zer0

New member
Сообщения
48
#4
При нормальном количестве оперативы (когда системе и программам хватает и на кеш остается) я обычно ставлю своп 1 гиг. Вполне хватает......Чтоб своп был максимольно ближе к началу диска.
1гиг для офиса вполне. А к началу диска - актуально не для ssd
 

Olej

New member
Сообщения
684
#5
Это не решение для а). разных размеров RAM и б). разных областей применения (а если я вообще не собираюсь пользоваться офисом? ;)).
Ещё раз повторю цитируемую публикацию, и то на что они ссылаются:
Например, специалисты Red Hat рекомендуют использовать 20% от RAM, но при условии, что компьютер является современным. Под современным инженеры RH понимают такие, в которых установлено 4 Гб и более.
Разработчики CentOS рекомендуют другую формулу: удваивайте объем ОЗУ, если на компьютере 2 Гб и менее. Если более, используйте формулу: объем ОЗУ + еще 2 Гб. Например, в системе 4 Гб оперативной памяти, тогда создавайте своп на 6.
Программисты Canonical советуют диапазон: от квадратного корня из объема RAM до удвоенного значения. Это при условии, что памяти больше, чем 1 Гб. В противном случае удваивать память.
Прикиньте по этим рекомендациям цифры для размера RAM 0.5, 1, 2, 4, 8,16, ... (Gb)
Я бы добавил ещё так ... по крайней мере для RAM >= 2 :
SWAP = log2( RAM )
 

CrashBldash

New member
Сообщения
230
#6
У вас жизненный опыт есть? Обратитель к нему. Мне мой говорит что если оперативы хватает то одного гига за глаза. Потому что свопить комп у вас будет редко и мало
 

Olej

New member
Сообщения
684
#7
А к началу диска - актуально не для ssd
По поводу SSD - с этим всё понятно ... хотя с SSD, как-раз, хорошо бы, наоборот:
- не использовать swap в раздел или в файл, а использовать zram или zswap (свопирование памяти опять же в память;) - см. своп в оперативную память - модуль zRam);
- установить swappiness как можно меньше, чтобы свопирование начиналось как можно позже, при крайней необходимости ... а для того, чтобы желаемое значение для swappiness устанавливалось сразу после загрузки (сохранялось), нужно в конфигурационный файл /etc/sysctl.conf добавить строку вида:
Код:
vm.swappiness=10
 

Olej

New member
Сообщения
684
#8
Есть ... жизненный опыт.
И состоит он в том, что когда (хоть и очень редко) своп исчерпается - то уже "поздно пить боржоми" :eek:.
Если это случается при критически важных действиях, например при пересборке нового ядра-модулей, или крупного пакета из исходников (FreeSwitch или Asterisk, например, или просто пакет компьютерного зрения Dlib), когда сборка шла уже 1-2 часа то выглядит это так:
- система замедляется в реакциях (на мышку, например) в 10, 100, 1000 раз ...
- возникает тот эффект, который известен и в IT называется "пробуксовка": когда (по диагностике top) поток ядра kswapd0 занимает от 90% до 95% - гоняет попусту страницы RAM между собой...
- никакими действиями (Ctrl+C, Alt+F, kill, ... Ctrl+Alt+Del) вы практически не можете убить приложения (хоть кого-то из них)...
- вам остаётся кнопка RESET (если есть), или длительное нажатие кнопки питания...
- все ваши приложения (собираемые, выполняемые) и система остаются в неустойчивом и неопределённом состоянии...
- это всё особенно приятно, если это выполнялись финансовые, банковские, платёжные, бухгалтерские приложения! :p:eek:
 

Olej

New member
Сообщения
684
#9
А к началу диска - актуально не для ssd
По поводу начала диска - так это (абсолютное размещение данных), как помнится, было актуально только для очень старых конструкций HDD, и с тех пор только повторяется ... как заклинание. Для новых HDD, с аппаратной трансляцией секторов, это не имеет значения ... где-то, помниться, это всё описывалось и аргументировалось.
 

CrashBldash

New member
Сообщения
230
#10
Время доступа к началу диска все равно быстрее. Чисто физически головки быстрее подъедут.

Никто на раб станции ничего из исходников не собирает и ядро не компилит. Туда уже готовые бинарники приезжают.
 

Olej

New member
Сообщения
684
#11
Время доступа к началу диска все равно быстрее. Чисто физически головки быстрее подъедут.
Это где такое написано?
Это было так лет ... 15-20 назад. ;)
Никто на раб станции ничего из исходников не собирает и ядро не компилит. Туда уже готовые бинарники приезжают.
Это кто на что учился. :D
Я только этим исключительно и занимаюсь ... лет эдак 40 - бывало до 50 разных tools сборки за 1 рабочий день - только в силу должностных обязанностей.
И любой и каждый профессиональный разработчик программных проектов только этим (подобными вещами) и занимается.
Или по-вашему "рабочая станция" - это только бухгалтерия? :sleep:
 

Olej

New member
Сообщения
684
#12
4. Какие есть ещё другие способы (кроме раздела диска) для организации swap? (swap-файл, Zram и Zswap, Swapspace, ...)
Ещё 1 дополнительный вопрос в "тему swap":
5. Как быть со swap разделом (разделами) при установке на один диск нескольких операционных систем (как это популярно бывает у народа)?

P.S. Здесь форум молодой, слабо наполненный ещё ... а и здесь уже возникли вопросы-темы, аж 2 штуки, прямо или косвенно связанные с этим вопросом №5.
 

CrashBldash

New member
Сообщения
230
#13
Я только этим исключительно и занимаюсь ... лет эдак 40 - бывало до 50 разных tools сборки за 1 рабочий день - только в силу должностных обязанностей.
И любой и каждый профессиональный разработчик программных проектов только этим (подобными вещами) и занимается.
Или по-вашему "рабочая станция" - это только бухгалтерия? :sleep:
Я так понимаю вопрос был про массовый сектор, т.е. как раз про "бухгалтерию". Админы и разрабы сами знают сколько чего им надо.

Кстати про компиляцию. Той же генте 1 гига свапа с лихвой хватало. Не особо она и свопила
 

Olej

New member
Сообщения
684
#14
Я так понимаю вопрос был про массовый сектор, т.е. как раз про "бухгалтерию".
Не было здесь ничего ни про "массовый сектор", ни про "бухгалтерию".
А когда начинают в вопросах-ответах стенания про "нехватает памяти" ;) - то, в подавляющем большинстве, когда начинается выяснение, то выясняется контент вопроса: браузеры и Интернет-сёрфинг (чаще всего), мультимедийные применения (часто), базы данных, ... в отношении серверов - это обслуживание интенсивных потоков запросов обслуживания.
Рабочие станции - рабочие места на которых выполняют любую целевую работу. Всё, что не сервера - рабочие станции. Всё, что не рабочие станции - сервера. ;)
Админы и разрабы сами знают сколько чего им надо.
Да ничего они не знают!
Если бы знали - я бы не спрашивал.
 
Последнее редактирование:

Olej

New member
Сообщения
684
#17
Механика никуда не делась. Круги в центре таки меньше чем с краю. Сделайте же тест.
Ребятки! Это херня. Я эту херню слышу года с 1975-го примерно, при глубокомысленных мечтах о размещениях данных на супер-пупер накопителях 29Mb для ЕС-1033 (IBM/360). Вам с этими "философиями" вот сюда: Зависимость скорости чтения/записи HDD от физического расположения данных на диске? ... подключиться в беседу, вас там сильно не хватает, вас там заждались :D:
бред сивой кобылы в лунную ночь. ... просто заповедник инвалидов умственного труда
Позиционирование, перемещение головок между цилиндрами (дорожками) из случайной позиции - это задержки на порядки выше, чем время чтения одиночного сектора (или их группы).
И если вам так уж хочется выиграть на 3 копейки при случайном перемещении, то размещать "быстрый" раздел swap следовало бы ровно на среднем цилиндре диска, ровно посредине. Но всё и это - полная херня...

Кроме того, если бы вы представляли как пишутся драйвера блочных устройств именно Linux, то представляли бы, что сектора HDD читаются вовсе не в том порядке, в каком поступают последовательность запросов на их чтение.
Так что забудьте эту херню.
 

2zer0

New member
Сообщения
48
#18
Ребятки! Это херня. Я эту херню слышу года с 1975-го примерно...
Так что забудьте эту херню.
даже линейное! копирование с начала диска быстрее не говоря уже о шустрости работы ОС в разделе в начале диска.
Кстати, о дисках. Удивился Gparted торчащему на виду в Astra CE и полному отсутствию disks которую приходится накатывать из deb-пакета.
 
Последнее редактирование:

CrashBldash

New member
Сообщения
230
#19
Про рандомный доступ и правда подзабыл.

И да, диск сам оптимизирует своей микропрошивкой доступ к данным. Таким образом ОС даже не знает где и в какой последовательности он там копается. А копается он там не линейно.

Ваша правда. Размещение критически не влияет.
 

Olej

New member
Сообщения
684
#20
даже линейное! копирование с начала диска быстрее не говоря уже о шустрости работы ОС в разделе в начале диска
Ещё раз, для большей внятности, я говорю, а вы - записывайте: это всё херня!

Подавляющее большинство народа, рассуждающие про "своп", вообще даже не понимают про что они говорят: свопа, как такового, давно уже нет, это было в давних операционных системах ... сейчас есть виртуализация выборочно страниц памяти RAM на дисковое пространство. При этом все страницы кода, например динамические библиотеки .so, которые отмечены read-only, вообще никуда не "выгружаются", а при необходимости новой загрузки читаются из исходных файлов кода, в том месте где они и лежат на диске ... и т.д.

Кроме того, блочная подсистема Linux кешируется на уровне драйверов устройств, а не разделов, /dev/sda а не какого-нибудь /dev/sda5. Поэтому операции свопирования, с огромной вероятностью, (как я предпролагаю), вообще никуда не пишутся физически, а застряют в огромном (по нынешнему состоянию Linux) дисковом кеше. Если хотите и вам нечем заняться - изучите этот вопрос.
Код:
olej@astra:~$ free
              total        used        free      shared  buff/cache   available
Mem:        4039172      765656     1978084      144172     1295432     2893484
Swap:       4191228           0     4191228
(из 4Gb RAM - это виртуальная машина - 1.3Gb это кеши и буфера IO)

Так что все и любые разговоры и публикации о "влиянии размещения swap на производительность Linux" (а я читал такого много) - не адекватные, ничего под собой не имеют кроме спекуляций и желаний показаться умным.

Оставьте это!
А вот действительно актуальные вопросы относительно swap в Linux - есть ... и они перечислены выше: 1 ... 5, и, может быть, и не всё ещё. ;)
 
Последнее редактирование: