Teste o desempenho do disco persistente numa VM do Windows


Este documento descreve como realizar testes de referência do desempenho do disco persistente em instâncias de máquinas virtuais (VMs) do Windows. Para VMs Linux, consulte o artigo sobre como comparar o desempenho do Persistent Disk numa VM Linux.

Para medir os IOPS e o débito de um disco em utilização numa instância em execução, teste o desempenho do sistema de ficheiros com a configuração pretendida. Use esta opção para testar uma carga de trabalho realista sem perder o conteúdo do disco existente. Tenha em atenção que, quando compara o desempenho do sistema de ficheiros num disco existente, existem muitos fatores específicos do seu ambiente de desenvolvimento que podem afetar os resultados da comparação do desempenho e pode não atingir os limites de desempenho do disco.

Para medir o desempenho não processado de um Persistent Disk, faça um teste de referência do dispositivo de blocos diretamente. Use esta opção para comparar o desempenho do disco não processado com os limites de desempenho do disco.

Nas VMs C4, o Windows suporta uma profundidade máxima de 1024 por fila de envio de dispositivos. Quando uma fila fica cheia, o Windows deixa de enviar E/S até que a fila seja parcialmente esvaziada, o que reduz significativamente o desempenho. Para evitar acionar esta condição, recomendamos que limite as cargas de trabalho de testes de referência a uma profundidade da fila agregada de 1024 por volume anexado.

Configure o software de testes de referência

Para testar o desempenho do disco persistente em VMs Windows, use o DISKSPD.

  1. Estabeleça ligação à sua instância de VM.

  2. Abra o Powershell e transfira a ferramenta DISKSPD com o seguinte comando:

    $client = New-Object System.Net.WebClient
    $client.DownloadFile("https://github.com/Microsoft/diskspd/releases/latest/download/DiskSpd.zip","$env:temp\DiskSpd-download.zip")
    Expand-Archive -LiteralPath "$env:temp\DiskSpd-download.zip" C:\DISKSPD
    Get-ChildItem C:\DISKSPD
    

Teste o desempenho de IOPS e débito de um disco numa instância de VM em execução

Para medir as IOPS e a taxa de transferência para uma carga de trabalho realista num disco ativo numa instância de VM em execução sem perder o conteúdo do disco, faça um teste de referência em relação a um novo diretório no sistema de ficheiros existente.

Nos passos seguintes, partimos do princípio de que o disco a testar está montado como D: e os comandos são executados numa janela de Linha de comandos (cmd.exe) com privilégios de administrador:

  1. Estabeleça ligação à sua VM.

  2. Verifique a DISKSPD configuração do software e altere o diretório para o binário de 64 bits:

    cd C:\DISKSPD\amd64
    
  3. Crie um novo ficheiro de 10 GB denominado DISKTEST.DAT no disco:

    set TESTFILE=D:\DISKTEST.DAT
    diskspd -d0 -c10G %TESTFILE%
    
  4. Teste a taxa de transferência de gravação executando gravações sequenciais com vários streams paralelos (16 ou mais), usando um tamanho de bloco de E/S de 1 MB e uma profundidade de E/S de, pelo menos, 64:

    diskspd -d300 -b1M -o64 -Sh -w100 -t16 -si %TESTFILE%
    
  5. Teste as IOPS de escrita realizando escritas aleatórias, usando um tamanho de bloco de E/S de 4 KB e uma profundidade de E/S de, pelo menos, 256:

    diskspd -d300 -b4K -o256 -Sh -w100 -r %TESTFILE%
    
  6. Teste o débito de leitura executando leituras sequenciais com vários fluxos paralelos (16 ou mais), usando um tamanho de bloco de E/S de 1 MB e uma profundidade de E/S de, pelo menos, 64:

    diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTFILE%
    
  7. Teste as IOPS de leitura fazendo leituras aleatórias, usando um tamanho de bloco de E/S de 4 KB e uma profundidade de E/S de, pelo menos, 256:

    diskspd -d300 -b4K -o256 -Sh -r %TESTFILE%
    
  8. Limpar:

    del %TESTFILE%
    

Testes de referência do desempenho do disco persistente não processado

