Root - causando um desempenho muito diferente no benchmark io_Sone O_SYNC para dois fabricantes de HDD

5

Eu tenho dois servidores A e B com a seguinte configuração:

  • A: HDDs de 4 TB, com RAID 1 (MegaRAID SAS 2008), 128 MB de cache, sem BBU, modo write-through, 7,2k RPM, fabricante A.
  • B: HDDs de 1,5 TB, com RAID 1 (MegaRAID SAS 3108), 64 MB de cache, com BBU, mas modo write-through, 10,5k RPM, fabricante B.

Eu corro o seguinte benchmark em uma única partição RAID: iozone -a -s 10240 -r 4 -+r

Resultados de A (excerto):

                                                            random  random    bkwd   record   stride
          kB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
       10240       4     108     474  4193564  6667334 6556395     701 4058822      475  3653175  2303202  2616201 6785306  6101840

Resultados de B (trecho):

                                                            random  random    bkwd   record   stride
          kB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
       10240       4    3332   46961  5478410  6836065 4994841    2951 2853077      728  2299133  1722202  2008983 4549365  4712594

Ambos os servidores têm o cache write-through habilitado, mas não consigo causar root porque o desempenho do write-throughput é terrivelmente lento no servidor A (108kB / s) quando comparado ao servidor B (3332 kB / s), supondo Estou interpretando os resultados corretamente.

Qual poderia ser o motivo? Ambos os servidores possuem outras opções de sistema de arquivos idênticas (ext4 / mesmas opções padrão).

Poderia ser apenas o caso de discos do fabricante B serem superiores aos de A para cargas de trabalho que envolvem muitas gravações síncronas?

obrigado.

    
por Vimal 30.03.2016 / 15:15

1 resposta

3

Com relação à diferença de 33x medida entre seus resultados, acompanhando nossa discussão nos comentários, descobriu-se que MegaCli64 -LDGetProp -DskCache -Lall -aAll mostrou que configuração B tinha o cache da unidade de disco habilitado por padrão, enquanto foi desativado na configuração A .

Usar MegaCli64 -LDSetProp -DisDskCache -Immediate -Lall -aAll resultou em ambos os sistemas mostrando um desempenho semelhante.

É seguro executar o RAID com o cache da unidade de disco ativado?

A execução de um RAID com cache de unidade de disco habilitado é, na verdade, semelhante à execução de um controlador RAID com cache volátil não suportado pela BBU com o cache de gravação ativado (modo de write-back forçado). Ele melhora o desempenho, mas ao mesmo tempo aumenta a possibilidade de perda de dados e inconsistência de dados no caso de falta de energia.

Se você quiser evitar essa chance, embora ainda tenha um desempenho de E / S decente, é aconselhável ter um controlador com cache suportado pela BBU e configurar seu volume para o modo write-back com o cache de disco desativado.

A diferença entre seus dois controladores RAID

Eu não sei se você já sabia, mas há mais entre software e hardware RAID ( este é um artigo interessante sobre isso ).

No final, o MegaRAID SAS 2008 é mais ou menos um HBA ou IO-Controller com capacidade RAID adicionada, enquanto o MegaRAID SAS 3108 é um controlador RAID real (também chamado de ROC ou RAID-on-Chip), que possui um processador dedicado para manipular os cálculos RAID.

O SAS 2008 é especialmente conhecido pelo desempenho horrível de gravação com alguns firmwares OEM (como o da DELL no PERC H310 que mencionei no comentário).

Especialmente o modo síncrono em combinação com o comprimento de registro e o tamanho de arquivo escolhidos parece resultar em resultados realmente ruins com software / falso RAID.

Para referência, é isso que recebo em minha estação de trabalho usando o WD Velocity Raptors de 10k no software RAID1:

                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
   10240       4     182     181  1804774  2127084 2110984     167 1673159      153  1760968   954589  1203989 2022512  2062824

Se você estiver executando em modo síncrono (O_SYNC), seu Resultado A parece ser razoável em termos do que pode ser fornecido via soft / fake-RAID.

O modo de cache write-through causa uma degradação do desempenho do array ao longo do tempo?

Eu não penso assim. Com um cache de gravação ativado, o controlador é capaz de realizar certas operações para otimizar as operações de gravação pendentes.

Por exemplo, esta descrição da operação de cache é retirada do whitepaper para controladores HP Smart Array:

The write cache will typically fill up and remain full most of the time in high-workload environments. The controller uses this opportunity to analyze the pending write commands to improve their efficiency. The controller can use write coalescing that combines small writes to adjacent logical blocks into a single larger write for quicker execution. The controller can also perform command reordering, rearranging the execution order of the writes in the cache to reduce the overall disk latency.

Como você pode ler, o cache é usado para melhorar ainda mais o desempenho de gravação da matriz, mas isso não parece ter qualquer impacto sobre o desempenho de qualquer operação de gravação ou leitura subsequente.

Em relação à fragmentação de disco, esse é um problema no sistema de arquivos / sistema operacional. O controlador RAID - operando no nível de bloco - não é capaz de otimizar a fragmentação do sistema de arquivos, portanto, não há diferença se ele opera no modo write-trough ou write-back .

    
por 30.03.2016 / 17:31