Tabela de conteúdos

Performance de Disco

Um dos aspecto mais importantes na avaliação de performance de uma solução de Nuvem é a velocidade de acesso ao disco persistentes que a imagem enxerga. Obviamente temos diferentes tecnologias de disco, sejam elas os discos rotativos eletromagnéticos (HDD), com interface SATA ou SAS, discos baseados em estado sólido (SDD) ou mais recentemente discos NVME.

Abaixo encontraremos alguns comandos de fácil execução e que quando avaliados em conjunto, podemo servir de base de comparação para a avaliação das necessidades e do desempenho que a nuvem entrega.

Escrita Linear - DD

Talvez o mais simples e mais rápido seja uma escrita linear simples de um arquivo via DD:

Para escrever 1G bytes:

dd if=/dev/zero of=/root/perf-ssd bs=1G count=1 oflag=direct

Para escrever 2G bytes:

dd if=/dev/zero of=/root/perf-ssd bs=2G count=1 oflag=direct

Leitura de Disco - HDParm

Por exemplo, para avaliar a performance de leitura do vda1, podemos:

hdparm -Tt /dev/vda1

Flexible I/O Tester

O fio possibilita testes mais complexos, tanto lineares quanto randômicos, de escrita e leitura.

Syntaxe

sudo fio --time_based --runtime=1800 --gtod_reduce=1 --numjobs=4  --size=1g --description=4K_QD64_RandWrite --blocksize=4K --rw=randwrite --direct=1 --ioengine=libaio --iodepth=64 --group_reporting=1 --name=rdwrite

Parâmetros tipicamente modificados:

Para mais detalhes: https://linux.die.net/man/1/fio

Exemplos

Testes de Random Read e Random Write em geral são feitos com blocos pequenos, no intuito de medir IOPS:

fio --time_based --gtod_reduce=1 --numjobs=4  --runtime=300 --size=1g --description=4K_RandRead --blocksize=4K --rw=randread --direct=1 --ioengine=libaio --iodepth=64 --group_reporting=1 --name=randread
sudo fio --time_based --gtod_reduce=1 --numjobs=4 --runtime=300 --size=1g --description=4K_RandWrite --blocksize=4K --rw=randwrite --direct=1 --ioengine=libaio --iodepth=64 --group_reporting=1 --name=randwrite

Testes de Sequential Read and Write são feitos para medir taxa de escrita e leitura e usam blocos grandes:

sudo fio --time_based --gtod_reduce=1 --numjobs=1 --runtime=300 --size=1g --description=2G_SeqRead --blocksize=2048K --rw=read --direct=1 --ioengine=libaio --iodepth=128 --group_reporting=1 --name=seqread
sudo fio --time_based --gtod_reduce=1 --numjobs=1 --runtime=300 --size=1g --description=2G_SeqWrite --blocksize=2048K --rw=write --direct=1 --ioengine=libaio --iodepth=128 --group_reporting=1 --name=seqwrite