Halaman ini menjelaskan cara memverifikasi performa volume menggunakan alat Fio. Untuk mengoptimalkan aplikasi, penting untuk menetapkan performa dasar untuk volume Anda.
Mengukur performa volume menggunakan Fio
Gunakan alat pembuat I/O, Fio, untuk mengukur performa dasar.
Menggunakan Fio
Fio menerapkan workload yang dapat Anda tentukan melalui antarmuka command line atau file konfigurasi. Saat berjalan, Fio menampilkan indikator progres dengan throughput saat ini dan angka input dan output per detik (IOPS). Setelah berakhir, ringkasan mendetail akan ditampilkan.
Contoh hasil Fio
Contoh berikut menunjukkan tugas penulisan acak 4k ber-thread tunggal yang berjalan selama 60 detik, yang merupakan cara yang berguna untuk mengukur latensi dasar. Pada perintah berikut, parameter --directory mengarah ke folder dengan share NetApp Volumes yang di-mount:
$ FIO_COMMON_ARGS=--size=10g --fallocate=none --direct=1 --runtime=60 --time_based --ramp_time=5
$ fio $FIO_COMMON_ARGS --directory=/netapp --ioengine=libaio --rw=randwrite --bs=4k --iodepth=1 --name=nv
cvs: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.28
Starting 1 process
cvs: Laying out IO file (1 file / 10240MiB)
Jobs: 1 (f=1): [w(1)][100.0%][w=7856KiB/s][w=1964 IOPS][eta 00m:00s]
cvs: (groupid=0, jobs=1): err= 0: pid=1891: Wed Dec 21 14:56:37 2022
write: IOPS=1999, BW=7999KiB/s (8191kB/s)(469MiB/60001msec); 0 zone resets
slat (usec): min=4, max=417, avg=12.06, stdev= 5.71
clat (usec): min=366, max=27978, avg=483.59, stdev=91.34
lat (usec): min=382, max=28001, avg=495.96, stdev=91.89
clat percentiles (usec):
| 1.00th=[ 408], 5.00th=[ 429], 10.00th=[ 437], 20.00th=[ 449],
| 30.00th=[ 461], 40.00th=[ 469], 50.00th=[ 482], 60.00th=[ 490],
| 70.00th=[ 498], 80.00th=[ 515], 90.00th=[ 529], 95.00th=[ 553],
| 99.00th=[ 611], 99.50th=[ 652], 99.90th=[ 807], 99.95th=[ 873],
| 99.99th=[ 1020]
bw ( KiB/s): min= 7408, max= 8336, per=100.00%, avg=8002.05, stdev=140.09, samples=120
iops : min= 1852, max= 2084, avg=2000.45, stdev=35.06, samples=120
lat (usec) : 500=70.67%, 750=29.17%, 1000=0.15%
lat (msec) : 2=0.01%, 4=0.01%, 50=0.01%
cpu : usr=2.04%, sys=3.25%, ctx=120561, majf=0, minf=58
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,119984,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=7999KiB/s (8191kB/s), 7999KiB/s-7999KiB/s (8191kB/s-8191kB/s), io=469MiB (491MB), run=60001-60001msec
Baca baris berikut untuk mengetahui detail tentang hasil performa:
Latensi:
lat (usec): min=382, max=28001, avg=495.96, stdev=91.89Latensi rata-rata adalah 495,96 mikrodetik (usec), kira-kira 0,5 md, yang merupakan latensi ideal.
IOPS:
min= 1852, max= 2084, avg=2000.45, stdev=35.06, samples=120Contoh sebelumnya menunjukkan rata-rata 2.000 IOPS. Nilai tersebut diharapkan untuk tugas berutas tunggal dengan latensi 0,5 md (
IOPS = 1000 ms/0.5 ms = 2000).Throughput:
bw ( KiB/s): min= 7408, max=8336, per=100.00%, avg=8002.05, stdev=140.09Rata-rata throughput adalah 8002 KiBps, yang merupakan hasil yang diharapkan untuk 2.000 IOPS dengan ukuran blok 4 KiB (
2000 1/s * 4 KiB = 8,000 KiB/s).
Mengukur latensi
Latensi adalah metrik mendasar untuk performa volume. Hal ini merupakan hasil dari kemampuan klien dan server, jarak antara klien dan server (volume Anda), dan peralatan di antaranya. Komponen utama metrik ini adalah latensi yang disebabkan oleh jarak.
Anda dapat melakukan ping ke IP volume untuk mendapatkan waktu pulang pergi, yang merupakan perkiraan kasar latensi Anda.
Latensi dipengaruhi oleh ukuran blok dan apakah Anda melakukan operasi baca atau tulis. Sebaiknya gunakan parameter berikut untuk mengukur latensi dasar antara klien dan volume Anda:
Linux
fio --directory=/netapp \ --ioengine=libaio \ --rw=randwrite \ --bs=4k --iodepth=1 \ --size=10g \ --fallocate=none \ --direct=1 \ --runtime=60 \ --time_based \ --ramp_time=5 \ --name=latency
Windows
fio --directory=Z\:\ --ioengine=windowsaio --thread --rw=randwrite --bs=4k --iodepth=1 --size=10g --fallocate=none --direct=1 --runtime=60 --time_based --ramp_time=5 --name=latency
Ganti parameter rw (read/write/randread/randwrite) dan bs (ukuran blok)
agar sesuai dengan beban kerja Anda. Ukuran blok yang lebih besar akan menghasilkan latensi yang lebih tinggi, dengan operasi baca lebih cepat daripada operasi tulis. Hasilnya dapat ditemukan di baris lat.
Mengukur IOPS
IOPS adalah hasil langsung dari latensi dan serentak. Gunakan salah satu tab berikut berdasarkan jenis klien Anda untuk mengukur IOPS:
Linux
fio --directory=/netapp \ --ioengine=libaio \ --rw=randread \ --bs=4k \ --iodepth=32 \ --size=10g \ --fallocate=none \ --direct=1 \ --runtime=60 \ --time_based \ --ramp_time=5 \ --name=iops
Windows
fio --directory=Z\:\ --ioengine=windowsaio --thread --rw=randread --bs=4k --iodepth=32 --size=10g --fallocate=none --direct=1 --runtime=60 --time_based --ramp_time=5 --numjobs=16 --name=iops
Ganti parameter rw (read/write/randread/randwrite), bs (blocksize),
dan iodepth (concurrency) agar sesuai dengan beban kerja Anda. Hasilnya dapat ditemukan di baris iops.
Mengukur throughput
Throughput adalah IOPS dikalikan dengan ukuran blok. Gunakan salah satu tab berikut berdasarkan jenis klien Anda untuk mengukur throughput:
Linux
fio --directory=/netapp \ --ioengine=libaio \ --rw=read \ --bs=64k \ --iodepth=32 \ --size=10g \ --fallocate=none \ --direct=1 \ --runtime=60 \ --time_based \ --ramp_time=5 \ --numjobs=16 \ --name=throughput
Windows
fio --directory=Z\:\ --ioengine=windowsaio --thread --rw=read --bs=64k --iodepth=32 --size=10g --fallocate=none --direct=1 --runtime=60 --time_based --ramp_time=5 --numjobs=16 --name=throughput
Ganti parameter rw (read/write/randread/randwrite), bs (blocksize),
dan iodepth (concurrency) agar sesuai dengan workload Anda. Anda hanya dapat mencapai throughput tinggi menggunakan ukuran blok 64k atau lebih besar dan konkurensi tinggi.
Langkah berikutnya
Tinjau tolok ukur performa.