Solusi untuk bekerja dengan array RAID dari hard drive telah digunakan untuk waktu yang sangat lama. Secara umum, mereka terus tetap populer di banyak daerah di mana diperlukan volume tinggi, toleransi kesalahan array yang relatif murah. Mengingat ukuran hard drive modern, kecepatannya, serta alasan lain, kepentingan praktis terbesar adalah array RAID6 (atau RAID60, jika ada banyak disk). Tetapi jenis array ini memiliki kinerja yang rendah pada operasi penulisan acak dan tidak mudah untuk melakukan apa pun dengannya.
Tentu saja, dalam hal ini kita berbicara tentang kecepatan "volume mentah". Dalam kehidupan nyata, sistem file, sistem operasi, aplikasi dan semua yang ditambahkan ke dalamnya. Jadi faktanya, tidak semuanya buruk. Namun, ada juga metode perangkat keras dan lunak untuk meningkatkan produktivitas yang tidak bergantung pada subsistem ini. Kita berbicara tentang teknologi caching ketika drive memori flash yang secara signifikan lebih cepat ditambahkan ke berbagai hard drive.
Secara khusus, dalam pengontrol RAID Adaptec teknologi ini disebut maxCache dan versi 3.0 diimplementasikan dalam model ASR-8885Q dan ASR-81605ZQ. Saat menggunakannya, beberapa fitur harus diperhitungkan: hanya satu volume maxCache per pengontrol diizinkan, volume maksimum volume maxCache adalah 1 TB, agar cache bisa berfungsi, Anda harus memiliki konfigurasi toleran kesalahan pada volume maxCache itu sendiri (misalnya, mirror). Pada saat yang sama, pengguna dapat secara independen menentukan untuk setiap volume logis bagaimana tepatnya ia akan bekerja dengan maxCache - untuk membaca dan / atau menulis dan dalam mode apa.
Untuk pengujian, kami menggunakan server berbasis motherboard Supermicro X10SLM-F, prosesor Intel Xeon E3-1225 v3 (4C / 8T, 3,2 GHz), 32 GB RAM, berjalan di bawah Debian 9.

