Sejak kernel versi 2.6.28, Linux menggunakan strategi penggantian halaman Split Least Recent Used (LRU). Halaman dengan sumber sistem file, seperti teks program atau pustaka bersama milik cache file. Halaman tanpa dukungan filesystem disebut halaman anonim, dan terdiri dari data runtime seperti ruang stack yang disediakan untuk aplikasi, dll. Biasanya halaman yang termasuk dalam cache file lebih murah untuk diusir dari memori (karena ini dapat dengan mudah dibaca kembali dari disk bila diperlukan) . Karena halaman anonim tidak memiliki dukungan sistem file, mereka harus tetap dalam memori selama mereka diperlukan oleh suatu program kecuali ada ruang swap untuk menyimpannya.
The vm.swappiness
pilihan datang ke dalam bermain di get_scan_count()
didefinisikan dalam mm/vmscan.c
. get_scan_count()
menentukan seberapa agresif daftar anonim dan file LRU harus dipindai ketika mencari halaman untuk diusir. Nilai setiap kasus ditentukan oleh rata-rata mengambang dari rasio yang baru-baru ini diputar dan dipindai di mana referensi yang lebih baru memiliki bobot lebih dari yang lebih tua untuk memperhitungkan perubahan beban kerja sistem.
Ini vm.swappiness
adalah pengubah yang mengubah keseimbangan antara bertukar halaman cache file yang mendukung halaman anonim. vm.swappiness
adalah nilai prioritas yang diberikan ke halaman anonim, secara default diatur ke 60 . Cache file diberi nilai prioritas 200 dari mana vm.swappiness
modifier dikurangi ( file_prio=200-anon_prio
). Ini berarti bahwa, secara default, bobot prioritas cukup mendukung halaman anonim ( anon_prio=60
, file_prio=200-60=140
). Namun, ketika sistem dekat dengan kondisi kehabisan memori , daftar LRU anonim dan file dipindai sama, kecuali vm.swappiness
diatur ke nol.
Ketika vm.swappiness
diatur ke 100, prioritasnya akan sama ( anon_prio=100
, file_prio=200-100=100
). Pengaturan vm.swappiness
ke nol akan mencegah kernel mengusir halaman anonim demi halaman dari cache file.