Menguji kinerja Elastic Block Storage membantu Anda memahami kemampuan perangkat penyimpanan sehingga dapat mengoptimalkannya untuk kinerja terbaik. Pengujian pada raw disk memberikan ukuran kinerja yang paling realistis. Topik ini menjelaskan cara menggunakan tool open source FIO pada sistem Linux untuk menguji metrik kinerja utama raw disk, seperti operasi input/output per detik (IOPS), throughput, dan latency.
FIO (Flexible I/O Tester) adalah tool pengujian kinerja I/O open source yang andal. Anda dapat menggunakannya untuk menjalankan uji beban, seperti baca dan tulis acak maupun berurutan, pada perangkat penyimpanan.
Prosedur
Pengujian pada raw disk memberikan ukuran kinerja yang paling realistis. Namun, menjalankan uji stres dengan FIO langsung pada perangkat yang berisi partisi, sistem file, atau data lainnya dapat menyebabkan error sistem file dan kehilangan data. Sebelum memulai pengujian, buat snapshot sebagai backup data Anda. Untuk informasi selengkapnya, lihat Buat snapshot.
Untuk mencegah kehilangan data, jangan uji sistem disk atau data disk yang berisi data. Ujilah kinerja penyimpanan pada data disk baru yang belum diinisialisasi dan kosong.
Hasil uji kinerja berasal dari lingkungan staging dan hanya untuk referensi. Di lingkungan produksi, kinerja disk dapat bervariasi tergantung pada faktor-faktor seperti lingkungan jaringan dan akses konkuren.
Setelah pengujian selesai, kelola disk baru sebagai berikut:
Jika Anda ingin menyimpan disk tersebut, inisialisasi ulang data disk sebelum menggunakannya.
Jika Anda tidak memerlukan disk tersebut, detach data disk lalu release disk.
Topik ini menggunakan gambar publik Alibaba Cloud Linux 3.2104 LTS 64-bit sebagai contoh. Langkah-langkahnya dapat berbeda tergantung pada lingkungan Anda.
Sambungkan ke Instance ECS.
Untuk informasi selengkapnya, lihat Sambungkan ke instans Linux menggunakan Workbench.
Jalankan perintah berikut untuk mengambil Nama perangkat dari perangkat Elastic Block Storage Anda.
sudo fdisk -lu
Gambar di atas menunjukkan bahwa instans memiliki tiga perangkat Elastic Block Storage: sistem disk /dev/vda, serta data disk /dev/vdb dan /dev/vdc.Jalankan perintah berikut untuk memeriksa partisi dan sistem file pada perangkat Elastic Block Storage.
sudo blkid
Gambar di atas menunjukkan bahwa perangkat Elastic Block Storage /dev/vda dan /dev/vdb memiliki partisi dan sistem file. Output perintah tidak berisi informasi tentang /dev/vdc, yang menunjukkan bahwa perangkat tersebut tidak memiliki partisi atau sistem file.
PeringatanMenjalankan uji stres dengan FIO langsung pada perangkat yang berisi partisi, sistem file, atau data lainnya dapat menyebabkan error sistem file dan kehilangan data. Jika data disk Anda memiliki partisi dan sistem file, buat data disk baru yang kosong untuk pengujian:
Buat disk bayar sesuai penggunaan dengan konfigurasi yang sama dan sambungkan ke instans untuk pengujian. Untuk informasi selengkapnya, lihat Buat data disk kosong.
Setelah pengujian selesai, Anda dapat melepas instans tersebut. Untuk informasi selengkapnya, lihat Lepaskan instans.
Sebelum menguji kinerja perangkat Elastic Block Storage, backup datanya untuk mencegah kehilangan data. Untuk informasi selengkapnya, lihat Buat snapshot.
CatatanSnapshot adalah layanan berbayar. Untuk informasi selengkapnya, lihat Penagihan snapshot.
Jalankan perintah berikut untuk menginstal library libaio dan tool FIO. Pilih perintah yang sesuai dengan sistem operasi Anda.
Alibaba Cloud Linux 2/3, CentOS 6 dan versi setelahnya
CatatanCentOS 6 telah mencapai akhir masa dukungan (EOL). Sesuai aturan komunitas Linux, semua konten telah dihapus dari alamat repositori CentOS 6 berikut: http://mirror.centos.org/centos-6/. Jika Anda tetap menggunakan repositori CentOS 6 default di Alibaba Cloud, akan muncul error. Untuk menggunakan paket instalasi tertentu dari CentOS 6, ubah alamat repositori CentOS 6. Untuk informasi selengkapnya, lihat Bagaimana cara mengubah alamat repositori CentOS 6?
sudo yum install libaio libaio-devel fio -yDebian 9 dan versi setelahnya, Ubuntu 14 dan versi setelahnya
PentingKarena Debian 9 dan Debian 10 telah mencapai akhir masa dukungan (EOL), jika Anda menggunakan Instance ECS yang menjalankan Debian 9 atau Debian 10, Anda harus mengganti alamat sumber terlebih dahulu. Untuk informasi selengkapnya, lihat Ganti alamat sumber sistem operasi setelah masa EOL-nya berakhir.
sudo apt-get update sudo apt-get install libaio* fio -yUbah path:
cd /tmpJalankan perintah pengujian kinerja. Untuk informasi selengkapnya, lihat bagian berikut:
Untuk perintah pengujian disk, lihat Perintah pengujian kinerja disk.
Untuk perintah pengujian local disk, lihat Perintah pengujian kinerja local disk.
Analisis hasil pengujian. Nilainya bervariasi untuk disk yang berbeda. Nilai pada gambar berikut hanya untuk referensi.
Untuk hasil IOPS, lihat nilai
IOPS=***, seperti yang ditunjukkan pada gambar berikut:
Untuk hasil throughput, lihat nilai
BW=***, seperti yang ditunjukkan pada gambar berikut:
Untuk hasil latency, lihat nilai lat (usec), seperti yang ditunjukkan pada gambar berikut:

