Criar um disco de referência

Aplica-se a: ✔️ VMs do Windows VMs ✔️ do Linux Conjuntos ✔️ de dimensionamento ✔️ flexíveis Conjuntos de dimensionamento uniformes

O benchmarking é o processo de simular diferentes cargas de trabalho na sua aplicação e medir o desempenho da aplicação para cada carga de trabalho. Ao utilizar os passos descritos no artigo estruturação para elevado desempenho, reuniu os requisitos de desempenho da aplicação. Ao executar ferramentas de referência nas VMs que alojam a aplicação, pode determinar os níveis de desempenho que a sua aplicação pode alcançar com SSDs premium. Neste artigo, fornecemos-lhe exemplos de referência de uma VM Standard_D8ds_v4 aprovisionada com SSDs premium do Azure.

Utilizámos ferramentas de referência comuns DiskSpd e FIO para Windows e Linux, respetivamente. Estas ferramentas geram vários threads simulando uma produção como carga de trabalho e medem o desempenho do sistema. Com as ferramentas, também pode configurar parâmetros como o tamanho do bloco e a profundidade da fila, que normalmente não pode alterar para uma aplicação. Isto dá-lhe mais flexibilidade para impulsionar o desempenho máximo numa VM de alta escala aprovisionada com SSDs premium para diferentes tipos de cargas de trabalho de aplicação. Para saber mais sobre cada ferramenta de referência, visite DiskSpd e FIO.

Para seguir os exemplos abaixo, crie um Standard_D8ds_v4 e anexe quatro SSDs premium à VM. Dos quatro discos, configure três com a colocação em cache do anfitrião como "Nenhum" e coloque-os num volume chamado NoCacheWrites. Configure a colocação em cache do anfitrião como "ReadOnly" no disco restante e crie um volume chamado CacheReads com este disco. Com esta configuração, pode ver o desempenho máximo de Leitura e Escrita de uma VM Standard_D8ds_v4. Para obter passos detalhados sobre como criar um Standard_D8ds_v4 com SSDs premium, veja Estruturar para um elevado desempenho.

Aquecer a Cache

O disco com a colocação em cache do anfitrião ReadOnly é capaz de fornecer IOPS superior ao limite do disco. Para obter este desempenho máximo de leitura da cache do anfitrião, primeiro tem de aquecer a cache deste disco. Isto garante que as E/S de Leitura que a ferramenta de benchmarking irá conduzir no volume CacheReads, atingem a cache e não diretamente no disco. Os resultados da cache resultam em mais IOPS do disco com cache única ativada.

Importante

Tem de aquecer a cache antes de executar os parâmetros de referência sempre que a VM for reiniciada.

DISKSPD

Transfira a ferramenta DISKSP na VM. DISKSPD é uma ferramenta que pode personalizar para criar as suas próprias cargas de trabalho sintéticas. Vamos utilizar a mesma configuração descrita acima para executar testes de referência. Pode alterar as especificações para testar diferentes cargas de trabalho.

Neste exemplo, utilizamos o seguinte conjunto de parâmetros de linha de base:

  • -c200G: cria (ou recria) o ficheiro de exemplo utilizado no teste. Pode ser definido em bytes, KiB, MiB, GiB ou blocos. Neste caso, é utilizado um ficheiro grande de ficheiro de destino de 200 GiB para minimizar a colocação em cache de memória.
  • -w100: especifica a percentagem de operações que são pedidos de escrita (-w0 é equivalente a 100% de leitura).
  • -b4K: indica o tamanho do bloco em bytes, KiB, MiB ou GiB. Neste caso, o tamanho do bloco 4K é utilizado para simular um teste de E/S aleatório.
  • -F4: define um total de quatro threads.
  • -r: indica o teste de E/S aleatório (substitui o parâmetro -s).
  • -o128: indica o número de pedidos de E/S pendentes por destino por thread. Isto também é conhecido como a profundidade da fila. Neste caso, 128 é utilizado para realçar a CPU.
  • -W7200: especifica a duração do tempo de aquecimento antes do início das medições.
  • -d30: especifica a duração do teste, sem incluir o aquecimento.
  • -Sh: Desativar a colocação em cache de escrita de software e hardware (equivalente a -Suw).

