Verifica el rendimiento

En esta página, se proporcionan detalles para verificar el rendimiento del volumen.

Mide el rendimiento del volumen con Fio

Usa la herramienta generadora de E/S, Fio, para medir el rendimiento del modelo de referencia.

Usa Fio

Fio aplica una carga de trabajo que puedes especificar a través de una interfaz de línea de comandos o un archivo de configuración. Mientras se ejecuta, Fio muestra un indicador de progreso con la capacidad de procesamiento actual y los números de entrada y salida por segundo (IOPS). Cuando finaliza, se muestra un resumen detallado.

Ejemplo de resultados de Fio

En los siguientes ejemplos, se muestra una tarea de escritura aleatoria de 4K de un solo subproceso que se ejecuta durante 60 segundos, lo que es una forma útil de medir la latencia del modelo de referencia. En los siguientes comandos, el parámetro --directory apunta a una carpeta con un uso compartido de NetApp Volumes activado:

  $ 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

Lee las siguientes líneas para obtener detalles sobre los resultados de rendimiento:

  • Latencia: lat (usec): min=382, max=28001, avg=495.96, stdev=91.89

    La latencia promedio es de 495.96 microsegundos (μs), aproximadamente 0.5 ms, que es una latencia ideal.

  • IOPS: min= 1852, max= 2084, avg=2000.45, stdev=35.06, samples=120

    En el ejemplo anterior, se muestra un promedio de 2,000 IOPS. Se espera ese valor para una tarea de subproceso único con una latencia de 0.5 ms (IOPS = 1000 ms/0.5 ms = 2000).

  • Capacidad de procesamiento: bw ( KiB/s): min= 7408, max=8336, per=100.00%, avg=8002.05, stdev=140.09

    El promedio de capacidad de procesamiento es de 8,002 KiBps, que es el resultado esperado para 2,000 IOPS con un tamaño de bloque de 4 KiB (2000 1/s * 4 KiB = 8,000 KiB/s).

Mide la latencia

La latencia es una métrica fundamental para el rendimiento del volumen. Es el resultado de las capacidades del cliente y del servidor, la distancia entre el cliente y el servidor (tu volumen) y el equipo intermedio. El componente principal de la métrica es la latencia inducida por la distancia.

Puedes hacer ping a la IP de tu volumen para obtener el tiempo de ida y vuelta, que es una estimación aproximada de la latencia.

La latencia se ve afectada por el tamaño del bloque y si realizas operaciones de lectura o escritura. Te recomendamos que uses los siguientes parámetros para medir la latencia del modelo de referencia entre tu cliente y un volumen:

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

Reemplaza los parámetros rw (lectura/escritura/lectura aleatoria/escritura aleatoria) y bs (tamaño del bloque) para que se ajusten a tu carga de trabajo. Los tamaños de bloque más grandes generan una latencia más alta, en la que las operaciones de lectura son más rápidas que las de escritura. Los resultados se pueden encontrar en la fila lat.

Mide los IOPS

Las IOPS son un resultado directo de la latencia y la simultaneidad. Usa una de las siguientes pestañas según el tipo de cliente para medir los 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

Reemplaza los parámetros rw (lectura/escritura/lectura aleatoria/escritura aleatoria), bs (tamaño de bloque) y iodepth (simultaneidad) para que se ajusten a tu carga de trabajo. Los resultados se pueden encontrar en la fila iops.

Mide la capacidad de procesamiento

La capacidad de procesamiento es la cantidad de IOPS multiplicada por el tamaño del bloque. Usa una de las siguientes pestañas según el tipo de cliente para medir la capacidad de procesamiento:

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

Reemplaza los parámetros rw (lectura/escritura/lectura aleatoria/escritura aleatoria), bs (tamaño de bloque) y iodepth (simultaneidad) para que se ajusten a tu carga de trabajo. Solo puedes lograr una alta productividad con tamaños de bloque de 64 K o más y una alta simultaneidad.

¿Qué sigue?

Revisa las comparativas de rendimiento.