Friday, April 12, 2019

Linux Swap

https://www.linux.com/news/all-about-linux-swap-space - оригинал

Свопинг - это процесс выгрузки страниц из памяти в заранее сконфигурированное место на жёстком диске. Виртуальная память - это суммарный объём физической памяти и свопа.

Своп нужен по 2-м причинам:

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

2. Приложение может потреблять много памяти во время запуска, используя её для инициализации своих процессов, а потом эта память больше не используется. Такие страницы можно скопировать на диск и освободить память для текущих нужд.

Недостатки свопинга: быстродействие диска измеряется в миллисекундах, а памяти - в наносекундах, так что доступ к диску в тысячи таз медленней.

В Линуксе бывает 2 вида пространства для свопинга: раздел и файл.

Команда swapon -s покажет тип свопа, используется ли он (сколько килобайт) и приоритет - какой своп использовать в первую очередь. В Линуксе, если у вас смонтировано 2 или более свопа с одним приоритетом, система будет использовать их по очереди, что заметно увеличит производительность. От себя добавлю: если не хотите ебаться с килобайтами -

free -h - там будут меби- и гибибайты.
free -h --si степени десятки, т.е. мегабайты и гигабайты.

I CВОП-РАЗДЕЛ


Проверка, имеет ли ваш раздел для свопа тип Linux Swap:

fdisk -l от рута.

В поле Type для своп-раздела должно быть  Linux Swap, ID - 82.

Если надо изменить тип раздела, можно использовать fdisk с параметром t, но проще будет cfdisk с псевдографическим интерфейсом.

После того, как разделу присвоен тип своп, его надо подготовить: это типа как на нормальном разделе создать файловую систему.

mkswap /dev/sdx

x - номер раздела.

Теперь раздел готов к использованию, но его надо активировать:

swapon /dev/sdx

swapon -s - проверка, что он подключен и работает.

Чтобы раздел монтировался автоматически при загрузке, надо его занести в fstab, добавив туда строку:

/dev/sdx swap swap defaults 0 0

Параметры файловых систем, как правило, неприменимы к ФС типа своп. Точки монтирования нет.

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

1. swapoff -a  - отключает все свопы, присутствующие в fstab
2. swapon -as - подключить всё, что есть в fstab, и вывести резюме.


II СВОП-ФАЙЛ

Преимущества своп-файла: не нужен отдельный раздел на диске. Т.е., если понадобится дополнительное место для свопа, не надо переразмечать диск.


Проверка, есть ли в системе вообще своп:

swapon -as

Создание файла для свопа:

dd if=/dev/zero of=/swapfile bs=1024 count=1048576

swapfile - имя файла.

Подготовка файла:

mkswap /swapfile

chmod 0600 /swapfile - присвоение прав доступа к файлу.

Подмонтирование:

swapon /swapfile

Строка в fstab аналогична таковой для раздела.

III РАЗМЕР СВОП-ПРОСТРАНСТВА.

Старые Юниксы типа Sun OS требовали размер свопа в 2-3 раза больше размера физической памяти. Современные реализации типа линуксов не требуют таких конских цифр, но если сконфигурировать таким образом, то они будут его использовать.

Правило "большого пальца" примерно такое:

1. Для десктопных систем своп делается примерно в 2 раза больше объема ОЗУ, чтобы можно было выкидывать туда простаивающие процессы.

2. Сервер - примерно равно объему ОЗУ.

3. Старые машины (где, например, 128 метров ОП): чем больше, тем лучше, хоть гигабайтами.


 ПОЧЕМУ ИСПОЛЬЗУЕТСЯ СВОП при том, что ОЗУ заполнено наполовину:

В линуксах за это отвечает параметр ядра swappiness. Это число от 1 до 100, по умолчанию 60. Обозначает агрессивность свопинга: чем оно больше, тем больше страниц свопится из памяти. Вот например, разработчик ядра Эндрю Мортон выставляет 100, ибо нехуй всяким раздутым приложениям засирать мою оперативную память. Недостаток такого подхода в том, что если слишком часто выгружать страницы, это снижает время отклика приложений. Потому что когда вам понадобится ткнуть в это приложение, оно будет дооолго загружаться с диска. Я вам скажу, что даже при значении 60 случается такая хуета, что файловый менеджер может открываться 3-4 секунды.

Как изменить значение параметра:

echo X > /proc/sys/vm/swappiness - под рутом.

Или
sysctl -w vm.swappiness=X.

1<=X<=100. Если надо делать это автоматически при загрузке (так сработает до перезагрузки) - добавить в /etc/sysctl.conf или какой-нибудь /etc/sysctl.d/90-swap.conf строчку:

vm.swappiness=X.

Заключение:

Управление свопом - важный момент в системном администрировании. Не бойтесь экспериментировать, но не забывайте мониторить систему на предмет того, даёт ли ваша конфигурация желаемый результат.

No comments:

Post a Comment