Saya mengalami masalah throughput maksimum di sini dan butuh saran tentang cara mengatur tombol-tombol saya. Kami sedang menjalankan server file 10Gbit untuk distribusi cadangan. Ini adalah pengaturan dua disk S-ATA2 pada LSI MegaRAID Controller. Server juga mendapat 24gig memori.
Kami harus mencerminkan cadangan yang terakhir kami unggah dengan throughput maksimum.
RAID0 untuk cadangan "panas" kami memberi kami sekitar 260 MB / detik tulis dan 275 MB / detik dibaca. Tmpfs yang diuji dengan ukuran 20GB memberi kita sekitar 1GB / detik. Jenis throughput inilah yang kami butuhkan.
Sekarang bagaimana saya bisa menyetel subsistem memori virtual Linux untuk men-cache file yang terakhir diunggah selama mungkin dalam memori tanpa menuliskannya ke disk (atau bahkan lebih baik: menulis ke disk DAN menyimpannya dalam memori)?
Saya mengatur sysctl berikut, tetapi mereka tidak memberi kami throughput yang kami harapkan:
# VM pressure fixes
vm.swappiness = 20
vm.dirty_ratio = 70
vm.dirty_background_ratio = 30
vm.dirty_writeback_centisecs = 60000
Ini seharusnya secara teori memberi kita 16GB untuk caching I / O dan tunggu beberapa menit sampai tulisannya di disk. Masih ketika saya melakukan benchmark server saya tidak melihat efek pada penulisan, throughput tidak meningkat.
Dibutuhkan bantuan atau saran.
Jawaban:
Dengan melihat variabel-variabel yang telah Anda tetapkan, sepertinya Anda lebih mementingkan kinerja penulisan dan tidak peduli dengan kemungkinan hilangnya data karena pemadaman listrik.
Anda hanya akan mendapatkan opsi untuk penulisan malas dan penggunaan cache writeback dengan operasi penulisan asinkron. Operasi penulisan sinkron memerlukan komit ke disk dan tidak akan menjadi malas-ditulis - selamanya. Sistem file Anda mungkin sering menyebabkan flush halaman dan penulisan sinkron (biasanya karena penjurnalan, terutama dengan ext3 dalam data = mode jurnal). Selain itu, bahkan flushes halaman "latar belakang" akan mengganggu pembacaan yang tidak tersimpan dan penulisan yang sinkron , sehingga memperlambatnya.
Secara umum, Anda harus mengambil beberapa metrik untuk melihat apa yang terjadi - apakah Anda melihat proses penyalinan Anda dimasukkan ke dalam status "D" menunggu pekerjaan I / O dilakukan oleh pdflush? Apakah Anda melihat aktivitas penulisan sinkron berat pada disk Anda?
Jika semuanya gagal, Anda dapat memilih untuk membuat sistem file tmpfs eksplisit tempat Anda menyalin cadangan Anda dan hanya menyinkronkan data dengan disk Anda setelah fakta - bahkan secara otomatis menggunakan inotify
Untuk membaca cache, hal-hal secara signifikan lebih mudah - ada
fadvise
utilitas fcoretools yang memiliki--willneed
parameter untuk menyarankan kernel untuk memuat konten file ke dalam cache buffer.Edit:
Ini tidak akan sangat mempengaruhi skenario pengujian Anda, tetapi ada kesalahpahaman dalam pemahaman Anda. Parameter dirty_ratio bukan persentase dari total memori sistem Anda, tetapi lebih dari memori bebas sistem Anda .
Ada artikel tentang Tuning untuk beban Write-Heavy dengan informasi lebih mendalam.
sumber
Atau hanya mendapatkan lebih banyak disk ... Konfigurasi array drive yang Anda miliki tidak mendukung seluruh yang Anda butuhkan. Ini adalah kasus di mana solusinya harus direkayasa ulang untuk memenuhi kebutuhan nyata Anda. Saya mengerti bahwa ini hanya cadangan, tetapi masuk akal untuk menghindari perbaikan kludgy.
sumber
Menggunakan cache memori dapat menyiratkan hilangnya data seolah-olah ada yang salah, data yang ada di memori dan tidak disimpan ke disk akan hilang.
Yang mengatakan, ada penyetelan yang harus dilakukan di tingkat filesystem.
Misalnya, Jika Anda menggunakan ext4, Anda bisa mencoba opsi mount:
penghalang = 0
Bahwa: "menonaktifkan penggunaan penghalang tulis dalam kode jbd. Hambatan tulis memberlakukan pemesanan jurnal yang dilakukan di disk, membuat cache tulisan volatile disk aman untuk digunakan, pada beberapa penalti kinerja. Jika disk Anda didukung baterai dengan satu cara atau yang lain, menonaktifkan penghalang dapat dengan aman meningkatkan kinerja. Opsi mount "barrier" dan "nobarrier" juga dapat digunakan untuk mengaktifkan atau menonaktifkan penghalang, untuk konsistensi dengan opsi mount ext4 lainnya. "
Lebih lanjut di: http://www.mjmwired.net/kernel/Documentation/filesystems/ext4.txt
sumber