В комментариях под предыдущим постом зашла речь о ситуации, когда начинается неразумное использование файла подкачки (SWAP-файла), которое приводит к тому, что пользователи древних и слабых устройств начинают испытывать проблемы. Речь шла про Ubuntu и Linux Mint, но не ошибусь, если скажу, что проблема наблюдается везде, где имеется файл подкачки.
Мы не будем углубляться в извечные споры о том, нужен ли SWAP-файл в Linux, а если нужен, то в каком объеме. Просто остановимся на том моменте, что он есть. Пользователь его создал и в определенные моменты из-за его наличия дистрибутив начинает работать медленно, место на жестком диске уменьшается и при этом, как говорят некоторые люди в интернетах, может увеличиться скорость износа HDD или SSD. Отказаться от файла подкачки пользователь не может, поэтому поговорим про ограничение его использования в дистрибутивах Linux.
Что такое SWAP-файл или файл подкачки?
Файл подкачки - это дополнительная память для компьютера, которая используется в случае нехватки оперативной памяти. Оперативная память временно хранит данные для быстрой обработки процессором, но когда ее объем оказывается недостаточным, компьютеру нужно найти другой способ сохранить данные, чтобы не зависнуть.
Файл подкачки можно рассматривать как расширение оперативной памяти или ее продолжение. Однако его использование не может полностью заменить оперативную память, поскольку скорость доступа к данным на жестком диске, используемом для файла подкачки, значительно ниже, чем скорость оперативной памяти. Чтение, загрузка и поиск данных на жестком диске происходят медленнее, что ограничивает пропускную способность файла подкачки.
Принцип работы файла подкачки
Принцип работы файла подкачки направлен на снятие нагрузки с оперативной памяти. Если одновременно запустить множество программ, которые сильно нагружают оперативную память (RAM), то часть этих программ будет неактивна и их данные будут выгружаться в менее быстрое хранилище, а именно в файл подкачки. В то же время данные активных программ, таких как текущая игра, будут храниться непосредственно в оперативной памяти.
Когда вы снова обратитесь к неактивной программе, данные из файла подкачки будут перемещены обратно в оперативную память, чтобы ускорить их обработку. В общих чертах это выглядит так.
При острой нехватке памяти в системе файл подкачки используется напрямую, и в него выгружаются данные активных программ. Если файл подкачки отсутствует или слишком мал, возникает множество проблем, начиная с сообщений об отсутствии памяти и заканчивая сбоями программ и самой системы.
SWAP-файл в Linux-дистрибутивах
Думаю, что если вы знаете, что такое SWAP-файл, то уверены, что в вашем дистрибутиве он имеется. Тем не менее, расскажу про три способа проверить объем его использования.
Часто в комментариях меня упрекают в том, что я использую терминал там, где можно использовать графический интерфейс, мол так удобнее и практичнее. Мне, честно говоря, по боку такие комментарии и претензии, поэтому первый способ проверки использования файла подкачки состоит в использовании команды free, про которую мы говорили в статье про способ мониторинга оперативной памяти. Открываем терминал и вводим туда free -h
С ключом -h команда free отображает использование памяти и подкачки в понятном для человека виде.
На основном дистрибутиве Manjaro KDE Plasma файл подкачки отсутствует, поэтому там где написано Swap стоят 0. В Linux Mint 21, которая установлена на виртуальной машине SWAP-файл включен и составляет 1.8 гигабайт.
Второй способ проверки: использование команды swapon -s, которая покажет есть ли файл подкачки и каков его объем.
Опять-таки, так как в Manjaro файла подкачки нет, то выхлоп команды пустой, в отличие от Linux Mint, где файл создан.
Ну, и наконец, удовлетворим любителей GUI-шек, рассказав про то, что посмотреть использование файла подкачки можно при помощи системного монитора в любом дистрибутиве Linux.
Так как на основном дистрибутиве у меня нет файла подкачки, то все дальнейшие действия и объяснения буду проводить в разрезе Linux Mint, установленной на виртуальной машине.
Параметр vm.swappiness и настройка swappiness
В дистрибутивах Linux можно указать, с какой вероятностью информация будет попадать в SWAP-файл. За это отвечает параметр vm.swappiness. Он изменяется в диапазоне от 5 до 95 (можно задать и другие значения, но они будут тот же эффект, что и эти предельные). Если говорить грубо, это соответсвует 5% и 95%-тной вероятности попадения данных в swap.
Чаще всего, значение vm.swappiness в дистрибутивах Linux составляет 60. Проверить значение для вашей системы можно при помощи команды cat /proc/sys/vm/swappiness.
Значение 60 хорошо работает для серверных устройств, но не подходит для пользовательских компьютеров и ноутбуков. Если обобщить рекомендации по значению vm.swappiness, то большинство пользователей сходятся во мнений, что если у вас 1 и более гигабайт оперативной памяти, то лучше выставить значение 10, если менее 1 гигабайта, то значение 1. В случае с Linux Mint на виртуальной машине 4 гигабайта оперативной памяти, поэтому выберем значение равное 10. Чтобы изменить значение vm.swappiness нужно открыть в консольном текстовом редакторе с правами суперпользователя файл, находящийся по пути /etc/sysctl.conf:
sudo nano /etc/sysctl.conf
Проматываем файл до конца и вставляем туда строку:
vm.swappiness=10
Сохраняем изменения (Ctrl + O) и закрываем файл (Ctrl + X). Теперь можно перезагрузить компьютер, чтобы изменения вступили в силу или применить их сразу, но к текущей сессии. Для второго варианта введите в терминале команду
sudo sysctl -p
Теперь, если повторить ввод команды cat /proc/sys/vm/swappiness, то значение в выхлопе будет соответствовать тому, которое мы установили.
Сразу хочу отметить, что vm.swappiness означает именно ВЕРОЯТНОСТЬ попадания информации в SWAP-файл, а не процент оперативной памяти, после которого начинается использование файла подкачки. Полностью запретить использование SWAP-файла таким способом НЕЛЬЗЯ. Чтобы файл подкачки не использовался его либо не нужно создавать сразу, либо отключить и удалить после создания. Если стало интересно то, как отключить файл подкачки, то напишите об этом в комментариях и я расскажу про это в следующей заметке.
Подведем итоги
Указанный в статье способ подойдет владельцам слабых и устаревших устройств, которые испытывают проблемы при чрезмерной прожорливости файла подкачки. В ситуации, когда отказаться от SWAP-файла нельзя, думаю, описанный способ очень даже выручит.
Также постарался, что называется, на пальцах, объяснить что такое файл подкачки и для чего он нужен. Я не компьютерный профи, поэтому объяснил так, как понимаю сам, надеюсь объяснение получилось простым и понятным.