Saya telah melakukan beberapa tes kinerja sederhana dan tampaknya membaca dari RAID1 saya lebih lambat daripada menulis:
root@dss0:~# for i in 1 2 3; do dd if=/dev/zero of=/dev/sda bs=1048576 count=131072; done
137438953472 bytes (137 GB) copied, 192.349 s, 715 MB/s
137438953472 bytes (137 GB) copied, 192.851 s, 713 MB/s
137438953472 bytes (137 GB) copied, 193.026 s, 712 MB/s
root@dss0:~# for i in 1 2 3; do dd if=/dev/sda of=/dev/null bs=1048576 count=131072; done
137438953472 bytes (137 GB) copied, 257.201 s, 534 MB/s
137438953472 bytes (137 GB) copied, 255.522 s, 538 MB/s
137438953472 bytes (137 GB) copied, 259.945 s, 529 MB/s
Saya mengerti bahwa dd bukan alat uji kinerja, tetapi hasil ini masih mengejutkan.
Sistem dibangun oleh vendor dan memiliki papan utama Supermicro dengan RAM 16 GByte. Pengontrol RAID adalah MegaRAID 9271-8i dengan cache 1 GByte. Ada 8 2 TByte SAS disk pada backplane SAS-933EL1. Saya tidak yakin dengan pemasangan kabel, satu konektor controller menuju ke SAS backplane, yang lain ke dua disk SATA yang menampung OS.
RAID1 diatur dengan perintah ini:
root@dss0:~# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r1 [8:0,8:1,8:2,8:3,8:4,8:5,8:6,8:7] WB NORA Direct -a0
Adapter 0: Created VD 0
Adapter 0: Configured the Adapter!!
Exit Code: 0x00
root@dss0:~# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aALL
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :
RAID Level : Primary-1, Secondary-0, RAID Level Qualifier-0
Size : 7.275 TB
Sector Size : 512
Is VD emulated : No
Mirror Data : 7.275 TB
State : Optimal
Strip Size : 256 KB
Number Of Drives : 8
Span Depth : 1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy : Disk's Default
Encryption Type : None
PI type: No PI
Is VD Cached: No
Exit Code: 0x00
Saya berharap akses baca setidaknya secepat akses tulis, bahkan mungkin lebih cepat. Kecepatan tulis 715 MByte / detik tampaknya mendekati batas 6 GBit untuk satu konektor SAS / SATA. Apakah ini mungkin masalah konfigurasi atau pemasangan kabel dengan backplane SAS? Bisakah konfigurasi backplane SAS ditanyai dengan perintah MegaRAID? Mohon saran.
Memperbarui
Seperti yang dikeluarkan oleh poige dan Peter, kinerja membaca yang lebih lambat dari yang diperkirakan mungkin disebabkan oleh caching dari subsistem I / O Linux.
Saat menggunakan flag langsung dalam perintah dd saya dapatkan
root@dss0:~# dd if=/dev/sda of=/dev/null bs=1048576 count=131072 iflag=direct
137438953472 bytes (137 GB) copied, 199.862 s, 688 MB/s
yang jauh lebih baik tetapi masih 10% lebih lambat dari kecepatan menulis. Menggunakan oflag = langsung tidak mempengaruhi kecepatan tulis.
sumber
Jawaban:
poige benar tentang cache tulis, tetapi di sini lebih detail.
dd dengan nol dan menggunakan cache tulis bukan cara yang tepat untuk benchmark (kecuali Anda ingin menguji cache tulis tentu saja, yang mungkin hanya berguna untuk sistem file, untuk melihat berapa banyak itu menyinkronkan metadata, membuat file baru, dll. ) (dan sepertinya dd selalu merupakan tipe benchmark yang salah, tetapi ini berfungsi untuk tes yang sangat mendasar)
Saya sarankan Anda menggunakan dd dengan setidaknya satu opsi berikut:
Dan jangan gunakan nol juga. Beberapa perangkat keras / lunak / firmware cerdas mungkin menggunakan beberapa jalan pintas jika datanya dapat diprediksi sebagai nol. Ini terutama benar jika ada kompresi yang saya duga Anda tidak gunakan. Sebagai gantinya, gunakan file acak dalam memori (seperti / dev / shm). urandom lambat, jadi Anda perlu menulisnya di suatu tempat untuk sementara waktu untuk membacanya lagi. Buat file acak 50MB:
Baca file berkali-kali untuk menulisnya (di sini saya menggunakan cat untuk membacanya 6 kali):
Juga perlu diingat bahwa pembacaan raid1 tercepat dengan operasi paralel, sehingga disk dapat digunakan secara independen. Mungkin tidak cukup pintar untuk mengoordinasikan disk untuk membaca bagian berbeda dari operasi yang sama dengan disk yang berbeda.
sumber
Kunci untuk jawaban atas pertanyaan Anda adalah baca-depan . Sekali waktu, saya juga mengalami masalah itu .
TKI, untuk kinerja pembacaan sekuensial yang optimal, semua disk harus terlibat secara permanen ke dalam Input.
Saat Anda menggunakan
dd
w / odirectio
(lihatman dd
), operasi tulis tidak dilakukan segera, tetapi melewati cache OS, sehingga memiliki lebih banyak peluang untuk melibatkan semua disk secara berurutan dan mencapai kinerja semaksimal mungkin.sumber