Para medir o desempenho dos volumes do disco persistente apenas fora do seu ambiente de desenvolvimento, teste o desempenho de leitura e escrita de um dispositivo de blocos num disco persistente e numa VM descartáveis.

  1. Criar e iniciar uma instância de VM.

  2. Adicione um disco persistente à instância de VM que quer usar como referência.

  3. Estabeleça ligação à sua instância de VM.

  4. Verifique a DISKSPD configuração do software e altere o diretório para o binário de 64 bits:

    cd C:\DISKSPD\amd64
    
  5. Certifique-se de que não existem partições não reservadas no disco. Introduza diskpart numa janela da Linha de comandos com privilégios elevados.

    diskpart
    
  6. Liste os discos anexados à VM:

    DISKPART> list disk
    

    A saída mostra o disco de 1 TB recém-criado, que é o disco 1 na saída de exemplo seguinte:

      Disk ###  Status         Size     Free     Dyn  Gpt
      --------  -------------  -------  -------  ---  ---
      Disk 0    Online          120 GB  1024 KB        *
      Disk 1    Online         1024 GB  1023 GB        *
    
  7. Selecione o disco que pretende testar.

    DISKPART> select disk 1
    
  8. Apresentar a lista das partições no disco selecionado.

    DISKPART> list partition
    
       Partition ###  Type              Size       Offset
       -------------  ----------------  --------   -------
       Partition 1    Reserved              15 MB    17 KB
       Partition 2    Primary             1024 GB    16 MB
    
  9. Selecione a partição principal 2:

    DISKPART> select partition 2
    
  10. Elimine a partição selecionada:

    DISKPART> delete partition
    
  11. Sair do diskpart

    DISKPART> exit
    

Os passos anteriores devem ser repetidos se o disco que pretende testar tiver outras partições além da partição reservada. Quando apenas restar a partição reservada, continue com os passos seguintes:

  1. Depois de identificar o disco e verificar que não existem partições, defina a variável de ambiente TESTDRIVE como "#" seguida do número do disco a testar.

    C:/> set TESTDRIVE=#1
    
  2. Teste a taxa de transferência de escrita executando escritas sequenciais com vários streams paralelos (16 ou mais), usando um tamanho de bloco de E/S de 1 MB e uma profundidade de E/S de, pelo menos, 64:

    diskspd -d300 -b1M -o64 -Sh -t16 -si -w0 %TESTDRIVE%
    
  3. Teste as IOPS de escrita realizando escritas aleatórias, usando um tamanho de bloco de E/S de 4 KB e uma profundidade de E/S de, pelo menos, 256:

    diskspd -d300 -b4K -o256 -Sh -r -w0 %TESTDRIVE%
    
  4. Teste a latência de escrita. Durante o teste da latência de E/S, a VM não pode atingir a largura de banda máxima nem os IOPS. Caso contrário, a latência observada não reflete a latência de E/S real do disco persistente.

    diskspd -d300 -b4K -o4 -Sh -r -w0 -L %TESTDRIVE%
    
  5. Teste a taxa de transferência de leitura executando leituras sequenciais com vários fluxos paralelos (16 ou mais), usando um tamanho de bloco de E/S de 1 MB e uma profundidade de E/S de, pelo menos, 64:

    diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTDRIVE%
    
  6. Teste as IOPS de leitura fazendo leituras aleatórias, usando um tamanho de bloco de E/S de 4 KB e uma profundidade de E/S de, pelo menos, 256:

    diskspd -d300 -b4K -o256 -Sh -r %TESTDRIVE%
    
  7. Para testar a latência de leitura, é importante preencher o disco com dados para obter uma medição de latência realista. A VM não pode atingir os limites de IOPS nem de débito durante este teste, porque, depois de o disco persistente atingir o limite de saturação, rejeita as operações de E/S recebidas, o que se reflete num aumento artificial da latência de E/S.

    diskspd -d300 -b4K -o4 -Sh -r -L %TESTDRIVE%
    
  8. Teste a largura de banda de leitura sequencial.

    diskspd -d300 -b1M -o64 -Sh -t4 -si %TESTDRIVE%
    
  9. Teste a largura de banda de escrita sequencial.

    diskspd -d300 -b1M -o64 -Sh -t4 -si -w100 %TESTDRIVE%
    
  10. Limpe o disco persistente e a VM descartáveis:

    1. Elimine o disco usado para testar o desempenho.
    2. Elimine a VM criada para testes de referência de desempenho.

O que se segue?