Per dokumentasi kernel:
This control is used to define how aggressive the kernel will swap
memory pages. Higher values will increase aggressiveness, lower values
decrease the amount of swap.
Namun ini agak kabur. Saya mencoba mencari tahu apa yang akhirnya dikendalikan parameter. Saya tahu ini menyesuaikan seberapa agresif kernel mencoba untuk menukar halaman, tetapi proses pengambilan keputusan apa dalam kode kernel yang mempengaruhi?
Apakah ini menyesuaikan berapa lama suatu halaman harus diakses sebelum kernel menukarnya? Jika demikian, apa yang diwakili oleh nilai default 60? Dan berapa banyak yang diubah dengan kenaikan / penurunan 1 (formula akan menyenangkan)?
Atau apakah itu bertukar halaman berdasarkan frekuensi aksesnya?
Atau sesuatu yang lain?
Jawaban:
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 diget_scan_count()
didefinisikan dalammm/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 manavm.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, kecualivm.swappiness
diatur ke nol.Ketika
vm.swappiness
diatur ke 100, prioritasnya akan sama (anon_prio=100
,file_prio=200-100=100
). Pengaturanvm.swappiness
ke nol akan mencegah kernel mengusir halaman anonim demi halaman dari cache file.sumber
Ada rumus yang digunakan untuk menghitung halaman apa yang akan ditukar. Dalam
vmscan.c
Anda dapat melihat algoritma ini:Di sini Anda dapat melihat bahwa swappiness adalah skala, yang ditambahkan dalam beberapa algoritma dan Anda dapat mengontrol dengan parameter ini bagaimana kernel akan berperilaku ketika harus bertukar. Anda dapat memperkirakannya sebagai persentase probabilitas, bahwa beberapa halaman memori yang tidak aktif akan ditukar. Jika Anda menetapkan swappiness ke 100, tidak ada kemungkinan, tetapi ada jaminan bahwa swap akan bertukar dan jika Anda menetapkan ke 0, kernel akan mencoba untuk tidak menukar sama sekali selama memiliki memori kosong.
sumber
Telah dikatakan (saya pikir Norman 1986) bahwa sering kali tombol "TUTUP PINTU" dalam lift rusak atau tidak pernah terhubung ke apa pun sejak awal. Ini membuat kontrol ersatz bukan cara memanipulasi lift tetapi menenangkan pengendara yang tergesa-gesa.
Dengan cara yang sama, swappiness memiliki efek yang tidak terkait dengan kontrol deterministik kernel yang terdefinisi dengan baik. Seperti yang dicatat oleh @neon_overlord di askubuntu.com
Jadi apa yang sebenarnya dikontrolnya? Satu jawaban yang valid - selain jawaban bagus yang sudah disediakan - adalah bahwa ia memodifikasi harapan Anda bahwa Anda memiliki kontrol lebih besar atas sistem Anda dan bahwa memutar-mutar sebuah tombol akan memungkinkan Anda untuk menggunakan kontrol itu dengan cara yang bermakna.
sumber