Saya berhasil mendapatkan kecepatan sangat dekat dengan angka yang saya harapkan.
Saya mencari 400MB/dtk dan mengelola 392MB/dtk . Jadi saya katakan itu masalah terpecahkan. Dengan penambahan perangkat cache nanti, saya mengelola 458 MB /sec baca (cache saya percaya).
1. Ini pada awalnya dicapai hanya dengan meningkatkan dataset ZFS recordsize
nilai ke 1M
zfs set recordsize=1M pool2/test
Saya yakin perubahan ini hanya menghasilkan lebih sedikit aktivitas disk, sehingga pembacaan dan penulisan sinkron besar lebih efisien. Persis seperti yang saya minta.
Hasil setelah perubahan
- bonnie++ =226MB tulis, 392MB baca
- dd =260 MB tulis, 392 MB baca
- 2 proses secara paralel =227 MB tulis, 396 MB baca
2. Saya berhasil lebih baik ketika saya menambahkan perangkat cache (SSD 120GB). Penulisannya sedikit lebih lambat, saya tidak yakin mengapa.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
igor 63G 208325 48 129343 28 458513 35 326.8 16
Trik dengan perangkat cache adalah menyetel l2arc_noprefetch=0
di /etc/modprobe.d/zfs.conf . Ini memungkinkan ZFS untuk melakukan cache streaming/data berurutan. Lakukan ini hanya jika perangkat cache Anda lebih cepat dari larik Anda, seperti milik saya.
Setelah mendapatkan manfaat dari perubahan ukuran rekaman pada kumpulan data saya, saya pikir ini mungkin cara yang serupa untuk mengatasi kinerja zvol yang buruk.
Saya bertemu banyak orang yang menyebutkan bahwa mereka memperoleh kinerja yang baik menggunakan volblocksize=64k
, jadi saya mencobanya. Tidak beruntung.
zfs create -b 64k -V 120G pool/volume
Tapi kemudian saya membaca bahwa ext4 (sistem file yang saya uji) mendukung opsi untuk RAID seperti stride
dan stripe-width
, yang belum pernah saya gunakan sebelumnya. Jadi saya menggunakan situs ini untuk menghitung pengaturan yang diperlukan:https://busybox.net/~aldot/mkfs_stride.html dan memformat zvol lagi.
mkfs.ext3 -b 4096 -E stride=16,stripe-width=32 /dev/zvol/pool/volume
Saya menjalankan bonnie++
untuk melakukan benchmark sederhana dan hasilnya sangat bagus. Sayangnya, saya tidak memiliki hasilnya, tetapi setidaknya 5-6x lebih cepat untuk menulis seingat saya. Saya akan memperbarui jawaban ini lagi jika saya membandingkan lagi.