Çekirdek 2.6.28 sürümünden bu yana, Linux bir Son Kullanılanlar Bölünmüş (LRU) sayfa değiştirme stratejisini kullanır. Program metni veya paylaşılan kütüphaneler gibi bir dosya sistemi kaynağına sahip sayfalar, dosya önbelleğine aittir. Dosya sistemi desteği olmayan sayfalara anonim sayfalar adı verilir ve uygulamalar vb. İçin ayrılmış yığın alanı gibi çalışma zamanı verilerinden oluşur. . Anonim sayfalarda dosya sistemi desteği bulunmadığından, depolanacak takas alanı olmadığı sürece, bir program tarafından ihtiyaç duyulduğu sürece bellekte kalmaları gerekir.
vm.swappiness
Seçeneğini devreye giriyor get_scan_count()
tanımlanan mm/vmscan.c
. get_scan_count()
Anonim ve dosya LRU listelerinin ne kadar agresif bir biçimde taranacak sayfaları ararken taranması gerektiğini belirler. Her bir vakanın değeri, sistemin değişen iş yükünü hesaba katmak için daha yeni referansların daha eski referanslardan daha fazla ağırlığa sahip olduğu yakın zamanda döndürülmüş ve yakın zamanda taranmış oranların değişken ortalaması ile belirlenir.
Bu vm.swappiness
, dosya önbellek sayfalarının anonim sayfaların lehine değiştirilmesi arasındaki dengeyi değiştiren bir değiştiricidir. vm.swappiness
isimsiz sayfalara verilen, varsayılan olarak 60 olarak ayarlanan öncelik değeridir . Dosya önbelleğine, vm.swappiness
değiştiricinin çıkarıldığı ( file_prio=200-anon_prio
) değerinden 200 öncelik değeri verilir . Bu, varsayılan olarak, öncelik ağırlıklarının adsız sayfaların ( anon_prio=60
, file_prio=200-60=140
) lehine ılımlı durduğu anlamına gelir . Ancak, sistem belleği yetersiz duruma yakın olduğunda, hem adsız hem de dosya LRU listeleri vm.swappiness
sıfıra ayarlanmadıkça eşit olarak taranır .
Tüm vm.swappiness
100'e ayarlanır, öncelikler (eşit olur anon_prio=100
, file_prio=200-100=100
). vm.swappiness
Sıfıra ayarlamak , çekirdeğin, dosya önbelleğindeki sayfalar lehine anonim sayfalar çıkarmasını önler.