Есть одно наблюдение и один факт:
* наблюдение: большинство советов по настройке подсистемы памяти Linux рекомендуют либо полностью отключить swap, либо установить
vm.swappiness на минимальные значения.* факт: в большинстве случаев по умолчанию swap включен, а
vm.swappiness установлен на 60.Не кажется ли странным такой диссонанс?
# Немного про память
Для начала краткий экскурс в то, как работает память в Linux.
Память делится на страницы, которые бывают двух типов: анонимные и file-backed.
- Анонимные страницы содержат данные, созданные во время работы приложений (например, heap или stack).
- File-backed страницы — это файлы, загруженные с диска и хранящиеся в файловом кеше.
Когда система испытывает дефицит памяти, она решает, какие страницы можно выгрузить, чтобы освободить ресурсы. В этом выборе участвует параметр
vm.swappiness: чем ниже его значение, тем чаще система будет очищать файловый кеш, сохраняя анонимные страницы с более высоким приоритетом.Кстати, swap используется только для анонимных страниц. File-backed данные, находящиеся на диске, можно всегда подгрузить заново.
В итоге, отключение swap или минимальные значения
vm.swappiness позволяют держать в памяти анонимные страницы до последнего, что может приводить к ошибкам OOM.---------------------
Возвращаясь к началу: какие системы пострадают от приоритета анонимных страниц над файловым кешем? Где, по вашему мнению, стоит повысить
vm.swappiness?Давайте обсудим — это интересно!
P. S. поддержать лайком на Linkedin