Вопрос или проблема
Я много раз читал в интернете, что swappiness следует уменьшить или отключить. Так ли это, что он делает? У меня 2 ГБ оперативной памяти, стоит ли отключать swappiness?
Согласно Википедии:-
Swappiness — это параметр ядра Linux, который контролирует относительный вес, отведенный на выгрузку оперативной памяти в swap, по сравнению с удалением страниц из кэша страниц системы. Swappiness может иметь значения от 0 до 100 включительно. Низкое значение заставляет ядро избегать свапа, высокое значение заставляет ядро пытаться использовать пространство свапа. Значение по умолчанию составляет 60, и для большинства настольных систем установка его на 100 может повлиять на общую производительность, тогда как установка на более низкое значение (даже 0) может уменьшить задержку отклика.
Согласно Ubuntu Wiki:-
Swap — это область на жестком диске, которая является частью виртуальной памяти вашей машины, представляющей собой комбинацию доступной физической памяти (RAM) и swap пространства. Swap временно удерживает страницы памяти, которые неактивны. Swap используется, когда ваша система решает, что ей нужна физическая память для активных процессов, и недостаточно свободной физической памяти. Если система нуждается в дополнительных ресурсах или пространстве памяти, неактивные страницы в физической памяти перемещаются в swap, тем самым освобождая физическую память для других нужд. Обратите внимание, что время доступа к swap медленнее, поэтому не рассматривайте его как полную замену физической памяти. Swap может быть выделенным разделом swap (рекомендуется), swap-файлом или комбинацией разделов swap и swap-файлов.
Как я вижу из моего графика, Ubuntu использует намного больше swap, чем следует. Вы можете легко отключить/уменьшить swappiness, как это следует сделать на системах с более чем 2 ГБ RAM, которые не используются для задач с высоким использованием памяти, таких как редактирование аудио/видео/изображений высокой четкости.
Ваша система тормозит, потому что Swappiness установлен на значение по умолчанию, и она записывает на жесткий диск, что в 1000 раз медленнее, чем запись в RAM.
Чтобы проверить текущее значение Swappiness,
cat /proc/sys/vm/swappiness
или
sysctl vm.swappiness
Чтобы временно отключить или установить Swappiness, в терминале ( Ctrl+Alt+T),
sudo swapoff -a
или
sysctl -w vm.swappiness=10
Чтобы сделать это постоянно, добавьте следующие строки в ваш файл /etc/sysctl.conf
с помощью sudo nano /etc/sysctl.conf
:-
# ИЗМЕНИТЬ SWAP
vm.swappiness=x
Здесь, x
может быть любым числом от 0 до 100, где:-
0 = отключить swap
1 = минимальный swap
10 = рекомендуется для >2 ГБ
60 = значение по умолчанию Linux для swap
100 = максимальный swap, для >1 ГБ RAM
Не следует устанавливать значение swappiness на 0, если вы не уверены, что никогда не израсходуете свою RAM, иначе Out of Memory (OOM) Killer начнет убивать процессы, использующие RAM.
Вот немного больше информации.
.
Ответ или решение
Теория
Понятие «swap» в Linux и Ubuntu — это область на жестком диске, которая служит частью виртуальной памяти системы. Виртуальная память — это комбинация физической памяти (ОЗУ) и swap-пространства. Swap используется для временного хранения неактивных страниц памяти, освобождая таким образом ОЗУ для более активных процессов. Задействование swap происходит в случае, когда система решает, что ей необходимы дополнительные ресурсы памяти, а доступной физической памяти недостаточно. Однако доступ к swap занимает больше времени, чем к ОЗУ, поскольку жесткий диск значительно медленнее.
Параметр «swappiness» в ядре Linux определяет, насколько активно система использует swap-пространство. Значения могут варьироваться от 0 до 100: более низкое значение заставляет систему избегать использования swap, а высокое, наоборот, способствует его применению. По умолчанию, значение swappiness установлено на 60, что для большинства систем является оптимальным балансом. Для систем с больше чем 2GB ОЗУ, не участвующих в ресурсозатратных операциях (например, обработка видео), рекомендуется уменьшать swappiness до 10, что предоставляет более отзывчивую работу без излишней нагрузки на жесткий диск.
Пример
Допустим, у вас есть система с 2GB оперативной памяти. При её стандартной работе вы замечаете значительное замедление, когда система начинает активно использовать swap. Это связано с тем, что запись на жёсткий диск медленнее, чем в память RAM, в тысячи раз. Проверить текущее значение swappiness можно при помощи команды:
cat /proc/sys/vm/swappiness
Или:
sysctl vm.swappiness
Если ваша система даёт высокую нагрузку на swap при стандартной работе, следует подумать об изменении параметра swappiness.
Применение
Чтобы изменить значение swappiness временно (до перезагрузки), выполните:
sudo swapoff -a
Для временного изменения параметра swappiness также можно использовать:
sysctl -w vm.swappiness=10
Эта команда изменит swappiness на 10, что может быть оптимальным для системы с более 2GB RAM.
Для постоянного изменения параметра требуется отредактировать файл sysctl.conf
:
- Откройте файл
/etc/sysctl.conf
с правами суперпользователя:
sudo nano /etc/sysctl.conf
- Добавьте строку:
vm.swappiness=10
Сохранив изменения, перезагрузите настройки командой:
sudo sysctl -p
Имейте в виду, что установка swappiness равного 0 может привести к нехватке ОЗУ и вызову OOM Killer’а, если RAM будет полностью израсходована.
Заключение
Управление swap и swappiness — важный аспект настроек оперативной системы Linux, особенно если у вас ограниченное количество оперативной памяти. Тонкая настройка этих параметров может существенно улучшить производительность системы, минимизируя задержки при доступе к данным и предотвращая замедление работы из-за излишнего использования swap-пространства. Важно подходить к этому процессу осознанно и настраивать систему в зависимости от реальных нужд и сценариев использования.