Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini membantu Anda memahami praktik terbaik cache filesystem untuk Azure NetApp Files.
Filesystem cache yang dapat disesuaikan
Anda perlu memahami faktor-faktor berikut tentang penyetelan cache sistem file:
- Mengosongkan buffer kotor membuat data tetap bersih dan dapat dibaca kembali sampai tekanan memori menyebabkan penghapusan.
- Ada tiga pemicu untuk operasi flush asinkron:
- Berbasis waktu: Ketika buffer mencapai usia yang ditentukan oleh penyesuaian ini, buffer harus dibersihkan (yaitu, ditulis ke penyimpanan).
- Tekanan memori: Lihat
vm.dirty_ratio | vm.dirty_bytes
untuk detailnya. - Tutup: Ketika handel file ditutup, semua buffer kotor secara asinkron disiram ke penyimpanan.
Faktor-faktor ini dikendalikan oleh empat parameter. Setiap pengaturan dapat disesuaikan secara dinamis dan berkelanjutan menggunakan tuned
atau sysctl
dalam file /etc/sysctl.conf
. Menyetel variabel ini meningkatkan performa untuk aplikasi.
Nota
Informasi yang dibahas dalam artikel ini terungkap selama latihan validasi SAS GRID dan SAS Viya. Dengan demikian, penyetelan didasarkan pada pelajaran yang dipelajari dari latihan validasi. Banyak aplikasi yang sama-sama mendapat manfaat dari penyetelan parameter ini.
vm.dirty_ratio | vm.dirty_bytes
Kedua penyetelan ini menentukan jumlah RAM yang dibuat dapat digunakan untuk data yang dimodifikasi tetapi belum ditulis ke penyimpanan yang stabil. Apapun penyetelan yang disetel secara otomatis akan mengatur penyetelan lainnya ke nol; RedHat menyarankan untuk tidak mengatur salah satu dari kedua penyetelan tersebut secara manual ke nol. Opsi vm.dirty_ratio
(default dari keduanya) diatur oleh Red Hat ke 20% atau 30% memori fisik, tergantung pada OS, yang merupakan jumlah yang signifikan mengingat penggunaan memori sistem modern. Pertimbangan harus diberikan untuk mengatur vm.dirty_bytes
alih-alih vm.dirty_ratio
untuk pengalaman yang lebih konsisten terlepas dari ukuran memori. Misalnya, pekerjaan yang sedang berlangsung dengan SAS GRID menentukan 30 MiB pengaturan yang sesuai untuk performa beban kerja campuran terbaik secara keseluruhan.
vm.dirty_background_ratio | vm.dirty_background_bytes
Penyetelan ini menentukan titik awal di mana mekanisme write-back Linux mulai membersihkan blok kotor ke penyimpanan yang stabil. Red Hat default ke 10% memori fisik, yang, pada sistem memori besar, adalah sejumlah besar data untuk mulai pembilasan. Dengan SAS GRID sebagai contoh, secara historis rekomendasinya adalah mengatur vm.dirty_background
ke ukuran vm.dirty_ratio
1/5 atau vm.dirty_bytes
. Mempertimbangkan seberapa agresif vm.dirty_bytes
pengaturan diatur untuk SAS GRID, tidak ada nilai spesifik yang ditetapkan di sini.
vm.dirty_expire_centisecs
Penyetelan ini mendefinisikan berapa lama buffer kotor dapat ada sebelum harus ditandai untuk ditulis secara asinkron. Ambil beban kerja CAS SAS Viya, misalnya. Beban kerja sementara yang dominan penulisan menemukan bahwa mengatur nilai ini menjadi 300 sentidetik (3 detik) adalah optimal, dengan 3000 sentidetik (30 detik) sebagai pengaturan default.
SAS Viya berbagi data CAS ke dalam beberapa gugus kecil dari masing-masing beberapa megabyte. Daripada menutup handle file ini setelah menulis data ke setiap shard, handle dibiarkan terbuka dan buffer di dalamnya dipetakan ke memori oleh aplikasi. Tanpa penyelesaian, tidak ada pengosongan cache hingga terjadi tekanan memori atau setelah 30 detik. Menunggu tekanan memori terbukti tidak optimal, begitu juga dengan menunggu kedaluwarsa timer yang lama. Tidak seperti SAS GRID, yang melihat throughput terbaik secara keseluruhan, SAS Viya berusaha untuk mengoptimalkan bandwidth tulis.
vm.dirty_writeback_centisecs
Rangkaian flusher kernel bertanggung jawab untuk menyiram buffer kotor secara asinkron di antara setiap utas flush tidur. Penyetelan ini mendefinisikan jumlah waktu yang dihabiskan untuk tidur di antara pengosongan. Mempertimbangkan nilai 3 detik vm.dirty_expire_centisecs
yang digunakan oleh SAS Viya, SAS mengatur parameter ini dapat disetel ke 100 sentisekon (1 detik) dibandingkan dengan nilai default 500 sentisekon (5 detik) untuk menemukan performa keseluruhan terbaik.
Dampak cache sistem file yang tidak diatur
Ketika Anda mempertimbangkan memori virtual default yang dapat disetel dan jumlah RAM dalam sistem modern, write-back berpotensi memperlambat operasi terikat penyimpanan lainnya dari perspektif klien tertentu yang mendorong beban kerja campuran ini. Gejala berikut mungkin terjadi dari komputer Linux yang belum dioptimalkan, dengan beban tulis tinggi, dan sarat cache.
- Daftar direktori
ls
membutuhkan waktu yang cukup lama sehingga tampak tidak responsif. - Throughput baca terhadap sistem file menurun secara signifikan dibandingkan dengan throughput tulis.
-
nfsiostat
melaporkan latensi tulis dalam detik atau lebih tinggi.
Anda mungkin hanya mengalami perilaku ini ketika komputer Linux yang melakukan beberapa aktivitas kerja tulis-berat campuran. Selain itu, pengalaman berkurang pada semua volume NFS yang terpasang di satu titik akhir penyimpanan. Jika pemasangan berasal dari dua titik akhir atau lebih, hanya volume yang berbagi titik akhir yang menunjukkan perilaku ini.
Mengatur parameter cache sistem file seperti yang dijelaskan di bagian ini telah ditunjukkan untuk mengatasi masalah.
Memantau memori virtual
Untuk memahami apa yang terjadi dengan memori virtual dan write-back, pertimbangkan cuplikan dan output kode berikut. Kotor mewakili jumlah memori kotor dalam sistem, dan tulis balik mewakili jumlah memori yang aktif ditulis ke penyimpanan.
# while true; do echo "###" ;date ; egrep "^Cached:|^Dirty:|^Writeback:|file" /proc/meminfo; sleep 5; done`
Output berikut berasal dari eksperimen di mana rasio vm.dirty_ratio
dan vm.dirty_background
diatur menjadi 2% dan 1% dari memori fisik masing-masing. Dalam hal ini, pembilasan dimulai pada 3,8 GiB, 1% dari sistem memori 384-GiB. Writeback sangat mirip dengan kecepatan tulis ke NFS.
Cons
Dirty: 1174836 kB
Writeback: 4 kB
###
Dirty: 3319540 kB
Writeback: 4 kB
###
Dirty: 3902916 kB <-- Writes to stable storage begins here
Writeback: 72232 kB
###
Dirty: 3131480 kB
Writeback: 1298772 kB
Langkah selanjutnya
- Praktik terbaik untuk direct I/O Linux pada Azure NetApp Files
- Praktik terbaik opsi pemasangan NFS Linux untuk Azure NetApp Files
- Praktik terbaik konkurensi Linux untuk Azure NetApp Files
- Praktik Terbaik Peningkatan Pembacaan Linux NFS
- Praktik terbaik SKU komputer virtual Azure
- Tolok ukur performa untuk Linux