Kinerja Raspberry Pi: tambahkan ZRAM dan ubah parameter kernel

Beberapa minggu yang lalu, saya menerbitkan ulasan tentang Pinebook Pro . Karena Raspberry Pi 4 juga didasarkan pada ARM, beberapa optimasi yang disebutkan dalam artikel sebelumnya cukup cocok untuk itu. Saya ingin berbagi trik ini dan mencari tahu apakah Anda memiliki peningkatan kinerja yang sama.

Setelah menginstal Raspberry Pi di ruang server rumah saya , saya perhatikan bahwa pada saat kekurangan RAM, itu menjadi sangat tidak responsif dan bahkan digantung. Untuk mengatasi masalah ini, saya menambahkan ZRAM dan membuat beberapa perubahan pada parameter kernel.

Aktivasi ZRAM pada Raspberry Pi




ZRAM membuat penyimpanan blok dalam RAM dengan nama / dev / zram0 (atau 1, 2, 3, dll.). Halaman yang direkam di sana dikompres dan disimpan dalam memori. Ini memungkinkan untuk I / O yang sangat cepat, dan juga membebaskan memori karena kompresi.

Raspberry Pi 4 hadir dengan 1, 2, 4, atau 8 GB RAM. Saya akan menggunakan model 1 GB, jadi sesuaikan instruksi tergantung pada model Anda. Dengan 1 GB ZRAM, file swap default (lambat!) Akan lebih jarang digunakan. Saya menggunakan skrip zram-swap untuk instalasi dan konfigurasi otomatis.

Instruksi disediakan di repositori di tautan di atas. Instalasi:

git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh

Jika Anda ingin mengedit konfigurasi:

vi /etc/default/zram-swap

Selain itu, Anda dapat mengaktifkan ZRAM dengan menginstal zram-tools. Jika Anda menggunakan metode ini, pastikan untuk mengedit konfigurasi dalam file /etc/default/zramswap, dan instal sekitar 1 GB ZRAM:

sudo apt install zram-tools

Setelah instalasi, Anda dapat melihat statistik repositori ZRAM dengan perintah berikut:

sudo cat /proc/swaps
Filename				Type		Size	Used	Priority
/var/swap                               file		102396	0	-2
/dev/zram0                              partition	1185368	265472	5
pi@raspberrypi:~ $

Menambahkan parameter kernel untuk penggunaan ZRAM yang lebih baik


Sekarang perbaiki perilaku sistem ketika Raspberry Pi beralih untuk bertukar pada saat terakhir, yang sering menyebabkan macet. Tambahkan beberapa baris ke file /etc/sysctl.conf dan reboot.

Baris-baris ini 1) menunda kehabisan memori yang tak terhindarkan , meningkatkan tekanan pada cache kernel, dan 2) sebelumnya mulai bersiap-siap untuk kehabisan memori , memulai swap terlebih dahulu. Tetapi itu akan menjadi pertukaran memori terkompresi yang jauh lebih efisien melalui ZRAM!

Inilah baris-baris yang harus ditambahkan di akhir file /etc/sysctl.conf :

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

Kemudian kita reboot sistem atau mengaktifkan suntingan dengan perintah berikut:

sudo sysctl --system

vm.vfs_cache_pressure = 500 meningkatkan tekanan pada cache, yang meningkatkan kecenderungan kernel untuk merebut kembali memori yang digunakan untuk cache objek direktori dan indeks. Anda akan menggunakan lebih sedikit memori untuk periode waktu yang lebih lama. Penurunan tajam dalam produktivitas dibatalkan oleh pertukaran sebelumnya.

vm.swappiness = 100 meningkatkan parameter seberapa agresif kernel akan bertukar halaman memori, karena kami menggunakan ZRAM terlebih dahulu.

vm.dirty_background_ratio = 1 & vm.dirty_ratio = 50 - proses latar belakang akan mulai merekam segera setelah mencapai batas 1%, tetapi sistem tidak akan memaksakan I / O sinkron hingga mencapai dirty_ratio 50%.

Keempat baris ini (ketika digunakan dengan ZRAM) akan membantu meningkatkan kinerja jika Anda pasti kehabisan RAM dan mulai beralih untuk bertukar, seperti milik saya. Mengetahui fakta ini, serta memperhitungkan kompresi memori akun di ZRAM, tiga kali lebih baik untuk memulai swap ini terlebih dahulu.

Tekanan pada cache membantu karena kami benar-benar memberi tahu kernel: "Hei, dengar, saya tidak punya memori tambahan untuk digunakan untuk cache, jadi tolong singkirkan secepatnya dan simpan hanya data yang paling sering digunakan / penting."

Bahkan dengan pengurangan caching, jika seiring waktu sebagian besar memori yang dipasang ditempati, kernel akan memulai swap oportunistik jauh lebih awal, sehingga prosesor (kompresi) dan swap I / O tidak akan menarik ke yang terakhir dan menggunakan semua sumber daya sekaligus, ketika sudah terlambat. ZRAM menggunakan sedikit CPU untuk kompresi, tetapi pada kebanyakan sistem dengan jumlah memori yang kecil, ini mempengaruhi kinerja jauh lebih sedikit daripada swap tanpa ZRAM.

Akhirnya


Mari kita lihat hasilnya lagi:

pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 1185368 264448 5

264448 di ZRAM hampir satu gigabyte data yang tidak terkompresi. Semuanya berjalan ke ZRAM dan tidak ada yang masuk ke file swap yang jauh lebih lambat. Coba pengaturan ini sendiri, mereka bekerja pada semua model Raspberry Pi. Sistem pembekuan saya yang tidak sesuai telah berubah menjadi sistem yang bisa diterapkan dan stabil.

Dalam waktu dekat, saya berharap untuk melanjutkan dan memperbarui artikel ini dengan beberapa hasil pengujian sistem sebelum dan sesudah menginstal ZRAM. Sekarang saya tidak punya waktu untuk ini. Sementara itu, jangan ragu untuk menjalankan tes Anda sendiri dan beri tahu kami di komentar. Raspberry Pi 4 hanyalah binatang buas dengan pengaturan seperti itu. Bersenang senang lah!

Pada topik ini:

All Articles