Esta página fornece detalhes sobre como validar o desempenho do volume.
Meça o desempenho do volume com o Fio
Use a ferramenta de gerador de E/S, Fio, para medir o desempenho de base.
Usar o Fio
O Fio aplica uma carga de trabalho que pode especificar através de uma interface de linhas de comando ou de um ficheiro de configuração. Enquanto é executado, o Fio mostra um indicador de progresso com a taxa de transferência atual e os números de entrada e saída por segundo (IOPS). Após o fim, é apresentado um resumo detalhado.
Exemplo de resultados do Fio
Os exemplos seguintes mostram uma tarefa de escrita aleatória de 4k de thread único em execução durante 60 segundos, o que é uma forma útil de medir a latência de base. Nos comandos
seguintes, o parâmetro --directory
aponta para uma pasta com uma partilha de volumes do NetApp montada:
$ 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
Leia as seguintes linhas para ver detalhes sobre os resultados de desempenho:
Latência:
lat (usec): min=382, max=28001, avg=495.96, stdev=91.89
A latência média é de 495,96 microssegundos (usec), aproximadamente 0,5 ms, o que é uma latência ideal.
IOPS:
min= 1852, max= 2084, avg=2000.45, stdev=35.06, samples=120
O exemplo anterior mostra uma média de 2000 IOPS. Esse valor é esperado para uma tarefa de thread único com uma latência de 0,5 ms (
IOPS = 1000 ms/0.5 ms = 2000
).Débito:
bw ( KiB/s): min= 7408, max=8336, per=100.00%, avg=8002.05, stdev=140.09
A média de débito é de 8002 KiBps, que é o resultado esperado para 2000 IOPS com um tamanho de bloco de 4 KiB (
2000 1/s * 4 KiB = 8,000 KiB/s
).
Medir latência
A latência é uma métrica fundamental para o desempenho do volume. É o resultado das capacidades do cliente e do servidor, da distância entre o cliente e o servidor (o seu volume) e do equipamento entre eles. O componente principal da métrica é a latência induzida pela distância.
Pode enviar um ping para o IP do volume para obter o tempo de resposta, que é uma estimativa aproximada da sua latência.
A latência é afetada pelo tamanho do bloco e se está a fazer operações de leitura ou escrita. Recomendamos que use os seguintes parâmetros para medir a latência de base entre o seu cliente e um 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
Substitua os parâmetros rw
(read/write/randread/randwrite) e bs
(tamanho do bloco)
para se adequarem à sua carga de trabalho. Os tamanhos de blocos maiores resultam numa latência mais elevada, em que as leituras são mais rápidas do que as escritas. Pode encontrar os resultados na linha lat
.
Meça os IOPS
Os IOPS são o resultado direto da latência e da concorrência. Use um dos seguintes separadores com base no seu tipo de cliente para medir as 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
Substitua os parâmetros rw
(read/write/randread/randwrite), bs
(blocksize) e iodepth
(concurrency) para se adequarem à sua carga de trabalho. Pode encontrar os resultados na linha iops
.
Meça o débito
A taxa de transferência é o número de IOPS multiplicado pelo tamanho do bloco. Use um dos seguintes separadores com base no seu tipo de cliente para medir a taxa de transferência:
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
Substitua os parâmetros rw
(read/write/randread/randwrite), bs
(blocksize) e iodepth
(concurrency) para se adequarem à sua carga de trabalho. Só pode alcançar um débito elevado usando tamanhos de blocos de 64 KB ou superiores e uma elevada concorrência.
O que se segue?
Reveja as referências de desempenho.