Para obter uma lista completa dos parâmetros, veja o repositório do GitHub.

IOPS de escrita máxima

Utilizamos uma profundidade de fila elevada de 128, um pequeno tamanho de bloco de 8 KB e quatro threads de trabalho para conduzir operações de Escrita. Os trabalhadores de escrita estão a conduzir o tráfego no volume "NoCacheWrites", que tem três discos com cache definida como "Nenhum".

Execute o seguinte comando durante 30 segundos de aquecimento e 30 segundos de medição:

diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat

Os resultados mostram que a VM Standard_D8ds_v4 está a fornecer o limite máximo de IOPS de escrita de 12.800.

Para 3208642560 total de bytes, total máximo de E/S de 391680, com um total de 101,97 MiB/s e um total de 13052,65 E/S por segundo.

IOPS de leitura máxima

Utilizamos uma profundidade de fila elevada de 128, um pequeno tamanho de bloco de quatro KB e quatro threads de trabalho para conduzir operações de leitura. Os trabalhadores de leitura estão a conduzir o tráfego no volume "CacheReads", que tem um disco com cache definida como "ReadOnly".

Execute o seguinte comando durante duas horas de aquecimento e 30 segundos de medição:

diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat

Os resultados mostram que a VM Standard_D8ds_v4 está a fornecer o limite máximo de IOPS de leitura de 77.000.

Para 9652785152 total de bytes, houve 2356637 total de E/S, em 306,72 MiB/s totais e um total de 78521,23 E/S por segundo.

Débito máximo

Para obter o débito máximo de leitura e escrita, pode alterar para um tamanho de bloco maior de 64 KB.

FIO

O FIO é uma ferramenta popular para fazer referência ao armazenamento nas VMs do Linux. Tem a flexibilidade de selecionar diferentes tamanhos de E/S, leituras e escritas sequenciais ou aleatórias. Gera threads ou processos de trabalho para realizar as operações de E/S especificadas. Pode especificar o tipo de operações de E/S que cada thread de trabalho tem de executar com ficheiros de trabalho. Criámos um ficheiro de trabalho por cenário ilustrado nos exemplos abaixo. Pode alterar as especificações nestes ficheiros de trabalho para fazer referência a diferentes cargas de trabalho em execução no Armazenamento Premium. Nos exemplos, estamos a utilizar um Standard_D8ds_v4 a executar o Ubuntu. Utilize a mesma configuração descrita no início da secção de referência e aqueça a cache antes de executar os testes de referência.

Antes de começar, transfira o FIO e instale-o na sua máquina virtual.

Execute o seguinte comando para Ubuntu,

apt-get install fio

Utilizamos quatro threads de trabalho para conduzir operações de escrita e quatro threads de trabalho para conduzir operações de leitura nos discos. Os trabalhadores de escrita estão a conduzir o tráfego no volume "nocache", que tem três discos com cache definida como "Nenhum". Os trabalhadores de leitura estão a conduzir o tráfego no volume "readcache", que tem um disco com cache definida como "ReadOnly".

IOPS de escrita máxima

Crie o ficheiro de tarefa com as seguintes especificações para obter o IOPS de Escrita máximo. Dê-lhe o nome "fiowrite.ini".

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[writer1]
rw=randwrite
directory=/mnt/nocache

Tenha em atenção os seguintes aspetos principais que estão em conformidade com as diretrizes de estrutura abordadas nas secções anteriores. Estas especificações são essenciais para impulsionar o IOPS máximo,

  • Uma profundidade de fila elevada de 256.
  • Um pequeno tamanho de bloco de 4 KB.
  • Vários threads a executar escritas aleatórias.

