среда, 22 июля 2015 г.

Настройка включения подкачки и дисковых кэшей в Ubuntu и Linux Mint

Нижеприведенные материалы носят рекомендательный характер. Описанные в данной заметке действия касаются изменения системных настроек Вашей Linux. Если Вы намерены изменить настройки своей системы, то Вы это будете делать на свой страх и риск!

Материал был опубликован в 2015 г. За это время в комплект ПО Linux Mint были внесены некоторые изменения, которые оговариваются по тексту.

Изменение порога срабатывания на включение swap

В Linux осуществляется контроль использования оперативной памяти. По умолчанию, при достижении расхода 40% оперативной памяти, для освобождения оперативной памяти система начинает активно сбрасывать данные с раздела (или файла (файлов), если Вы его создали вместо раздела подкачки). В настройках системы за порог срабатывания отвечает параметр vm.swappiness, который можно изменить. По умолчанию, его величина составляет 60, т.е. vm.swappiness = 60. Это значит, что при условии "100-60=40% оперативной памяти занято" вырабатывается команда "использовать подкачку".

Например, в моём компьютере имеется много (8 Гб) оперативной памяти, которую мне хотелось бы использовать по максимуму, так как скорость обращения к оперативной памяти намного превышает скорость обращения к жёсткому диску, на котором расположена подкачка. Мной выбрано значение 5 (95% расхода оперативной памяти). Поэтому запустить терминал и:

 sudo gedit /etc/sysctl.conf  или  sudo pluma /etc/sysctl.conf  (для оболочки MATE)

Для Linux Mint 17.2 и выше = sudo xed /etc/sysctl.conf

в конец файла дописываю vm.swappiness = 5 и сохраняю.

Выполняю перезагрузку, после которой проверяю действующие значения
   sudo sysctl -p 

В своей системе значение  vm.swappiness =   Вам необходимо выбрать самостоятельно. Во многих публикациях указано, что при достаточном количестве оперативной памяти устанавливается  vm.swappiness = 10  , но Вы должны подойти к этому вопросу творчески, не копируя чужие рекомендации без понимания сути вопроса. А то не ровен час:


Изменение параметров дискового кэша

Объём потребляемой системой оперативной памяти можно увеличить или уменьшить за счёт изменения размеров дискового кэша. Уровень выделяемой под кэш памяти хранится в  /proc/sys/vm/vfs_cache_pressure  и влияет на отношение ядра к освободившимся от кэшированных оъектов файловой системы страницам оперативной памяти. По умолчанию, установленное значение составляет 100, но его можно изменить. Уменьшение этого значения заставляет ядро почаще придерживать освободившиеся от кэшированных оъектов файловой системы страницы оперативной памяти для своих нужд в будущем. Увеличение этого значения заставляет ядро чаще отдавать эти страницы для нужд других программ. Т.е. при увеличении этого значения величина  cached  в выводе  top  будет расти медленнее. Подробнее об этой переменной можно прочитать в файле  Documentation/filesystems/proc.txt  от корня дистрибутива исходных кодов ядра. Проще говоря, меньшее значение соответствует меньшему расходу оперативной памяти под дисковые кэши, большее значение соответствует большему расходу оперативной памяти под дисковые кэши.

Универсального рецепта нет. Файловый кэш рассчитан на использование примерно 75% уровня свободной памяти. Приемлемое значение определяется экспериментально. В разных источниках приводятся следующие рекомендации:

Для компьютеров с оперативной памятью 128 Мб рекомендуется значение 10. Для компьютеров с большим запасом оперативной памяти – 1000 и даже 10000.

"Если используется нетбук, у которого вместо жесткого диска используется ssd-диск, лучше установить это значение в 50. Тогда файловый кеш будет использоваться по максимуму, снижая обращение к жесткому диску.

Если Вы часто запускаете торрент-клиенты, то лучше это значение установить 1000 и более (следующие значения увеличиваются в 10 раз, то есть 10000, 100000 и т.д.), при этом не будет возникать ситуации, когда после нескольких часов работы торрент-клиента при попытке переключиться на другой рабочий стол приходиться ждать, пока вся информация будет перечитана… Она будет оставаться в памяти и не будет замещаться данными с торрент-клиента…"

И, как написано, в "Записках дебианщика", при дальнейшей работе системы дисковые кэши будут "смачно чавкать" Вашей оперативной памятью.

Для просмотра установленного в Вашей системе значения выполнить:
  sudo sysctl -p 

Для изменения запустить терминал и:

 sudo gedit /etc/sysctl.conf  или  sudo pluma /etc/sysctl.conf  (для оболочки MATE)

Для Linux Mint 17.2 и выше = sudo xed /etc/sysctl.conf

в конец файла дописать  vm.vfs_cache_pressure = Ваша цифра  и сохранить.

На ресурсе liberatum.ru в одной из статей приводится следующее пояснение параметра:

"Другой параметр, который влияет на количество используемой памяти – это vfs_cache_pressure. Он указывает системе какое время нужно хранить открытые файлы в кэше оперативной памяти. Значение 100 заставляет систему удалять такие файлы очень быстро, 0 – держать их в памяти как можно дольше."

Другие настройки в sysctl.conf

dirty_background_ratio – основной инструмент настройки. Обычно уменьшают этот параметр. Если ваша цель снизить количество данных, хранимое в кэше, так что данные будут писаться на диск постепенно, а не все сразу, то уменьшение этого параметра наиболее эффективный путь. Значение по умолчанию наиболее приемлимо для систем имеющих много оперативной памяти и медленные диски.

dirty_ratio – второй по значимости параметр для настройки. При значительном снижении этого параметра приложения, которые должны писать на диск, будут блокироваться все вместе.

dirty_expire_centisecs. Попробуйте уменьшить этот параметр, но не сильно. Он позволяет уменьшить время нахождения страниц в кэше до записи на диск, но с другой стороны это значительно снизит среднюю скорость записи на диск, что особенно проявится на системах с медленными дисками.

Например, в файле /etc/sysctl.conf:

vm.dirty_background_ratio = 10
vm.dirty_ratio = 40

Чтобы уменьшить количество финализаций записи на диск необходимо подкорректировать vm.dirty_writeback_centisecs = 15000 (по умолчанию – 500).

3 комментария:

  1. Что такая уж большая разница 5или 10,я сделал10 при оперативке 4гб,кажется есть здвиги в лучшую сторону,но не значительные.

    ОтветитьУдалить
  2. перезагрузку делать не надо, чтобы подхватить натройки хватит и sudo sysctl -p

    ОтветитьУдалить