Memverifikasi performa

Halaman ini memberikan detail tentang cara memverifikasi performa volume.

Mengukur performa volume menggunakan Fio

Gunakan alat generator I/O, Fio, untuk mengukur performa dasar pengukuran.

Menggunakan Fio

Fio menerapkan beban kerja 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 tulis acak 4k dengan satu thread yang berjalan selama 60 detik, yang merupakan cara yang berguna untuk mengukur latensi dasar pengukuran. Dalam perintah berikut, parameter --directory mengarah ke folder dengan berbagi NetApp Volumes yang terpasang:

  $ 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.89

    Latensi 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=120

    Contoh sebelumnya menunjukkan rata-rata 2.000 IOPS. Nilai tersebut diharapkan untuk tugas single-thread 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.09

    Rata-rata throughput adalah 8.002 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 dasar untuk performa volume. Hal ini disebabkan oleh 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 perjalanan bolak-balik, yang merupakan estimasi kasar latensi Anda.

Latensi dipengaruhi oleh ukuran blok dan apakah Anda melakukan operasi baca atau tulis. Sebaiknya gunakan parameter berikut untuk mengukur latensi dasar pengukuran antara klien dan volume:

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 menghasilkan latensi yang lebih tinggi, dengan operasi baca yang lebih cepat daripada operasi tulis. Hasilnya dapat ditemukan di baris lat.

Mengukur IOPS

IOPS adalah hasil langsung dari latensi dan konkurensi. 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 (konkurensi) agar sesuai dengan beban kerja Anda. Hasilnya dapat ditemukan di baris iops.

Mengukur throughput

Throughput adalah IOPS yang 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 (konkurensi) agar sesuai dengan beban kerja Anda. Anda hanya dapat mencapai throughput tinggi menggunakan ukuran blok 64k atau lebih besar dan konkurensi tinggi.

Langkah selanjutnya

Tinjau tolok ukur performa.