Ускорение работы Ubuntu с дисковой подсистемой

Немного теории

Не для кого не секрет, что для большинства современных компьютеров самым слабым звеном является дисковая подсистема. За последние несколько лет технологии «увеличили» производительность практически всех компонентов компьютера, но этот технологический прорыв не коснулся жестких дисков. Если в этой области прогресс в сторону скорости и есть, то на общем фоне выглядит практически не заметно. Именно поэтому с оптимизации работы дисковой подсистемы и следует начать оптимизацию и «тюннинг» операционной системы Ubuntu.


По большей части современный файловые системы Ext3 и Ext4 обладают хорошим быстродействием и их более тонкая настройка не требуется. Более пристальное внимание следует уделить работе оперативной памяти и дисковой подсистемы в целом.


Любая операционная система Linux, в том числе и Ubuntu, устроена так, что практически одновременно использует для хранения каких-то временных данных, оперативную память и файл подкачки – swap. Этот файл подкачки размещается на жестком диске и нужен для разгрузки ОЗУ при ее заполнении. Благодаря ему, у пользователя появляется возможность запускать тяжеловесные приложения с небольшим объемом оперативной памяти, где часть информации хранится на жестком диске. Как говорится: «медленно, но верно».


Почему данные хранятся «…практически одновременно…» в swap и ОЗУ?


Потому что Ubuntu устроенна так, что при заполнении оперативной памяти на 40%, происходит ее высвобождение в файл подкачки. Если взять за «стандартный компьютер» – компьютер с 2 Гб оперативной памяти (большинство современных нетбуков обладают даже меньшим объемом памяти – 1Гб), то можно подсчитать, что 40% от всей памяти – это 819,2 Мб (1024Мб * 2 * 0,4 = 819,2 Мб). Интернет-браузер Google Chrome, к примеру, в среднем потребляет порядка 200-300 Мб ОЗУ. Остальные браузеры потребляют примерно столько же. Но очень редко можно встретить пользователя, который бы не пользовался, наверное, главной возможностью современных ОС – многозадачностью и не запускал бы несколько приложений одновременно.


Когда заполнение оперативной памяти достигает указанного порога, операционная система высвобождает ее в файл на жестком диске, то есть позволяет «вступить» в работу одному из самых медленных устройств в компьютере.


Из этого следует, что параметры работы оперативной памяти, которые выставлены в Ubuntu по умолчанию, не совсем подходят для повседневной работы.


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


Эта статья призывает к более оптимальной утилизации имеющейся ОЗУ, так как по умолчанию в ОС держится большое количество ОЗУ просто не используемой, тем самым «тормозя» операционную систему.

Ускоряем работы Ubuntu с дисковой подсистемой

Вся работа по ускорению Ubuntu для удобства разбита не несколько частей:



  1. Редактируем конфигурационный файл /etc/sysctl.conf:
    sudo nano /etc/sysctl.conf


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

      Если этого параметра нет, то необходимо его добавить в самом конце открытого конфигурационного файла!


    2. В конце этого файла рекомендуется еще добавить параметр vm.vfs_cache_pressure, который указывает размер используемого дискового кэша.

      Если Вы обладатель компьютера с SSD-накопителем, то для Вас будет актуален параметр:


      vm.vfs_cache_pressure = 50

      Если у Вас компьютер с «простым» жестким диском, то наибольшую отзывчивость можно получить при установке параметра:


      vm.vfs_cache_pressure = 1000


  2. Если в своей повседневной работе Вы часто используете только несколько приложений, то можете воспользоваться их кэшированием. Для этих целей есть дополнительный демон preload, который собирает статистику «ваших предпочтений» и держит часть наиболее востребованных файлов запускаемых приложений в оперативной памяти, тем самым избавляя Вас от утомительных ожиданий долгой первоначальной загрузки.

    Чтобы воспользоваться демоном preload в Ubuntu, необходимо его установить:


    sudo apt-get install preload

    Дальнейшей дополнительной настройки preload не требует.

  3. После всех манипуляций необходимо перезагрузить операционную систему или выполнить:
    sudo sysctl -p

Дополнительная информация


Если Вы не готовы сразу же менять всю работу системы распределения оперативной памяти, то можете временно применить эти параметры, которые будут действовать до следующей перезагрузки операционной системы. Для этого нужно выполнить соответствующие команды:


echo 10 > sudo /proc/sys/vm/swappiness

и
echo 1000 > sudo /proc/sys/vm/vfs_cache_pressure

Для пользователей, которые не готовы работать с командной строкой и конфигурационными файлами, есть решение в виде графической утилиты для тонкой настройки операционной системы Ubuntu – Ailurus, которая «умеет» это делать.

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

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен

Комментарии (9)

  • Пожалуйста, источники в студию …

  • Кстати, Вы забыли упомянуть, что работа демона preload будет заметна,если у использующего,будет большой объем, физического размера оперативной памяти.

    P.S. К тому же, сразу прирост производительности, используемый сие демон, не почувствует!

  • Андрей

    vfs_cache_pressure=1000 это ошибка? У этого параметра значения от 1 до 100 допустимы, и по умолчанию как раз 100 в ubuntu. Чем меньше значение, тем больше кэшируется.

  • Danil

    от 1 до 100 – это значение vm.swappiness, а 1000 для vfs_cache_pressure – справедливо. Mut@NT – спасибо за статью!

  • Mut@NT

    myr4ik07: Пожалуйста, источники в студию …

    О чем Вы? Статья написана с использованием большой кучи блогов и сайтов, которые копипастят контент откуда непоподя

    myr4ik07: Кстати, Вы забыли упомянуть, что работа демона preload будет заметна,если у использующего,будет большой объем, физического размера оперативной памяти.
    P.S. К тому же, сразу прирост производительности, используемый сие демон, не почувствует!

    Спасибо, за уточнение. Добавлю.

    Андрей: vfs_cache_pressure=1000 это ошибка? У этого параметра значения от 1 до 100 допустимы, и по умолчанию как раз 100 в ubuntu. Чем меньше значение, тем больше кэшируется.

    Вроде как у него нет ограничения.

  • selius

    Ubuntu 10.04, сделал по инструкции – не знаю есть ли хоть какой прирост производительности (или это скорее самовнушение) – уже как больше суток, полет нормальный! Хуже точно не стало =)
    За статью – спасибо!

  • Mut@NT

    selius: Ubuntu 10.04, сделал по инструкции – не знаю есть ли хоть какой прирост производительности (или это скорее самовнушение) – уже как больше суток, полет нормальный! Хуже точно не стало =) За статью – спасибо!

    Смотря как работаете с ОС. Если У Вас большое количество ОЗУ изначально, то, возможно, ее заполнение и не доходило до отметки разгрузки в файл подкачке.

    В большинстве случаев эти действия убирают легкую приторможенность системы при продолжительно работе

  • Я рушил проблему проещ, но дороже. Полностью отключил swap, убрал раздел подкачки и нарачтил оперативку до 8 Гб. теперь никаких лагов из-за сброса подкачки на диск

  • Леана

    Делала по описанию, но в моем случае особого прироста не заметила, а вот apt-get install zram, вродь как полезнее оказался. Если кто захочет поэкспериментировать, то swappiness придется вернуть взад на 60, или не меньше 40, иначе фокус не получится.