Perintah pengujian kinerja disk
Menjalankan uji stres dengan FIO langsung pada perangkat yang berisi partisi, sistem file, atau data lainnya dapat menyebabkan error sistem file dan kehilangan data. Jika data disk Anda memiliki partisi dan sistem file, buat data disk baru yang kosong untuk pengujian:
Buat disk bayar sesuai penggunaan dengan konfigurasi yang sama dan sambungkan ke instans untuk pengujian. Untuk informasi selengkapnya, lihat Buat data disk kosong.
Setelah pengujian selesai:
Jika Anda ingin menyimpan disk tersebut, inisialisasi ulang data disk.
Jika Anda tidak memerlukan disk tersebut, detach lalu release disk.
Nilai parameter dalam contoh perintah berikut hanya untuk referensi. Ganti /dev/your_device dengan nama perangkat Elastic Block Storage yang ingin Anda uji, yang telah Anda ambil pada Langkah 2. Misalnya, jika nama perangkat disk yang akan diuji adalah /dev/vdb, ganti /dev/your_device dengan /dev/vdb dalam contoh perintah. Untuk informasi selengkapnya tentang parameter FIO, lihat Deskripsi parameter FIO.
Uji IOPS tulis acak disk:
sudo fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Write_TestingUji IOPS baca acak disk:
sudo fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Read_TestingUji throughput tulis berurutan disk:
sudo fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Write_PPS_TestingUji throughput baca berurutan disk:
sudo fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Read_PPS_TestingUji latency tulis acak disk:
sudo fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Write_Latency_TestingUji latency baca acak disk:
sudo fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Read_Latency_Testing
Untuk informasi selengkapnya tentang cara menguji disk yang berbeda, lihat Uji kinerja IOPS ESSD.
Perintah pengujian kinerja local disk
Menjalankan uji stres dengan FIO langsung pada perangkat yang berisi partisi, sistem file, atau data lainnya dapat menyebabkan error sistem file dan kehilangan data. Jika data disk Anda memiliki partisi dan sistem file, buat instans baru dengan local disk untuk pengujian.
Local disk hanya dapat dibuat bersamaan dengan instans. Untuk menguji local disk, buat instans baru dengan konfigurasi yang sama. Untuk informasi selengkapnya, lihat Buat instans menggunakan wizard.
Setelah pengujian selesai, lepaskan instans tersebut jika tidak diperlukan lagi. Untuk informasi selengkapnya, lihat Lepaskan instans.
Perintah pengujian berikut berlaku untuk local disk NVMe SSD dan local disk SATA HDD. Nilai parameter dalam contoh perintah berikut hanya untuk referensi. Ganti /dev/your_device dengan nama local disk yang ingin Anda uji, yang telah Anda ambil pada Langkah 2. Misalnya, jika nama perangkat local disk yang akan diuji adalah /dev/vdb, ganti /dev/your_device dengan /dev/vdb dalam contoh perintah. Untuk informasi selengkapnya tentang parameter FIO, lihat Deskripsi parameter FIO.
Uji IOPS tulis acak local disk:
sudo fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji IOPS baca acak local disk:
sudo fio -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji throughput tulis berurutan local disk:
sudo fio -direct=1 -iodepth=128 -rw=write -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji throughput baca berurutan local disk:
sudo fio -direct=1 -iodepth=128 -rw=read -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji latency tulis acak local disk:
sudo fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji latency baca acak local disk:
sudo fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji latency tulis berurutan local disk:
sudo fio -direct=1 -iodepth=1 -rw=write -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=testUji latency baca berurutan local disk:
sudo fio -direct=1 -iodepth=1 -rw=read -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
Deskripsi parameter FIO
Tabel berikut menjelaskan parameter FIO yang digunakan dalam perintah pengujian.
Parameter | Deskripsi |
direct | Menentukan apakah akan menggunakan direct I/O. Nilai default-nya adalah 1.
|
iodepth | Kedalaman antrian I/O untuk pengujian. Misalnya, |
rw | Kebijakan baca dan tulis untuk pengujian. Anda dapat mengatur parameter ini ke salah satu nilai berikut:
|
ioengine | Engine I/O yang digunakan FIO untuk pengujian. Kami merekomendasikan Anda memilih libaio karena cocok untuk sebagian besar skenario aplikasi. Untuk informasi selengkapnya tentang opsi lainnya, lihat dokumentasi resmi FIO. |
bs | Ukuran blok untuk setiap unit I/O. Nilai default-nya adalah 4 KiB. Anda dapat menentukan nilai terpisah untuk operasi baca dan tulis dalam format read,write. Jika suatu nilai dikosongkan, nilai default akan digunakan. |
size | Ukuran file pengujian. FIO membaca atau menulis ukuran file yang ditentukan lalu menghentikan pengujian, kecuali dibatasi oleh opsi lain seperti runtime. Jika Anda tidak menentukan parameter ini, FIO akan menggunakan ukuran penuh file atau perangkat yang ditentukan. Anda juga dapat menentukan ukuran sebagai persentase dari 1 hingga 100. Misalnya, jika Anda mengatur size ke 20%, FIO akan menggunakan 20% ruang dari file atau perangkat yang ditentukan. |
numjobs | Jumlah thread konkuren untuk pengujian. Nilai default-nya adalah 1. |
runtime | Durasi pengujian. Jika Anda tidak menentukan parameter ini, FIO akan terus berjalan hingga selesai membaca atau menulis file dengan ukuran yang ditentukan oleh parameter size dalam blok-blok berukuran yang ditentukan oleh parameter bs. |
group_reporting | Mode tampilan untuk hasil pengujian. Jika Anda menentukan parameter ini, hasilnya akan menampilkan statistik agregat untuk setiap proses, bukan untuk setiap task. |
filename | Path objek yang akan diuji. Path tersebut dapat berupa Nama perangkat disk atau path file. Dalam topik ini, pengujian FIO dilakukan pada seluruh disk yang tidak memiliki sistem file (raw disk). Untuk mencegah kerusakan data pada disk lain, path contohnya adalah /dev/your_device. Gantilah dengan path aktual. |
name | Nama task pengujian. Anda dapat mengaturnya ke nama apa pun. Misalnya, Rand_Write_Testing. |
Untuk informasi selengkapnya tentang parameter-parameter tersebut, lihat halaman manual FIO.