Что такое Swappiness в Linux? (и как это изменить)

20.09.2018 Железо Комментировать Задать вопрос Написать пост

Что такое файл подкачки

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

Так система может освобождать оперативную память для более срочных системных задач, выгружаемые в файл подкачки данные вызываются быстрее, чем полностью выгруженные из ОЗУ. При этом объем оперативной памяти на компьютере фактически увеличивается за счет постоянной памяти.

Что такое файл подкачки

Разумеется, работает файл подкачки медленнее, чем оперативная память. Скорость его работы ограничена скоростью работы накопителя.

Большинство пользователей Windows-компьютеров со стажем помнит, как сразу же после переустановки ОС настраивался размер файла подкачки. Ведь оперативная память в то время была сильно дороже HDD а, чтобы система не тормозил и позволяла играть в игры с лучшими настройками, приходилось сильно увеличивать файл подкачки.

Настройка размера кэша памяти

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

За это отвечает файл /proc/sys/vm/vfs_cache_pressure. Он содержит относительный показатель, насколько агрессивно нужно удалять страницы из кэша. По умолчанию установлен параметр 100. Если его уменьшить ядро будет реже удалять страницы и это приведет к очень быстрому увеличению кэша. При нуле страницы вообще не будут удаляться. Если значение больше 100, размер кэша будет увеличиваться медленнее и неиспользуемые страницы будут сразу удаляться.

Например, сделаем минимальный размер кэша:

echo 1000 > /proc/sys/vm/vfs_cache_pressure

Не забудьте, что это очень сильно снизит производительность вашей системы, потому что вместо кэша данные будут читаться из диска.

Очистка при помощи «Диспетчера задач» Windows

У операционной системы Windows есть такой замечательный компонент, как «Диспетчер задач», который позволяет управлять работой ОС. Также он умеет мониторить общее состояние памяти. По его показателям можно понять, что нагрузка на RAM достигла критической массы.

Очистка при помощи «Диспетчера задач» Windows

Более того, «Диспетчер задач» позволяет очистить оперативную память в пару кликов. И это не может не радовать. Пользоваться этим компонентом очень просто. Для очистки памяти нужно выполнить следующие действия.

1. Кликаем правой кнопкой мыши по значку «Пуск» и в контекстном меню выбираем «Диспетчер задач».

Очистка при помощи «Диспетчера задач» Windows

2. В главном окне компонента щелкаем на категорию «Память». Это действие отсортирует процессы по степени загрузки оперативной памяти компьютера или ноутбука.

3. Теперь кликаем по самым ресурсоемким процессам правой кнопкой мыши и выбираем «Снять задачу». Это действие выгружает процессы из RAM.

Очистка при помощи «Диспетчера задач» Windows

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

Рекомендации по замене Linux

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

  • Если вы хотите перевести свой компьютер в спящий режим , у вас должен быть раздел подкачки. Размер этого раздела должен соответствовать размеру вашей установленной памяти плюс дополнительные 10-25%, чтобы оставить место для любых элементов, которые уже были перемещены в раздел подкачки.
  • Просто хотите немного повысить производительность (а у вас есть жесткий диск со скоростью не менее 7200 об / мин)? Затем вы можете добавить раздел подкачки, если хотите. Его размер может быть любым, но я бы не стал делать его больше, чем если бы вы создавали раздел подкачки для включения гибернации.
  • Если вы время от времени используете тяжелые приложения, которым требуется дополнительная оперативная память, раздел подкачки может вам помочь. В этом случае вам не нужно, чтобы размер раздела подкачки равнялся размеру вашей оперативной памяти.
  • Если у вас жесткий диск со скоростью вращения 5400 об / мин, возможно, вы не захотите создавать раздел подкачки просто потому, что узкое место может ухудшить состояние вашего компьютера. Но если вы абсолютно хотите иметь свопинг, вы все равно можете создать раздел, используя те же рекомендации по размеру, указанные выше. Только не забудьте изменить значение подкачки на что-то намного меньшее.
Читайте также:  Популярные графические оболочки Linux — ТОП 7

Золотое сечение

Страницы файлов содержат данные, которые можно легко извлечь, если освободить эту память. Linux может просто прочитать файл снова. Как мы уже видели, если данные файла были изменены в оперативной памяти, эти изменения должны быть записаны в файл, прежде чем страница файла может быть освобождена. Но, так или иначе, файловая страница в оперативной памяти может быть переполнена чтением данных из файла. Так зачем добавлять эти страницы в раздел подкачки или файл подкачки? Если вам снова понадобятся эти данные, вы можете также прочитать их обратно из исходного файла вместо избыточной копии в пространстве подкачки. Таким образом, страницы файла не хранятся в разделе подкачки. Они «хранятся» обратно в исходном файле.

С анонимными страницами нет никакого основного файла, связанного со значениями в памяти. Значения на этих страницах были получены динамически. Вы не можете просто прочитать их обратно из файла. Единственный способ восстановить анонимные значения памяти страницы — это сохранить данные где-нибудь до освобождения памяти. И это то, что держит своп. Анонимные страницы, на которые вы будете ссылаться снова.

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

Как видно из последнего фрагмента кода, есть две переменные. Один называется file_prio для «приоритет файла», а другой называется anon_prio для «приоритет анонимный».

  • Переменная anon_prio установлена ​​в значение подкачки Linux.
  • Значение file_prio установлено на 200 минус значение anon_prio .

Эти переменные содержат значения, которые работают в тандеме. Если они оба установлены на 100, они равны. Для любых других значений anon_prio уменьшится со 100 до 0, а file_prio увеличится со 100 до 200. Два значения file_prio в сложный алгоритм, который определяет, работает ли ядро ​​Linux с предпочтением восстановления (освобождения) файловых страниц или анонимным страницы.

Вы можете думать о file_prio как о готовности системы освободить файловые страницы, а о anon_prio — о готовности системы освободить анонимные страницы. Чего эти значения не делают, так это устанавливают какой-либо триггер или порог, когда будет использоваться своп. Это решено в другом месте.

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