Apa itu Queue Depth?
Queue depth dalam penyimpanan adalah jumlah permintaan input/output (I/O) yang tertunda dan dapat ditangani oleh sumber daya penyimpanan pada satu waktu. Aplikasi dengan kebutuhan performa tinggi dapat menghasilkan cukup banyak I/O hingga menciptakan queue depth dalam jumlah ratusan.
Jika jumlah permintaan I/O melebihi queue depth yang didukung, perangkat penyimpanan akan mengembalikan pesan kegagalan kepada host yang terhubung. Sistem operasi (OS) host kemudian harus mengirim ulang permintaan I/O tersebut.
OS host bertanggung jawab untuk menjadwalkan dan mengoptimalkan permintaan I/O serta menangani pesan kegagalan. Meskipun sebagian besar OS dapat menangani kegagalan antrian ini, terkadang masalah muncul, terutama saat beberapa host terhubung ke satu perangkat penyimpanan secara bersamaan. Terlalu banyak kegagalan antrian dapat berdampak pada kinerja aplikasi dan menyebabkan kesalahan sistem.
Bagaimana cara kerja Queue Depth?
Queue depth maksimum yang dapat didukung oleh sebuah drive bergantung pada standar antarmuka penyimpanan yang digunakannya untuk terhubung ke sistem host. Berikut adalah pengaturan queue depth dari tiga jenis antarmuka penyimpanan utama:
- Serial ATA atau SATA mendukung satu antrian perintah dengan queue depth hingga 32 perintah.
- Serial-attached SCSI atau SAS mendukung satu antrian perintah dengan queue depth hingga 256 perintah.
- Non-volatile Memory Express (NVMe) mendukung hingga 65.535 antrian perintah dengan queue depth maksimal 65.536 perintah per antrian.
Semakin besar nilai queue depth, semakin kecil kemungkinan terjadinya kegagalan permintaan I/O yang dapat menyebabkan bottleneck. Inilah salah satu alasan mengapa NVMe memiliki performa lebih baik dibandingkan SATA dan SAS. Jika banyak host terhubung ke drive SATA atau SAS, antrian dapat dengan cepat penuh, yang mengurangi throughput dan meningkatkan latensi.
Aplikasi dengan performa tinggi memiliki beban kerja yang dapat menghasilkan permintaan I/O dalam jumlah besar, yang menciptakan queue depth hingga ratusan. Solid-state drive (SSD) berbasis NVMe, dengan queue depth yang lebih besar, memiliki waktu respons lebih cepat dan mampu menangani permintaan I/O tersebut hampir secara instan.
Penerapan Lain dari Queue Depth
Queue depth juga memiliki peran lain dalam infrastruktur penyimpanan. Misalnya, sebuah RAID controller biasanya memiliki queue depth sendiri, yang sering kali lebih besar daripada queue depth gabungan dari disk individual. Hal ini karena controller menggunakan mekanisme seperti caching untuk mengelola I/O di seluruh array. Sebagai contoh, PowerEdge RAID Controller 11 dari Dell Technologies mendukung queue depth hingga 5.120 perintah.
Queue depth juga menjadi faktor penting dalam manajemen storage area network (SAN). Dalam SAN, queue depth maksimum harus dikonfigurasi dengan benar pada host bus adapter (HBA) agar tidak mengirim lebih banyak permintaan I/O secara bersamaan daripada yang dapat ditangani oleh perangkat penyimpanan per logical unit number (LUN).
Vendor sering kali memberikan rekomendasi mengenai cara mengonfigurasi queue depth HBA saat menghubungkan ke sumber daya penyimpanan di pusat data. Jika queue depth HBA tidak dikelola dengan baik, performa aplikasi dapat menurun.