Начиная с версии ядра 2.6.28, Linux использует стратегию замены страницы Split Least недавно Used (LRU). Страницы с источником файловой системы, такие как текст программы или общие библиотеки, принадлежат кешу файлов. Страницы без поддержки файловой системы называются анонимными страницами и состоят из данных времени выполнения, таких как пространство стека, зарезервированное для приложений и т. Д. Как правило, страницы, принадлежащие файловому кешу, дешевле извлечь из памяти (так как при необходимости их можно просто прочитать с диска) , Поскольку у анонимных страниц нет резервной копии файловой системы, они должны оставаться в памяти до тех пор, пока они нужны программе, если только для этого не предусмотрено место подкачки.
vm.swappiness
Вариант вступает в игру в get_scan_count()
определенном в mm/vmscan.c
. get_scan_count()
определяет, насколько настойчиво нужно сканировать анонимные и файловые списки LRU при поиске страниц для выселения. Значение каждого случая определяется плавающей средней недавно повернутых и недавно отсканированных соотношений, где более свежие ссылки имеют больший вес, чем более старые, чтобы учитывать изменяющуюся рабочую нагрузку системы.
Это vm.swappiness
модификатор, который изменяет баланс между заменой страниц файлового кэша в пользу анонимных страниц. vm.swappiness
является значением приоритета для анонимных страниц, по умолчанию установлено значение 60 . Файловому кешу присваивается значение приоритета 200, из которого vm.swappiness
вычитается модификатор ( file_prio=200-anon_prio
). Это означает, что по умолчанию веса приоритетов стоят умеренно в пользу анонимных страниц ( anon_prio=60
, file_prio=200-60=140
). Однако, когда система близка к состоянию нехватки памяти , списки как анонимного, так и файлового LRU сканируются одинаково, если только vm.swappiness
не установлено нулевое значение.
Когда vm.swappiness
установлено значение 100, приоритеты будут равны ( anon_prio=100
, file_prio=200-100=100
). Установка vm.swappiness
в ноль предотвратит удаление ядром анонимных страниц в пользу страниц из файлового кэша.