Untuk HDD , IOPS umumnya didominasi oleh waktu akses disk, yang merupakan jumlah latensi pencarian + penundaan rotasi + penundaan transfer. Karena variabel-variabel ini sangat bergantung pada pola akses dan memiliki interaksi yang tidak jelas dengan tata letak RAID spesifik (yaitu: ukuran garis) dan pengontrol (yaitu: baca tuning depan), setiap balasan sederhana AKAN SALAH.
Namun, mari kita coba untuk memiliki angka rata-rata. Pada perkiraan pertama, IOPS dijamin oleh array n-disk harus n-kali IOPS dari disk tunggal. Namun, baik tingkat RAID dan pola akses data , dengan menggeser bobot antara latensi pencarian / rotasi / transfer, secara drastis mengubah pendekatan tingkat pertama ini.
Mari kita lakukan beberapa contoh, dengan asumsi 100 IOPS per disk tunggal (nilai tipical untuk 7200 RPM disk) dan array 4-disk (kecuali untuk RAID1, sering dibatasi hanya untuk 2 arah):
- disk tunggal adalah 100 IOPS, baik membaca dan menulis (catatan: karena menulis penggabungan, menulis IOPS umumnya lebih tinggi daripada membaca IOPS, tetapi mari abaikan itu untuk kesederhanaan)
- RAID0 (striping 4-arah) memiliki hingga 4x IOPS acak dan hingga 4x IOPS berurutan. Kata kuncinya di sini adalah "hingga": karena sifat striping dan penyelarasan data, jika sektor yang diakses secara acak berada pada satu disk, Anda akan berakhir dengan IOPS yang jauh lebih rendah.
- RAID1 (mirroring 2 arah) lebih kompleks untuk profil. Karena disk yang berbeda dapat mencari pada data yang berbeda, ia memiliki hingga 2x IOPS pembacaan acak tetapi 1x yang sama (atau sedikit lebih rendah, karena overhead) menulis IOPS acak. Jika semua hal selaras dengan baik (yaitu: besar tetapi tidak 100% berurutan dibaca, pengontrol RAID menggunakan konsep / penanganan potongan / strip bahkan dalam mode mirroring, baca-depan berfungsi dengan benar, dll.) Membaca berurutan kadang - kadang bisa mencapai 2x tunggal. nilai disk, sementara penulisan berurutan tetap dibatasi pada 1x disk tunggal (yaitu: tidak ada speedup)
- RAID10 (mirroring 4-arah), kinerja-bijaksana, di setengah jalan antara striping RAID0 4-arah dan mirroring 2-arah. Ini memiliki hingga 4x IOPS baca acak dan hingga 2x IOPS tulis acak. Untuk transfer sekuensial, RAID1 peringatan berlaku: kadang-kadang memiliki hingga 4x sekuensial membaca IOPS, tetapi hanya 2x sekuensial menulis IOPS. Harap dicatat bahwa beberapa implementasi RAID10 (yaitu Linux MDRAID) menyediakan tata letak yang berbeda untuk array RAID10, dengan profil kinerja yang berbeda .
- RAID5 (striped parity) memiliki hingga 4x IOPS baca acak, sedangkan IOPS tulis acak, tergantung pada sejumlah faktor seberapa besar penulisan terkait ukuran stripe, ketersediaan cache strip besar, ketersediaan algoritma stripe, algoritma rekonstruksi stripe itu sendiri (baca-merekonstruksi-tulis vs baca-modifikasi-tulis), dll, bisa di mana saja antara 0,5x (atau lebih rendah) dan 2x IOPS dari satu disk. Beban kerja berurutan lebih mudah diprediksi, dengan 3x IOPS dari satu disk (baik untuk membaca dan menulis)
- RAID6 (striped double parity) berperilaku seperti saudara RAID5-nya, tetapi dengan kinerja penulisan yang lebih rendah. Ini memiliki hingga 4x IOPS baca acak dari satu disk, tetapi kinerja penulisan acaknya bahkan lebih rendah dari RAID5, dengan nilai absolut yang sama (0,5x - 2x) tetapi dengan rata-rata kata sebenarnya lebih rendah. Membaca dan menulis berurutan dibatasi pada 2X IOPS dari satu disk.
Coba saya ulangi: di atas adalah perkiraan sederhana dan hampir rusak. Bagaimanapun, jika Anda ingin bermain dengan kalkulator RAID IOPS (sangat tidak lengkap), lihat di sini .
Sekarang, kembali ke dunia nyata. Pada beban kerja dunia nyata, RAID10 seringkali merupakan pilihan yang lebih cepat dan disukai , mempertahankan kinerja tinggi bahkan dalam menghadapi array yang rusak . RAID5 dan RAID6 tidak boleh digunakan pada beban kerja yang sensitif terhadap kinerja, kecuali jika sifatnya baca-sentris atau berurutan. Perlu dicatat bahwa pengontrol RAID yang serius memiliki cache writeback terproteksi daya yang besar, terutama untuk mengatasi (dengan caching strip berat) kinerja penulisan acak rendah RAID5 / 6. Jangan pernah gunakan RAID5 / 6 dengan pengontrol RAID tanpa cache , kecuali Anda benar-benar tidak peduli dengan kecepatan array.
SSD adalah binatang yang berbeda, pikir. Karena mereka memiliki waktu akses rata-rata yang jauh lebih rendah secara intrinsik, RAID berbasis paritas menghasilkan overhead kinerja yang jauh lebih rendah dan merupakan opsi yang jauh lebih layak daripada pada HDD. Namun, dalam beban kerja sentris acak-tulis kecil, saya akan menggunakan setup RAID10.