Sejak kernel 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.
Ini adalah kesalahpahaman umum bahwa partisi swap entah bagaimana akan memperlambat sistem Anda. Tidak memiliki partisi swap tidak berarti bahwa kernel tidak akan mengusir halaman dari memori, itu hanya berarti bahwa kernel memiliki lebih sedikit pilihan dalam hal halaman mana yang akan diusir. Jumlah swap yang tersedia tidak akan mempengaruhi seberapa banyak swap digunakan.
Linux dapat mengatasi ketiadaan ruang swap karena, secara default, kebijakan akunting memori kernel mungkin membuat terlalu banyak memori . Kelemahannya adalah ketika kehabisan memori fisik, dan kernel tidak dapat menukar halaman anonim ke disk, mekanisme pembunuh-kehabisan memori (pembunuh-OOM) akan mulai membunuh proses "nakal" yang memonopoli memori untuk membebaskan memori untuk proses lainnya.
The vm.swappiness
pilihan adalah pengubah yang mengubah keseimbangan antara menukar halaman cache file mendukung halaman anonim. Cache file diberi nilai prioritas arbitrer 200 dari mana vm.swappiness
pengubah dikurangi ( file_prio=200-vm.swappiness
). Halaman anonim, secara default, mulai dengan 60 ( anon_prio=vm.swappiness
). Ini berarti bahwa, secara default, bobot prioritas cukup mendukung halaman anonim ( anon_prio=60
, file_prio=200-60=140
). Perilaku didefinisikan di mm/vmscan.c
dalam pohon sumber kernel.
Diberikan salah vm.swappiness
satu 100
, prioritas akan sama ( file_prio=200-100=100
, anon_prio=100
). Ini masuk akal untuk sistem berat I / O jika tidak ingin halaman dari file cache digusur demi halaman anonim.
Pengaturan sebaliknya vm.swappiness
untuk 0
akan mencegah kernel mengusir halaman anonim demi halaman dari cache file. Ini mungkin berguna jika program melakukan sebagian besar caching mereka sendiri, yang mungkin terjadi pada beberapa database. Dalam sistem desktop ini mungkin meningkatkan interaktivitas, tetapi downside adalah bahwa kinerja I / O kemungkinan akan terkena dampak.
Nilai default kemungkinan besar dipilih sebagai perkiraan jalan tengah antara dua ekstrem ini. Seperti halnya parameter kinerja apa pun, penyesuaian vm.swappiness
harus didasarkan pada data tolok ukur yang sebanding dengan beban kerja nyata, bukan sekadar perasaan.