Meningkatkan kecepatan tulis mdadm RAID-6

8

Saya memiliki mdadm RAID-6 di server rumah saya WD Green HDD 5x1Tb. Kecepatan baca lebih dari cukup - 268 Mb / s dalam dd. Tetapi kecepatan tulis hanya 37,1 Mb / s. (Keduanya diuji melalui dd pada file 48Gb, ukuran RAM 1Gb, ukuran blok yang digunakan dalam pengujian adalah 8kb)

Bisakah Anda menyarankan mengapa kecepatan menulis sangat rendah dan apakah ada cara untuk memperbaikinya? Penggunaan CPU selama penulisan hanya 25% (yaitu setengah dari 1 inti Opteron 165) Tidak ada data penting bisnis di sana & server didukung oleh UPS.

mdstat adalah:

Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda1[0] sdd1[4] sde1[3] sdf1[2] sdb1[1]
      2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices: <none>

Ada saran?

Hal-hal seperti penulisan kembali, penghalang, nobh tidak membantu. DD blocksize = 1M, 8M tidak mengubah apa pun. Sepertinya mdadm secara fisik membaca sektor untuk menghitung paritas bahkan jika itu tidak masalah ... Apakah itu benar?

Pembaruan: Degradasi kecepatan setelah perubahan cache strip sebenarnya karena 1 HDD mungkin gagal selama pengujian, bagus :-D

Diselesaikan: Setelah meningkatkan stripe cache & beralih ke bitmap eksternal, kecepatan saya adalah 160 Mb / s tulis, 260 Mb / s dibaca. :-D

BarsMonster
sumber
Hey Bars .. Apa yang telah Anda tweak dan setelah perubahan apa kinerja turun ke 120Mb / s? Saya mengalami masalah yang serupa tetapi kinerja saya jauh lebih buruk :( Setiap saran akan berguna! Terima kasih!
Dalam kasus saya, saya memiliki diskfail di tengah optimasi :-)
BarsMonster

Jawaban:

9

Sudahkah Anda mencoba menyetel / sys / block / mdX / md / stripe_cache_size?

Menurut posting forum ini (dalam bahasa Norwegia, maaf) "menyetel parameter ini lebih penting semakin banyak disk dan sistem yang lebih cepat Anda miliki":

Pada sistem saya, saya mendapatkan kinerja terbaik menggunakan nilai 8192. Jika saya menggunakan nilai default 256, kinerja penulisan turun 66%.

Mengutip kecepatannya untuk perbandingan:

Disk: 8xSeagate 2TB LP (5900RPM) di mdadm RAID6 (-n 512) (stripe_size_cache = 8192).

CPU: Intel X3430 (4x2.4GHz, 8GB DDR3 ECC RAM)

Kecepatan: 387 MB / s menulis berurutan, 704 MB / s membaca berurutan, 669 pencarian acak per detik.

Server rumah saya memiliki disk yang hampir sama dengan Anda, menggunakan RAID 5:

Disk: 4x1.5TB WD Green di RAID 5 (stripe_size_cache = 256 - default)

CPU: Intel i7 920 (2,66 GHz, 6 GB RAM)

Kecepatan: 60 MB / s menulis berurutan, 138 MB / s membaca berurutan (menurut Bonnie ++)

Jadi sepertinya kinerja tulis berurutan adalah sekitar 50% dari kinerja membaca.

Untuk kinerja apa yang diharapkan, Wiki Linux Raid mengatakan tentang RAID 5:

Pembacaan hampir mirip dengan pembacaan RAID-0, penulisan dapat menjadi agak mahal (memerlukan pembacaan sebelum menulis, agar dapat menghitung informasi paritas yang benar, seperti dalam operasi basis data), atau mirip dengan RAID-1 menulis (ketika penulisan berurutan lebih besar dilakukan, dan paritas dapat dihitung langsung dari blok lain yang akan ditulis).

Dan tentang RAID 6:

Kinerja baca mirip dengan RAID-5 tetapi kinerja penulisan lebih buruk.

jg-faustus
sumber
Kecepatan tulis turun menjadi 15-20 Mb / s, kecepatan baca turun menjadi 110: -S Ini tidak masuk akal :-(
BarsMonster
Coba beberapa nilai lain, lihat apa yang terjadi. Bukan ahli dalam hal ini, tapi saya punya WD Greens (4x1.5TB) di md RAID 5 dengan masalah yang sama - kecepatan menulis agak lambat. Sistem saya sedang down saat ini, tetapi saya akan bereksperimen juga, dan perbarui di sini jika saya berhasil memperbaikinya.
jg-faustus
BTW: Apakah Anda mengaktifkan AHCI? Sistem file mana - ext3, ext4?
jg-faustus
Tidak yakin tentang AHCI, sangat sulit untuk melihat BIOS. ext4.
BarsMonster
Sial, macet dengan kecepatan membaca 120Mb / s, tidak bisa kembali ke 268 saya :-( Ini sangat menyebalkan ... Saya tidak melihat mengapa tidak bisa mdadm membaca atau menulis data secara linear pada ~ 3x90 Mb / s. .. Ini hanya konyol
BarsMonster
4

mencoba

echo 32768 > /sys/block/md0/md/stripe_cache_size

dan cek ;)

DM1
sumber
Di jawaban sebelumnya kami menguji stripe_cache_sizes yang berbeda. Menetapkannya ke 32768 tidak meningkatkan apa pun. Saya masih di ~ 100Mb / detik menulis bahkan setelah upgrade (E8500 CPU, 8Gb ram dan array 8x1Tb)
BarsMonster
KONYOL! Itu secara instan meningkatkan kinerja penulisan saya dari ~ 70MB / s menjadi ~ 360MB / s!?! Ya Tuhan. WTF apakah ini tidak default?!?
stolsvik
Astaga. Ini benar-benar berfungsi ... Dari [================> ....] pemulihan = 82,1% (1604609136/1953382144) selesai = 122,7 menit kecepatan = 47348 K / detik hingga [ ================> ....] pemulihan = 82,3% (1607712880/1953382144) selesai = 56,2 menit kecepatan = 102451K / detik
Lmwangi
Dalam pengujian saya, nilai 8192 tampaknya cukup. Meskipun melempar semua yang harus saya uji dengan array, saya tidak bisa mendapatkan stripe_cache_active untuk lonjakan lebih tinggi dari yang 7000s rendah.
Jody Lee Bruchon