Execute o seguinte comando para iniciar o teste FIO durante 30 segundos,

sudo fio --runtime 30 fiowrite.ini

Enquanto o teste é executado, pode ver o número de IOPS de escrita que a VM e os discos Premium estão a fornecer. Conforme mostrado no exemplo abaixo, o Standard_D8ds_v4 VM está a fornecer o limite máximo de IOPS de escrita de 12.800 IOPS.
O número de VMs IOPS de escrita e SSDs premium estão a ser entregues, o que mostra que as escritas são 13,1 mil IOPS.

IOPS de leitura máxima

Crie o ficheiro de tarefa com as seguintes especificações para obter o IOPS de Leitura máximo. Dê-lhe o nome "fioread.ini".

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

Tenha em atenção os seguintes aspetos principais que estão em conformidade com as diretrizes de estrutura abordadas nas secções anteriores. Estas especificações são essenciais para impulsionar o IOPS máximo,

  • Uma profundidade de fila elevada de 256.
  • Um pequeno tamanho de bloco de 4 KB.
  • Vários threads a executar escritas aleatórias.

Execute o seguinte comando para iniciar o teste FIO durante 30 segundos,

sudo fio --runtime 30 fioread.ini

Enquanto o teste é executado, pode ver o número de IOPS de leitura que a VM e os discos Premium estão a fornecer. Conforme mostrado no exemplo abaixo, o Standard_D8ds_v4 VM está a fornecer mais de 77 000 IOPS de Leitura. Esta é uma combinação do disco e do desempenho da cache.
Captura de ecrã do número de VMs IOPS de escrita e SSDs premium que estão a ser entregues, mostra que as leituras são de 78,6 mil.

IOPS de leitura e escrita máxima

Crie o ficheiro de tarefa com as seguintes especificações para obter o máximo de IOPS de Leitura e Escrita combinados. Dê-lhe o nome "fioreadwrite.ini".

[global]
size=30g
direct=1
iodepth=128
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

[writer1]
rw=randwrite
directory=/mnt/nocache
rate_iops=3200

Tenha em atenção os seguintes aspetos principais que estão em consonância com as diretrizes de estrutura abordadas nas secções anteriores. Estas especificações são essenciais para impulsionar o IOPS máximo,

  • Uma profundidade de fila elevada de 128.
  • Um pequeno tamanho de bloco de 4 KB.
  • Vários threads a executar leituras e escritas aleatórias.

Execute o seguinte comando para iniciar o teste FIO durante 30 segundos,

sudo fio --runtime 30 fioreadwrite.ini

Enquanto o teste é executado, consegue ver o número de IOPS de leitura e escrita combinados que a VM e os discos Premium estão a fornecer. Conforme mostrado no exemplo abaixo, o Standard_D8ds_v4 VM está a fornecer mais de 90 000 IOPS de Leitura e Escrita combinados. Esta é uma combinação do disco e do desempenho da cache.
O IOPS de leitura e escrita combinado mostra que as leituras são de 78,3 mil e as escritas são de 12,6 mil IOPS.

Débito combinado máximo

Para obter o débito máximo combinado de Leitura e Escrita, utilize um tamanho de bloco maior e uma grande profundidade de fila com vários threads a efetuar leituras e escritas. Pode utilizar um tamanho de bloco de 64 KB e uma profundidade de fila de 128.

Passos seguintes

Avance para o nosso artigo sobre a conceção de elevado desempenho.

Nesse artigo, vai criar uma lista de verificação semelhante à aplicação existente para o protótipo. Com as ferramentas de benchmarking, pode simular as cargas de trabalho e medir o desempenho na aplicação protótipo. Ao fazê-lo, pode determinar que oferta de disco pode corresponder ou ultrapassar os requisitos de desempenho da sua aplicação. Em seguida, pode implementar as mesmas diretrizes para a sua aplicação de produção.