Saya mengalami kesulitan mengeluarkan throughput maks dari pengaturan saya. Perangkat kerasnya adalah sebagai berikut:
- Prosesor AMD Opteron Quad-Core ganda (tm) 2376
- RAM ECC DDR2 16 GB
- pengendali RAID ganda Adaptec 52245
- 48 1 TB SATA drive diatur sebagai 2 array RAID-6 (256KB stripe) + suku cadang.
Perangkat lunak:
- Kernel vanilla 2.6.32.25, dikompilasi untuk AMD-64, dioptimalkan untuk NUMA; Pengguna Debian Lenny.
- menjalankan benchmark: disktest, bonnie ++, dd, dll. Semua memberikan hasil yang sama. Tidak ada perbedaan di sini.
- io scheduler yang digunakan: noop. Ya, tidak ada trik di sini.
Sampai sekarang saya pada dasarnya berasumsi bahwa striping (RAID 0) beberapa perangkat fisik harus meningkatkan kinerja secara linear. Namun ini tidak terjadi di sini:
- setiap array RAID mencapai sekitar 780 MB / s tulis, berkelanjutan, dan 1 GB / s baca, berkelanjutan.
- menulis ke kedua array RAID secara bersamaan dengan dua proses yang berbeda menghasilkan 750 + 750 MB / s, dan membaca dari keduanya memberikan 1 + 1 GB / s.
- namun ketika saya memisahkan kedua array menjadi satu, menggunakan mdadm atau lvm, kinerjanya sekitar 850 MB / s dan membaca 1,4 GB / s. setidaknya 30% kurang dari yang diharapkan!
- menjalankan dua proses penulis atau pembaca paralel terhadap array bergaris tidak meningkatkan angka, bahkan menurunkan kinerja lebih jauh.
Jadi apa yang terjadi di sini? Pada dasarnya saya mengesampingkan anggapan bus atau memori, karena ketika saya menjalankan dd pada kedua drive secara bersamaan, kecepatan tulis agregat sebenarnya mencapai 1,5 GB / s dan kecepatan membaca mencapai 2 GB / s.
Jadi bukan bus PCIe. Saya kira itu bukan RAM. Ini bukan sistem file, karena saya mendapatkan angka yang persis sama dengan perangkat mentah atau menggunakan XFS. Dan saya juga mendapatkan kinerja yang persis sama menggunakan striping LVM dan strip md.
Apa yang salah? Apa yang mencegah proses naik ke kemungkinan throughput maksimum? Apakah striping Linux rusak? Tes apa lagi yang bisa saya jalankan?
striping
program tidak dapat melakukan melalui algoritma multi-threading. Karena Anda menggunakan soft RAID dari mdadm
, saya sarankan Anda untuk melihat sumbernya.