Por que estou obtendo resultados muito lentos do teste dd dsync no Linux.

0

Estou investigando problemas de aplicativos lentos com algum novo hardware e estou tendo alguns resultados estranhos. Estou tentando determinar o que está causando esse comportamento.

Estou usando

dd se = x.b1 de = x.b10 bs = 8192 oflag = dsync de um arquivo de 101 MB

para simular como nosso banco de dados está gravando em disco (o sinalizador dsync foi sugerido pelo nosso fornecedor de banco de dados) e enquanto os comandos dd normais sem a opção dsync estão mostrando 80-100 Mb / s, com o comando dsync estou obtendo resultados na faixa de 160Kb / s-200Kb / s.

Esse comportamento foi visto em várias peças de hardware, bem como em diferentes discos rígidos do modelo e em um teste de limpeza da unidade dd se = / dev / zero de = / dev / sda bs = 8192 oflag = dsync

mostra a velocidade esperada de 80-100Mb / s, o que parece sugerir que é algo em nosso sistema operacional personalizado que está atrasando as coisas. Fizemos esses testes sob um SuseLinux personalizado, assim como com o OracleOS (32 e 64 bits), e continuamos a ver esses números muito baixos.

Você pode me dar algumas idéias de onde está o problema? Obrigado

    
por azith28 22.07.2015 / 18:19

1 resposta

2

Especificando o sinal oflag=dsync no dd, o que diminuirá drasticamente a velocidade de gravação no arquivo de saída.

Do manual do dd :

dsync

Use synchronized I/O for data. For the output file, this forces a physical write of output data on each write.

Após cada bloco de 8kb, o dd aguardará os dados serem gravados fisicamente no disco. Isso ignora todos os caches, incluindo o cache de hardware na própria unidade. O bloco de 8kb não iniciará a cópia até que isso seja concluído.

Se a velocidade de cópia for de 200 KB / s e o tamanho do bloco for de 8 KB, isso significa cerca de 25 sync / s ou 40 ms de sincronização. Desta vez é bem típico para um disco rígido.

O fornecedor do banco de dados provavelmente está pedindo que você tente isso porque eles usam E / S sincronizadas para o log de transações do banco de dados (para fornecer garantias de confiabilidade ACID).

    
por 22.07.2015 / 19:38