воскресенье, 15 июня 2014 г.

Оптимизация работы swap в Ubuntu

Известно, что в современных операционных системах используется такая технология, как виртуальная память, разработанная для многозадачных ОС.
В ОС семейства Windows файл, служащий для хранения неиспользуемой оперативной памяти в области жесткого диска, именуется «файлом подкачки» (pagefile.sys).
Его организация реализована далеко не лучшим образом (мягко говоря!). В ОС Linux еще при установке создается отдельный раздел подкачки — «Swap», что гораздо лучше.
Файл подкачки Windows и Linux-swap, располагаются на HDD (жестком диске). Когда оперативной памяти становиться недостаточно, происходит выгрузка страниц памяти из ОЗУ на жесткий диск, а когда вы снова обращаетесь к файлам, находящимся в разделе подкачки (swap), они снова загружаются в оперативную память.
Вся проблема в том, что скорость чтения-записи жесткого диска HDD (даже самого быстрого) В РАЗЫ меньше скорости оперативной памяти. Вот это и ведет к замедлению работы компьютера и снижению производительности в целом.
Здесь есть два способа решения этой проблемы: использовать большие объемы ОЗУ или правильно настроить работу системы с файлом подкачки и swap.
Итак, в Ubuntu есть такой параметр, который контролирует процент свободной памяти, при которой начнется сброс страниц памяти в swap — vm.swappiness.
В Ubuntu по умолчанию он имеет значение равное — 60. Это означает, что при 40% занятой оперативной памяти начнется активный сброс страниц памяти в раздел swap, т. е. 100% — 60% = 40%.
Проверить, каково значение параметра у вас, можно следующим образом.
Открываем терминал комбинацией клавиш Ctrl+Alt+T и выполняем команду:
cat /proc/sys/vm/swappiness
Ускоряем Ubuntu. Оптимизация работы подкачки (swap) в Ubuntu — Linux - glazdik.ru
Такое значение параметра может быть полезно только для компьютеров с малым количеством оперативной памяти  (512 -1024 МБ).
Если у вас современный компьютер или ноутбук с большим объемом ОЗУ (4-6, а то и 8 ГБ), то это вам вряд ли подойдет.
На многих форумах и блогах, посвященных Ubuntu рекомендуется выставить значение параметра  vm.swappiness = 10 (т. е. 100% — 10% = 90%).  Но, по моему личному опыту, при наличии оперативной памяти объемом в 6 ГБ можно повести себя и по-агрессивнее, выставив значение равным 0. В данном случае система будет обращаться к разделу swap только в крайнем случае.
Я рекомендую поэкспериментировать с данным параметром в текущем сеансе (после перезагрузки все вернется к значению по умолчанию), пока ничего не меняя в конфигурационных файлах системы, дабы найти самый оптимальный параметр. А здесь уже все индивидуально...
Сделать это можно так.
Опять же открываем всемогущий терминал  комбинацией клавишCtrl+Alt+T и выполняем в нем  следующую команду:
sudo sysctl vm.swappiness=
После знака равенства выставите значение от 100 до 0 (в зависимости от объема вашего ОЗУ).
После этого попробуйте «погрузить» свою систему: открыть несколько браузеров с большим числом вкладок, покопировать большие файлы на внешние носители (это, кстати, является больной стороной linux-систем — скорость копирования на внешние носители. Но об этом как-нибудь в следующий раз) и тому подобное.
После того, как вы подобрали для себя наиболее удачное значение, необходимо установить новое значение в качестве постоянного. Копируем и выполняем следующую команду в терминале:
sudo gedit /etc/sysctl.conf
Перед вами откроется конфигурационный файл в текстовом редактореgedit. В конце этого файла вставляем два следующих параметра без решетки перед ними:
vm.swappiness=0
vm.vfs_cache_pressure = 1000
Сохраняем файл. Он должен выглядеть, как на скриншоте внизу:Ускоряем Ubuntu. Оптимизация работы подкачки (swap) в Ubuntu — Linux - glazdik.ru
Перезагружаем компьютер. После перезагрузки выполняем в терминале:
sudo sysctl -p
Я, как уже было отмечено выше, выбрал параметр равным 0, фактически отключив раздел swap, т. к. для моего компьютера с шестью гигабайтами ОЗУ он оказался наиболее оптимальным. Вы можете выбрать значение параметра равным 10, как это рекомендовано на многочисленных форумах.
В качестве примера мне бы хотелось продемонстрировать загрузку оперативной памяти в Ubuntu 12.10 x64 с 6 ГБ ОЗУ.
Итак, я открыл три браузера — штатный Mazilla Firefox, Opera и Google Chrome с общим количеством вкладок около 40, аудиоплеер Clementine (кстати, довольно требовательный к ресурсам компьютера), Skype, торрент-клиент qBittorrent.
И вот скриншот htop (это довольно продвинутый консольный монитор процессов). Для установки набираем в терминале
sudo apt-get install htop
Ускоряем Ubuntu. Оптимизация работы подкачки (swap) в Ubuntu — Linux - glazdik.ru
Я думаю, что все становится понятно: занято менее половины установленной оперативной памяти.
Поэтому если у вас много ОЗУ, то использовать раздел подкачки не имеет никакого смысла. Это будет только замедлять скорость работы компьютера!

Комментариев нет: