Por que o diskspd teria um desempenho melhor sem o cache?

1

No momento, estamos investigando a alta latência de disco em um servidor Windows 2012 R2 executado como um servidor SQL. É uma máquina virtual no VMware e o armazenamento de dados do disco com defeito está vinculado a um LUN de desempenho muito alto em uma SAN.

O SAN mostra um tempo de resposta muito bom para o LUN, mesmo durante incidentes e durante o meu teste. O armazenamento de dados também mostra um tempo de resposta muito bom a cada momento. A CPU e a memória não são o gargalo, verifiquei novamente.

A Microsoft sugeriu que usássemos o diskspd para testar o desempenho do nosso disco. Aqui está o resultado de dois conjuntos de teste. Eu os corri algumas vezes, por um intervalo mais longo e em horários diferentes, então tenho certeza de que o resultado não é incidental.

Linha de Comando: diskspd -b64k -o32 -t4 -d60 -w50 -Sw -r -L -c20G -Z1G C: \ iotest.data

Total de IO fio | bytes | I / Os | MB / s | E / S por s | AvgLat | LatStdDev | arquivo

12623020032 | 192612 | 200,59 | 3209,46 | 38,636 | 21,687

Linha de Comando: diskspd -b64k -o32 -t4 -d60 -w50 -Su -r -L -c20G -Z1G C: \ iotest.data

Total de IO fio | bytes | I / Os | MB / s | E / S por s | AvgLat | LatStdDev | arquivo

78517239808 | 1198078 | 1247.71 | 19963.34 | 6,410 | 8,202

De acordo com a documentação sobre diskspd -Sw, desabilite o comando write-off IO e -Su, desabilitando o armazenamento em cache de software. Deixe-me especificar que com ou sem -Sw, na primeira linha de comando, o resultado é o mesmo me informando que esse sinalizador não tem muito impacto. A partir desta ferramenta (criada e gerenciada pela equipe do Windows), poderíamos concluir que o cache (desabilitar com -Su) está arruinando o desempenho do disco, mas isso não parece certo.

Minhas perguntas são:

  • Por que o cache de software diminuiria o desempenho?

  • Isso afeta a execução da aplicação da mesma forma que afeta esse teste ?

  • O IOMeter me oferece o mesmo desempenho do teste sem software caching, por quê?

Obrigado,

    
por Alex 13.12.2016 / 15:37

2 respostas

0

Você está alterando duas variáveis, armazenadas em buffer e escritas, para que você não saiba o que mudou. Uma comparação melhor seria entre -Sb "buffered" e -Su "unbuffered".

Na verdade, é bem provável que -Sw esteja matando seu desempenho. Qualquer storage array que valha a pena ser chamado tem cache de gravação, portanto, as gravações podem ser reconhecidas mais rapidamente do que podem ser confirmadas nos discos da matriz. Escrever através pode ignorar isso.

Mantendo a verificação de todos os componentes disponíveis no array, SAN e host, software e hardware.

    
por 16.12.2016 / 15:00
0

Você entendeu mal o que o -Sw faz.

Conforme declarado por diskspd docs , -Sw na verdade contorna cache de gravação do SO, pois ele abre o arquivo de destino com FILE_FLAG_WRITE_THROUGH.

O que me surpreende é que sua SAN está honrando essa sinalização: tendo um cache de gravação protegido de perda de energia, as SANs e as matrizes de armazenamento geralmente não respeitam o sinalizador de gravação.

Por outro lado, o teste sem buffer e não escrito mostra resultados muito melhores.

Talvez este seja o seu verdadeiro problema: a sua SAN está honrando um sinalizador escrito (provavelmente inútil, com um cache persistente).

    
por 16.12.2016 / 16:03