Используйте Zswap для повышения производительности на ПК с Linux с небольшим объемом оперативной памяти

Посмотрим правде в глаза, некоторые из нас не так часто обновляются. Или, по крайней мере, как пользователи Linux, нам нравится переделывать наши старые ноутбуки / компьютеры. Многие дистрибутивы комфортно работают в системах с небольшим объемом оперативной памяти (оперативной памяти). Браузеры, однако, не столь снисходительны и требуют все больше и больше памяти по мере развития Интернета.

В то время как системе с настольной средой LXDE может потребоваться всего 150 МБ ОЗУ после загрузки, Chromium, Chrome или Firefox быстро съедят сотни мегабайт и даже несколько гигабайт ОЗУ, когда мы откроем несколько вкладок.

И вот когда это происходит! Жесткий диск начинает издавать скрежет. Музыка начинает заикаться. Когда мы переключаемся на другое приложение, проходят десятки секунд, пока оно не появится на экране. Может начать отставать даже курсор мыши. Это эффект перебоя диска.

Что такое перегрузка диска?

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

zswap-жесткий-диск

Этот механизм хорошо работает при обмене небольшими объемами данных. Но когда, скажем, доступно только 2 ГБ ОЗУ, а для всех открытых программ требуется 4 ГБ, операционная система должна постоянно менять местами. Постоянное перемещение данных из памяти на диск, с диска на память и обратно происходит очень медленно, особенно с жесткими дисками. В такой ситуации запоминающее устройство не может достаточно быстро выполнять запросы. Короче говоря, когда происходит сбой диска, все становится очень медленно.

SSD-диски отлично подходят для обмена

В Интернете до сих пор ходит миф: "Никогда не настраивайте свопинг на SSD. Это убьет ваше устройство! " Так было несколько лет назад, но теперь это не так. Фактически, настройка подкачки на SSD-накопителе дает отличные результаты. Если в компьютере есть твердотельный накопитель с хорошей производительностью произвольного чтения / записи (не менее 300 МБ), настройте на нем раздел подкачки и игнорируйте остальную часть этой статьи. Когда операционной системе необходимо заменить 1 ГБ данных, это займет менее пяти секунд, тогда как на жестком диске это займет больше минуты.

Как значительно уменьшить загрузку диска в Linux

zswap-мем-сжатие-баран

К счастью, большая часть данных, хранящихся в ОЗУ, очень сжимаема. Это означает, что если мы возьмем 200 МБ данных, хранящихся в памяти, и сжимаем их, мы можем уменьшить размер до 100 МБ. Следовательно, это означает, что системе придется записывать на диск гораздо меньше данных при подкачке.

Представьте себе, что вместо того, чтобы ждать тридцать секунд, чтобы переключиться на программу, вам нужно подождать пятнадцать. Это ощутимое улучшение. Но на самом деле ускорение намного более значительное (возможно, придется подождать менее десяти секунд), потому что инструмент, который мы будем использовать, более сложный, чем этот. Он разумно отправляет на диск только те биты и фрагменты, которые нельзя сжать, а остальное хранит в зарезервированной части памяти. Если вы хотите узнать больше о его внутреннем устройстве, посетите официальную страницу ядра Linux о zswap.

Простая версия преимуществ, которые мы получаем от использования zswap, заключается в том, что вместо ужасного замедления, когда у нас заканчивается память, мы получаем терпимое, умеренное замедление, которое длятся секунды вместо десятков секунд или даже минут.

Как включить zswap в дистрибутивах на основе Debian (Ubuntu, Linux Mint и т. Д.)

Откройте приложение терминала и выполните эту команду, чтобы отредактировать файл конфигурации шаблона загрузчика Grub:

zswap-edit-grub-template-config

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

zswap-редактирование-GRUB-шаблон-конфигурация-2

Например, строка, которая была GRUB_CMDLINE_LINUX_DEFAULT="тихий всплеск", становится GRUB_CMDLINE_LINUX_DEFAULT="тихий всплеск zswap.enabled=1".

Чтобы сохранить файл, нажмите Ctrl + X, затем "y" и затем Enter.

Сгенерируйте новые файлы конфигурации Grub в соответствии с шаблоном, который мы ранее редактировали:

zswap-update-grub-готово

Перезагрузитесь, и модуль zswap будет включен автоматически.

Как включить zswap в Fedora и OpenSUSE

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

Добавьте zswap.enabled=1 в кавычки в строке, которая начинается с GRUB_CMDLINE_LINUX.

zswap-редактирование-личинка-шаблон-Fedora

Нажмите Ctrl + X, затем "y" и затем Enter, чтобы сохранить файл.

В зависимости от того, загружается ли ваш компьютер из системы BIOS или UEFI, файл конфигурации Grub создается по другому пути. Чтобы узнать, где он сейчас находится, введите следующую команду:

zswap-find-grub-cfg-on-fedora

Используйте путь, который выводится здесь, в следующей команде. Например, в нашем случае найденный путь был "/boot/grub2/grub.cfg", поэтому мы добавим его в конец следующей команды после "-o":

Перезагрузите компьютер. После перезагрузки проверьте, активен ли модуль:

Если на выходе "Y", значит, модуль работает правильно.

Как включить zswap в Arch Linux

Установите пакет systemd-swap:

zswap-pacman-install-systemd-swap

Заставьте этот пакет творить чудеса во время загрузки:

Запустите его сейчас, без перезагрузки:

Чтобы проверить, все ли работает должным образом, проверьте, включен ли модуль zswap:

zswap-включить-systemd-своп-сервис

Если выход "Y", это означает, что модуль активен.

Как включить zswap в разных дистрибутивах

Вообще говоря, включить zswap во время загрузки так же просто, как добавить zswap.enabled=1 в параметры ядра. Большинство дистрибутивов по умолчанию используют Grub2 в качестве загрузчика. Если вы используете другой загрузчик, найдите файл конфигурации, в котором хранятся параметры ядра, передаваемые во время загрузки, и добавьте zswap.enabled=1 в качестве дополнительного параметра.

Еще один параметр, с которым вы можете поиграть, чтобы определить, улучшает ли он производительность для вашего конкретного случая использования, - это zswap.max_pool_percent=20. Вы можете настроить его, изменив число в конце: например, zswap.max_pool_percent=50.

Добавьте его к тем же параметрам ядра, где вы добавили zswap.enabled=1. Рекомендуется не превышать 50%, так как это может отрицательно сказаться на системах с небольшим объемом оперативной памяти.

Заключение

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

2 комментария

  1. Привет,
    Спасибо за этот совет, я попробую.

    Мне очень любопытно, поможет ли это мне в том, что Chrome съедает мои 4 ГБ в Ubuntu, теперь на 3,72 ГБ, всего с 3 открытыми вкладками (и ничего больше!).

  2. Мой разработчик 8GB XPS с SSD работал с заметной задержкой мыши (некоторые разработки очень интенсивны). ZSwap значительно улучшил ситуацию.

Комментарии закрыты.