Benchmark Disk Throughput on Linux

Menguji kinerja disk sangat penting agar dapat mengetahui kemampuan disk dan kesehatan disk dalam waktu ke waktu. Ini juga dilakukan untuk mengetahui jika ada permasalahan disk pada cluster storege seperti Ceph atau NFS agar beban kerja disk dapat lebih optimal dan lebih efektif.

Berikut beberapa tools yang dapat digunakan untuk benchmark disk.

Hdparm

Hdparm merupakan tool sederahana yang dapat digunakan untuk menguji read throughput disk.

hdparm -Tt /dev/vdb
/dev/vdb:
 Timing cached reads:   2452 MB in  1.99 seconds = 1231.20 MB/sec
 Timing buffered disk reads: 1102 MB in  3.02 seconds = 365.04 MB/sec

DD

DD (Data Duplicator) adalah utilitas linux untuk menyalin dan mengonversi file atau data. Selain itu DD juga dapat digunakan untuk menguji write throughput disk.

dd if=/dev/zero of=/usr/benchfile bs=1M count=2000 && sync; rm -f /usr/benchfile
1000+0 records in
1000+0 records out
1048576000 bytes (2.0 GB, 2000 MiB) copied, 3.75062 s, 280 MB/s

Fio

Fio adalah tool yang menghasilkan sejumlah thread atau proses yang melakukan jenis tindakan I/O sesuai yang ditentukan oleh pengguna. Karena itu fio cocok untuk menguji beban I/O yang ingin disimulasikan.

Buat folder benchmark lalu buat file untuk pengetesan.

fio --name=setup --ioengine=libaio --rw=read \
 --bs=64k --iodepth=64 --numjobs=2 --size=2G \
 --runtime=1 --gtod_reduce=1 --filename=test.fio \
 --direct=1

Untuk pengetesan I/O random read/write dengan ukuran blok (bs) 4k

fio --name=rand_rw_4k --ioengine=libaio --rw=randrw \
 --rwmixread=50 --bs=4k --iodepth=64 --numjobs=2 \
 --size=2G --runtime=30 --gtod_reduce=1 --direct=1 \
 --filename=test.fio

Untuk pengetesan I/O random read/write dengan ukuran blok (bs) 64k

fio --name=rand_rw_64k --ioengine=libaio --rw=randrw \
 --rwmixread=50 --bs=64k --iodepth=64 --numjobs=2 \
 --size=2G --runtime=30 --gtod_reduce=1 --direct=1 \
 --filename=test.fio

Untuk pengetesan I/O random read/write dengan ukuran blok (bs) 512k

fio --name=rand_rw_512k --ioengine=libaio --rw=randrw \
 --rwmixread=50 --bs=512k --iodepth=64 --numjobs=2 \
 --size=2G --runtime=30 --gtod_reduce=1 --direct=1 \
 --filename=test.fio

Untuk pengetesan I/O random read/write dengan ukuran blok (bs) 1m

fio --name=rand_rw_1m --ioengine=libaio --rw=randrw \
 --rwmixread=50 --bs=1m --iodepth=64 --numjobs=2 \
 --size=2G --runtime=30 --gtod_reduce=1 --direct=1 \
 --filename=test.fio