Kontroler ASR-81605ZQ yang diuji memiliki unit perlindungan memori dan ketika bekerja dengan berbagai hard disk, ia memiliki cache baca dan tulis aktif. Ingat bahwa memori internal model ini adalah 1 GB. Array RAID6 dengan blok 256 KB dibuat dari enam hard drive SATA Seagate ST10000NM0086 dengan kapasitas 10 TB. Volume total volume adalah sekitar 36 TB.
Dua pasang perangkat digunakan sebagai SSD untuk volume maxCache: dua antarmuka Samsung 850 EVO generasi kedua 1TB SATA dan dua Seagate 1200 SSD (ST400FM0053) 400 GB antarmuka SAS dari mana array RAID1 dibuat. Tentu saja, model pertama sudah dapat dianggap usang dan tidak hanya secara moral. Tetapi untuk menggambarkan skenario anggaran, itu akan dilakukan. Yang kedua secara formal lebih cocok dengan kategori "perusahaan", tetapi juga sulit untuk menganggapnya modern. Dalam pengaturan array maxCache itu sendiri, hanya ada opsi Flush dan Fetch Rate, yang tetap pada nilai default (Medium). Tidak ada cara untuk memilih prioritas untuk operasi atau volume disk. Perhatikan bahwa drive tidak dalam keadaan baru dan TRIM tidak digunakan dalam konfigurasi ini.
Setelah membuat volume maxCache, Anda perlu mengaktifkan parameter untuk menggunakannya dalam properti volume logis. Ada tiga opsi secara total: aktifkan read cache, aktifkan write cache, dan tulis jenis cache.
Utilitas fio digunakan sebagai alat uji, dan serangkaian skrip termasuk operasi berurutan dan acak dengan jumlah utas yang berbeda. Perlu dicatat bahwa studi tentang kinerja produk dengan teknologi caching teknologi sintetis sulit untuk dikenali sebagai pilihan terbaik. Lebih baik untuk mengevaluasi efek pada tugas nyata, karena beban sintetis sedikit banyak bertentangan dengan gagasan caching. Selain itu, dalam hal ini kami mempertimbangkan operasi tingkat rendah, dan pada kenyataannya pengguna biasanya berurusan dengan file dan, seperti yang kami katakan di atas, sistem file volume, sistem operasi, dan perangkat lunak itu sendiri termasuk dalam pekerjaan dengan mereka. Jadi, itu adalah sintetis, menarik karena kesederhanaan dan pengulangannya, yang tidak masuk akal sendiri, tetapi terutama untuk membandingkan "bagaimana itu dan bagaimana jadinya" dalam skenario yang sulit untuk algoritma caching dan perkiraan efek yang agak kasar.
Mari kita lihat dulu apa yang bisa dilakukan array kita sendiri. Ingatlah bahwa dalam operasi berurutan, kecepatan dalam MB / s dan penundaan (pada skala logaritmik) menarik, dan dalam operasi acak, IOPS dan penundaan juga menarik.
Kecepatan operasi streaming dengan berbagai konfigurasi ini berada pada level 900 MB / s. Pada saat yang sama, penundaan tidak melebihi 70 ms bahkan dengan sejumlah besar utas.
Untuk hard drive, operasi acak adalah beban yang paling sulit, seperti yang dapat dilihat dari hasilnya. Jika Anda menetapkan ambang latensi pada 100 ms, maka Anda bisa mendapatkan sekitar 1100 IOPS saat membaca, dan pada catatan, terlepas dari bebannya, array dapat memberikan sekitar 300 IOPS. Perhatikan bahwa dengan array RAID60 dari 36 disk pada pengontrol yang sama, Anda bisa mendapatkan angka yang lebih menarik, berkat konfigurasi tiga blok dari 12 hard drive. Ini memungkinkan Anda untuk menambahkan rotasi dan meningkatkan kecepatan ke 3500 dan 1200 IOPS secara acak baca dan tulis, masing-masing (dalam konfigurasi ini ada drive SAS-hard yang cukup lama dari HGST di 2 TB). Sisi negatif dari opsi ini adalah biaya tambahan volume, karena tidak dua disk per volume "hilang", tetapi dua per grup.
Jadi, tanpa caching, array kami terlihat cukup menyedihkan untuk operasi acak. Tentu saja, ini adalah kecepatan "mentah" volume, dan program jarang memberikan beban acak yang eksklusif (ingat bahwa di sini kita masih memiliki larik untuk menyimpan file besar, bukan database).

