What you need to know about IOPS

Minggu kemaren maen ke lebak bulus ketemu temen2 kantor lama sambil ngopi-ngopi (ada juga yg milih mimik susu sihh.. Wkwkwk). Kangen juga ngobrol sambil ketawa ketiwi sampe malem sepulang kantor. Pas lagi ngobrol ngobrol santai sempet juga ngebahas mereka lagi ada rencana beli storage baru untuk nambah kapasitas storage yg ada sekarang. Box yang lama sudah nggak realistis untuk di upgrade (baca: teknologi lawas, red.) maka rencananya mau beli box baru aja. Sang sysadmin manager sudah melakukan beberapa persiapan termasuk research kebutuhan IOPS dari sisi server.

Waah.. long time nih nggak ngomongin storage. Langsung mengingat ingat lagi knowledge yang selama ini lama nggak dikeluarin dari otak. Setelah share sedikit tentang IOPS sama sang sysadmin manager malam itu, akhirnya gw putusin untuk ditulis di blog juga biar bisa jadi knowledge bersama.

Kalau ngelihat spec storage array, IOPS yg disajikan sama storage vendor angkanya bisa tinggi luar biasa. Perlu diperhatikan bahwa IOPS yang mereka state di spec product adalah IOPS di controller sampai di level cache memory aja. Belum sampai ke level spindle disk. Karena IOPS storage array yg sama sampai ke level disk bisa berbeda2 tergantung type harddisk yang dipakai, Raid groupnya, jumlah disknya, type datanya (block size, %read/write, %random/sequential), cache di storage controler, dll..

Dari sisi disk IOPS tergantung type harddisk yang dipakai (Harddisk/Solid State), kecepatan RPM HDDnya, HDD latency & seek time. Ada hitungannya sih kalau mau detail ke teknisnya..

Estimated IOPS = 1 / ((seek time / 1000) + (latency / 1000)

Nah tinggal dilihat deh data dari masing2 disk, berapa seek timenya.. berapa latency timenya.. dari situ ketemu IOPSnya. Biar gampang, kita ambil aja referensi dari wikipedia.. kira2 inilah besaran IOPS per disk sesuai typenya.

Device Type IOPS Interface
7,200 rpm SATA drives HDD ~75-100 IOPS[2] SATA 3 Gb/s
10,000 rpm SATA drives HDD ~125-150 IOPS[2] SATA 3 Gbit/s
10,000 rpm SAS drives HDD ~140 IOPS[2] SAS
15,000 rpm SAS drives HDD ~175-210 IOPS[2] SAS  

 

Single unit disk kita sudah bisa dapat IOPSnya. Jika dua unit disk kita gunakan bareng-barengdan menulis data secara bersamaan, maka nilai IOPS dari dua disk tersebut bisa meningkat sampai dua kalinya. Iya nggak?.. mmhh, yaa nggak gitu juga siih. 🙂 Misal data di stripe ke dua disk itu, maka proses penulisannya data akan ditaruh di buffer memory dulu yang kemudian oleh processor dimanage data yang mana ke disk pertama & yg mana ke disk kedua baru kemudian ditulis ke disk secara bersamaan. Proses IO ini sedikit banyak memakan resource processor. Semakin banyak disk yg bisa ditulis secara bersamaan akan menambah besaran IOPS disk-disk tersebut tetapi juga akan membutuhkan lebih banyak resource processornya. Semakin banyak data yang akan diproses, semakin besar pula resource cache memory dan processor yang akan digunakan untuk mengolah data tersebut. Sehingga, proses penulisan IO ke disk-disk secara bersamaan ini dari sisi IOPS secara teori bisa meningkat sejumlah disk yang dapat ditulis secara bersamaan tapi nggak bisa 100% karena pada proses penulisannya melibatkan resource lain yaitu cache memory dan processor.  Untuk simplifikasi yaa boleh laah.. asal tahu aja it never happen in the real world. 🙂

Nah.. bicara real world.. Pada umumnya kumpulan disk disk tersebut nggak cuman di gabung dengan simple stripe. Kita perlu tambahkan proteksi baik mirror maupun parity dengan Raid system. Besaran IOPS dalam satu raid group selain tergantung type disknya juga tergantung sama type Raid groupnya, jumlah Raid member, jumlah parity disknya dan lain-lain. (Review performance untuk beberapa type raid bisa dibaca di artikel sebelumnya di sini.)

Ini ada calculator untuk hitung IOPS dari Marek Wołynko.. http://www.wmarow.com/strcalc/strcalc.html. Dia juga buatkan program untuk menghitung kebutuhan storage array berdasarkan IOPS dan kapasitas disk di http://www.wmarow.com/strcalc/goals.html. Jangan kaget kalau kebutuhan  IOPSnya tinggi akan memerlukan disk yg banyak melebihi capacity yang diperlukan. Coba di combine saja antara HDD dan SSD.

Berangkat dari ngobrool nngobrol ringan sama kawan di lebak bulus ada satu message saya.. Jangan asal percaya sama hitung2an vendor storage ttg IOPS storage array mereka tanpa penjelasan teknis data2 ini. Jangan sampai ketipu sama IOPS yang di publish secara general atau ditampilkan tanpa diberi info hitungannya sampai ke level disk. Karena kenyataan di lapangan data tetap dibaca dan ditulis sampai ke level disk.. bukan cuman sampai memory.  Buat saya, informasi IOPS yang dipublish di spec storage array itu hanya untuk menunjukkan kemampuan maksimal yg bisa dilakukan storage controller di level processor & memory aja. Semakin besar IOPSnya yaa semakin besar juga bandwidth, IO processing, dll yg disediakan sama storage controllernya. Tapi in the real world, our data will still be stored in disks. Hence we should calculate IOPS based on disks rather than memory level. CMIIW..

6 tanggapan untuk “What you need to know about IOPS

Tinggalkan komentar