Database
 sql >> Base de Dados >  >> RDS >> Database

Usando o Microsoft DiskSpd para testar seu subsistema de armazenamento


Anteriormente, abordei os conceitos básicos de métricas e testes do subsistema de armazenamento em meu artigo Analisando o desempenho do subsistema de E/S para SQL Server, incluindo uma introdução ao CrystalDiskMark 4.0. O CrystalDiskMark foi recentemente reescrito para usar o Microsoft DiskSpd para seus testes, o que o torna uma ferramenta ainda mais valiosa para seus esforços iniciais de teste do subsistema de armazenamento. O DiskSpd fornece a funcionalidade necessária para gerar uma ampla variedade de padrões de solicitação de disco, o que pode ser muito útil no diagnóstico e análise de problemas de desempenho de E/S com muito mais flexibilidade do que ferramentas de benchmark mais antigas, como SQLIO. É extremamente útil para testes de subsistema de armazenamento sintético quando você deseja um nível de controle maior do que o disponível no CrystalDiskMark.

Agora, vamos nos aprofundar um pouco mais em como usar o Microsoft DiskSpd para testar seu subsistema de armazenamento sem usar o CrystalDiskMark 4.0. Para fazer isso, você precisará baixar e descompactar o DiskSpd. Para facilitar as coisas, sempre copio o arquivo executável diskspd.exe desejado da pasta executável apropriada (amd64fre, armfre ou x86fre) para um caminho curto e simples como C:\DiskSpd . Na maioria dos casos, você desejará a versão de 64 bits do DiskSpd da pasta amd64fre.

Depois de ter o arquivo executável diskspd.exe disponível, você precisará abrir um prompt de comando com direitos administrativos (escolhendo “Executar como administrador”) e navegar até o diretório onde copiou o arquivo diskspd.exe.

Aqui estão alguns dos parâmetros de linha de comando com os quais você vai querer começar:
Parâmetro Descrição
-b Tamanho do bloco de E/S, especificado como (K/M/G). Por exemplo –b8K significa um tamanho de bloco de 8 KB, que é relevante para o SQL Server
-d Duração do teste em segundos. Testes de 30 a 60 segundos geralmente são longos o suficiente para obter resultados válidos
-o E/Ss pendentes (profundidade da fila) por destino, por thread de trabalho
-t Threads de trabalho por destino de arquivo de teste
-h Desabilite o cache de software no nível do sistema operacional e o cache de gravação de hardware, o que é uma boa ideia para testar o SQL Server
-r Sinalizador aleatório ou sequencial. Se –r for usado, testes aleatórios são feitos, caso contrário, testes sequenciais são feitos
-w Escrever porcentagem. Por exemplo, –w25 significa 25% de gravações, 75% de leituras
-Z Tamanho do buffer de origem de gravação de teste de carga de trabalho, especificado como (K/M/G). Usado para fornecer dados aleatórios para gravações, o que é uma boa ideia para testes do SQL Server
-L Capturar informações de latência durante o teste, o que é uma boa ideia para testar o SQL Server
-c Cria arquivos de carga de trabalho do tamanho especificado, especificado como (K/M/G)

Tabela 1:Parâmetros básicos de linha de comando para DiskSpd

Você também desejará especificar o local do arquivo de teste e o nome do arquivo para os resultados no final da linha. Aqui está um exemplo de linha de comando:
diskspd –b8K –d30 –o4 –t8 –h –r –w25 –L –Z1G –c20G T:\iotest.dat> DiskSpeedResults.txt
Esta linha de comando de exemplo executará um teste de E/S aleatório de 30 segundos usando um arquivo de teste de 20 GB localizado na unidade T:, com uma taxa de gravação de 25% e leitura de 75%, com um tamanho de bloco de 8K. Ele usará oito threads de trabalho, cada um com quatro E/Ss pendentes e uma semente de valor de entropia de gravação de 1 GB. Ele salvará os resultados do teste em um arquivo de texto chamado DiskSpeedResults.txt. Este é um bom conjunto de parâmetros para uma carga de trabalho OLTP do SQL Server.

Figura 1:exemplo de linha de comando para DiskSpd

A execução do teste começa com um tempo de aquecimento padrão de cinco segundos (antes de qualquer medição realmente começar) e, em seguida, o teste real será executado pela duração especificada em segundos com um tempo de resfriamento padrão de zero segundos. Quando o teste terminar, o DiskSpd fornecerá uma descrição do teste e os resultados detalhados. Por padrão, este será um resumo de texto simples em um arquivo de texto usando o nome de arquivo que você especificou, que estará no mesmo diretório que o executável diskspd.

Aqui estão os resultados para este teste específico executado em minha estação de trabalho.

Figura 2:Exemplo de resultados do teste DiskSpd

A primeira secção dos resultados dá-lhe a linha de comandos exacta que foi usada para o teste, depois especifica todos os parâmetros de entrada que foram usados ​​para a execução do teste (que incluem os valores predefinidos que podem não ter sido especificados na linha de comandos real ). Em seguida, os resultados do teste são mostrados começando com o tempo real de teste, a contagem de encadeamentos e a contagem do processador lógico. A seção CPU mostra a utilização da CPU para cada processador lógico, incluindo tempo de usuário e kernel, para o intervalo de teste.

A parte mais interessante dos resultados do teste vem a seguir. Você obtém o total de bytes, total de E/S, MB/segundo, E/S por segundo (IOPS) e sua latência média em milissegundos. Esses resultados são divididos para cada thread (quatro em nosso caso), com seções separadas nos resultados para Total IO, Read IO e Write IO. Os resultados para cada thread devem ser muito semelhantes na maioria dos casos. Em vez de focar inicialmente nos valores absolutos de cada medição, gosto de comparar os valores quando executo o mesmo teste em unidades lógicas diferentes (depois de alterar o local do arquivo de teste na linha de comando), o que permite comparar o desempenho para cada unidade lógica.

A última seção dos resultados do teste é ainda mais interessante. Ele mostra uma análise de percentil da distribuição dos resultados do teste de latência a partir do valor mínimo em milissegundos até o valor máximo em milissegundos, dividido para leituras, gravações e latência total. Os “nove” na coluna %-ile referem-se ao número de noves, onde 3-nonos significa 99,9, 4-nonos significa 99,99, etc. um número relativamente baixo de operações totais. Se você quiser caracterizar com precisão os percentis mais altos, será necessário executar um teste de duração mais longa que gere um número maior de operações de E/S separadas.

O que você deseja procurar nesses resultados é o ponto em que os valores dão um grande salto. Por exemplo, neste teste podemos ver que 99% das leituras tiveram uma latência de 1,832 milissegundos ou menos.

Figura 3:distribuição de resultados de latência

Como você pode ver, executar o DiskSpd é realmente muito simples quando você entende o que os parâmetros básicos significam e como eles são usados. Você não apenas pode executar o DiskSpd a partir de uma linha de comando antiquada, como também pode executá-lo usando o PowerShell. O DiskSpd também fornece informações muito mais detalhadas do que você obtém do SQLIO. A parte mais complicada de usar o DiskSpd é analisar e interpretar os resultados, algo que abordarei em um artigo futuro.