Mari kita lihat bagaimana SSD dapat membantu dalam situasi ini. Dalam tes, empat opsi konfigurasi yang tersedia akan digunakan - hanya baca, baca dan tulis Tulis Melalui, baca dan tulis Tulis Kembali, baca dan tulis Instan Tulis Kembali:
- WB - menulis kembali diaktifkan. maxCache akan menyimpan data pada SSD dan menulisnya kembali ke hard disk ketika ada sedikit atau tidak ada dampak pada kinerja. Ini adalah kebijakan default.
- INSTWB - menulis balik instan diaktifkan. Selain kebijakan default, maxCache akan membuat halaman-halaman kotor dengan cepat untuk penulisan full-stripe jika ada ruang pada SSD dan jumlah halaman kotor di bawah ambang batas.
- WT - write through diaktifkan. Mirip dengan penulisan ulang instan, tetapi penulisan full-strip pergi ke cache dan hard disk dan tidak ada halaman kotor yang dibuat saat itu juga.
Mari kita mulai dengan drive SATA, yang cukup besar. Bagan kali ini akan terpisah - kecepatan dan penundaan untuk masing-masing dari empat skenario pengujian.
Pada operasi baca berurutan, array menunjukkan hasil yang stabil terlepas dari jenis cache yang digunakan, yang diharapkan. Pada saat yang sama, mereka sedikit berbeda dari sebuah array tanpa cache - semua 900 MB / s yang sama dan penundaan sekitar 70 ms.
Ada dua grup pada penulisan berurutan - hanya untuk membaca dan dengan Tulis Kembali mereka menunjukkan hasil yang mirip dengan array tanpa cache - sekitar 900 MB / s dan hingga 100 ms, dan Write Through dan Instant Write Kembali dapat menarik tidak lebih dari 100 MB / s dan dengan signifikan lebih besar keterlambatan.
Ingatlah bahwa saat membaca array hard drive menunjukkan maksimum sekitar 1100 IOPS, tetapi pada batas ini penundaan sudah mulai melebihi 100 ms. Dengan caching SATA SSD, Anda dapat mencapai hasil yang sedikit lebih baik - sekitar 1.500 IOPS dan dengan penundaan yang sama.
Dalam operasi perekaman acak, kami melihat efek terbesar - peningkatan indikator sebesar dua setengah kali dengan peningkatan kapasitas beban secara simultan. Saat menggunakan cache, Anda dapat memiliki penundaan hingga 100 ms dengan utas dua hingga tiga kali lipat.
Kesimpulan umum tentang konfigurasi ini adalah: tidak mengganggu pembacaan berurutan, tidak mengganggu penulisan berurutan dalam beberapa konfigurasi, menambahkan sekitar 35% pada pembacaan acak, dan meningkatkan kinerja beberapa kali pada penulisan acak.
Sekarang mari kita lihat varian volume caching dari pasangan kedua drive SSD. Perhatikan bahwa dalam kasus kami mereka memiliki volume yang jauh lebih sedikit, antarmuka SAS 12 Gb / s dan karakteristik kecepatan yang lebih tinggi (dinyatakan oleh pabrikan).
Pada pembacaan berurutan, hasilnya tidak berbeda dari yang diberikan sebelumnya, yang sangat diharapkan.
Pada perekaman berurutan, kami sekarang memiliki tiga grup - konfigurasi dengan cache cache Write Through write tertinggal, tentang Instant Write Back menunjukkan sekitar setengah dari kecepatan maksimum dan hanya Write Back tidak berbeda dari sebuah array tanpa cache. Situasi yang sama dengan waktu tunggu.
Tetapi pada pembacaan acak, Instant Write Back terbukti menjadi yang terbaik, mencapai 2500 IOPS, sedangkan konfigurasi lainnya hanya dapat memperpanjang hingga 1800 IOPS. Perhatikan bahwa semua opsi dengan caching tulis terasa lebih cepat daripada larik "bersih". Pada saat yang sama, waktu tunggu tidak melebihi 100 ms bahkan dengan sejumlah besar utas.
Pada operasi baca acak, Instant Write Back maju lagi, menampilkan hampir 2.000 IOPS. Grup kedua berisi konfigurasi Write Through dan Write Back dengan 1000 IOPS.
Peserta terakhir, yang tidak menggunakan cache untuk operasi penulisan, menunjukkan sekitar 300 IOPS, serta hanya array hard drive.
Mungkin opsi yang paling menarik untuk volume cache ini adalah Instant Write Back. Benar, ini lebih lambat dalam operasi streaming yang dibaca. Dimungkinkan untuk memperbaikinya dengan menggunakan konfigurasi RAID10 untuk volume maxCache, tetapi biayanya sudah empat biaya dalam kandang penyimpanan.
Secara umum, kita dapat mengatakan bahwa penggunaan teknologi maxCache dapat sangat berguna untuk meningkatkan kinerja array dari hard drive, terutama jika ada banyak operasi acak dalam beban. Namun, masih mustahil untuk mempertimbangkan bahwa itu sama efektifnya dengan mengganti hard drive dengan SSD di komputer desktop atau workstation.
Efek terbesar yang dicatat dalam tes ini adalah peningkatan kecepatan operasi acak sebanyak 2-3 kali. Tentu saja, bukan SSD tercepat yang digunakan, yang jelas tercermin dalam beberapa tes (misalnya, perekaman berurutan dalam mode Write Through). Selain itu, saya ingin sekali lagi menarik perhatian pada kenyataan bahwa pilihan konfigurasi caching secara signifikan mempengaruhi hasil. Mengingat bahwa mengubah pengaturan dimungkinkan "on the fly" tanpa kehilangan data, perlu memeriksa sendiri semua opsi pada tugas Anda dan memilih opsi terbaik.