Saya menggunakan zram di komputer saya sebagai swap yang didukung RAM terkompresi. Ketika sistem perlu menukar sesuatu, menukarnya dengan file swap yang didukung zram kurang lebih sama dengan mengompresi data dalam memori untuk membebaskan ruang. Ini membuat swapping sangat cepat sebagian besar waktu, relatif terhadap swap yang didukung disk. Karena itu, saya bertanya-tanya apakah ada beberapa kinerja yang dapat diperoleh dengan mendorong sistem untuk menukar hal-hal yang tidak terpakai secara lebih agresif, karena dapat melakukannya tanpa benar-benar memukul disk?
Jadi, apakah ada yang mengacau, misalnya, mengatur vm.swappiness
ke 100 saat menggunakan zram? Apakah ini diinginkan?
sysctl -w vm.swappiness=100
Jawaban:
Saya benar-benar tidak akan merekomendasikan untuk menempatkan swappiness lebih tinggi. Mekanisme umum dalam kernel adalah ia akan meletakkan halaman (potongan memori) dalam swap untuk membebaskan sebagian memori untuk tugas-tugas lain yang sedang berjalan.
"Masalah" pertama ketika kernel ingin n halaman dibebaskan, m (dengan m <n, m adalah jumlah halaman terkompresi yang diperlukan untuk menahan n) baru dibuat dalam RAM, saya tidak yakin apakah itu dapat mengganggu kernel atau tidak.
Kemudian, ketika Anda memiliki halaman di swap, ada kemungkinan bahwa Anda menggunakan aplikasi nanti dengan beberapa halamannya di swap. Apa yang dilakukan kernel adalah mengembalikan halaman-halaman tersebut ke dalam memori fisik tetapi tidak menghapusnya dari swap (yang dengan swap standar dapat dilihat sebagai caching , jadi ketika aplikasi kembali di latar belakang, kernel tidak harus menulis kembali halaman-halaman tersebut ke dalam swap lambat). Namun dengan zram itu mungkin bukan trik yang bijaksana, karena Anda kemudian memiliki dalam memori halaman m di zram + halaman yang kembali dalam memori!
Kernel biasanya memiliki "total memori" yang dapat digunakan untuk menjalankan bisnisnya. Ketika Anda menambahkan zram, itu hanya dihitung dalam memori "swap", seperti pada swap berbasis disk apa pun, tetapi mengurangi "total memori" aktual dan yang tidak diharapkan / diantisipasi oleh kernel. Kadang-kadang Anda dapat memiliki perilaku aneh dan tidak diinginkan karena ini!
Dengan zram, alangkah baiknya jika kernel tidak bertukar terlalu banyak ke area ini ketika berada di bawah tekanan memori. Dan Anda harus selalu memiliki partisi swap hard disk nyata lebih besar setidaknya dari ukuran maksimum zram Anda, sehingga sistem tidak akan mendapatkan OOM sedangkan pada saat yang sama Anda akan melihat banyak ruang kosong seperti yang dilaporkan oleh
free
!sumber
Jawaban singkat:
vm.swappiness=100
adalah nilai yang sesuai untuk zram (Setidaknya di Debian Stretch dengan Linux 4.9, saya percaya itu adalah nilai terbaik)Saya sudah menguji
vm.swappiness=100
untuk saya.Saya pikir Anda dapat melakukan beberapa tes sederhana untuk memastikan nilai mana yang terbaik untuk Anda.
Saya juga membuat program sederhana untuk menguji pertanyaan ini. x Pada mesin saya nilai yang sangat rendah
vm.swappiness
(sepertivm.swappiness=1
) akan menyebabkan masalah responsif yang jelas.Tentang
SwapCached
di/proc/meminfo
:Pertama, coba
vm.page-cluster=0
, ini mungkin dapat mengurangi beberapa yang tidak bergunaSwapCached
dari swap-in.SwapCached dapat mempercepat zram sama dengan perangkat swap non-zram
SwapCached
adalah dapat digunakan kembali (gratis) bila perlu:sumber
Halaman perlu ditukar (ke disk) saat memori penuh. Jika Anda menggunakan memori untuk membuat tempat untuk menukar halaman ketika memori penuh, orang akan berpikir itu mengalahkan tujuannya, kecuali jika kompresi membuat perbedaan (dan kemudian akan wajar untuk memampatkan memori secara langsung daripada melalui menukar). Kira kita harus membandingkan ini, karena komputer semakin cepat dalam mengompresi dan mendekompresi dibandingkan dengan kecepatan memori.
sumber
vm.swappiness
nilainya disetel untuk swap yang didukung disk dan apakah saya harus mengubahnya jika sebagian besar saya akan menggunakan swap yang didukung zram.