среда, 12 сентября 2012 г.

Оптимизируем работу Linux с помощью zram

То, что может ощутимо замедлять работу любой системы - это обращение к swap-файлу. Когда системе не хватает оперативной памяти, она начинает сбрасывать некоторые страницы из памяти на диск, в swap файл (или в случае линукса, чаще в swap-раздел диска).

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

И вот бывает так, что памяти ещё немало, а система начинает ощутимо работать с диском из-за swap. И кому-то пришла гениальная идея - а что, если создать виртуальный swap-файл и разместить его в оперативной памяти?

С одной стороны, у системы остаётся нужный ей swap, а с другой, этот swap-файл крайне быстрый, быстрее любого диска. К тому же, поскольку он в памяти, можно применить простейшее сжатие, так что в него поместится заметно больше данных.

Ну это же Линукс, верно? Так что сказано — сделано. Что же нужно сделать, чтобы включить это чудо? На самом деле, все необходимые инструменты уже есть в вашей системе, нужно только включить. Но даже это уже сделано за вас. Нужно просто установить один пакет из PPA:
sudo add-apt-repository ppa:shnatsel/zram
sudo apt-get update
sudo apt-get install zramswap-enabler
Результатом установки этого пакета станет то, что в вашу систему будет добавлен init-скрипт, который будет при каждой загрузке создавать такой swap файл, автоматически подбирая оптимальный размер.

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