Variação estranha nos resultados dos testes de desempenho de disco

2

Eu comecei tentando fazer alguns testes de desempenho simples. "Qual destes discos é mais rápido e por quanto" tipo de coisas. Não precisei de muita precisão, só queria uma ideia aproximada. Transformou-se em uma incursão estranha nos aspectos internos de How Things Work. Meio divertido, na verdade, mas um pouco estranho.

Antes de prosseguir, direi que tudo neste artigo é feito em um sistema Arch Linux, executando um kernel 3.0, com uma unidade de disco SATA Western Digital WD30EZRX 3TB removida de um gabinete MyBook Essential USB3 (esses gabinetes não coisas malvadas aos seus dados) e instaladas em um gabinete USB3 de disco único Sans Digital, conectado por meio de uma placa de 1 pista Buffalo USB3 PCIe. A unidade é o único dispositivo nessa placa USB e o sistema fica inativo durante o tempo dos testes.

Eu escrevi um programa de teste de desempenho, um programa C simples para abrir um arquivo, escrever quatro GiB de dados nele, fsync () e sair. Eu executei o teste 9 vezes (um número arbitrário, porque eu queria dígitos únicos, mas esqueci de começar no zero) em um sistema de arquivos ext4 todo em disco, e obtive 58-59 segundos por execução, cerca de 73 MB / seg. Não é o disco mais rápido do mundo, mas os resultados foram bastante consistentes.

Por razões que eu não lembro mais, não esperava nenhum problema, voltei e fiz o mesmo teste algumas horas depois, depois de desconectar o disco para testar outro, conectando o disco original de volta e refazendo o disco. mkfs. Para minha surpresa, obtive resultados muito diferentes. Desta vez, obtive resultados no intervalo de 51-52 segundos (83 MB / seg), com 2 mais perto de 48 segundos.

Horas depois, depois de fazer algumas pesquisas, incluindo fazer uma pergunta aqui sobre como descobrir quais blocos de disco são usados por um arquivo, executei outro teste no mesmo disco sem reinicializar. Acabei de criar novos arquivos no mesmo diretório (a raiz do sistema de arquivos) como o teste anterior. Dessa vez, obtive resultados no intervalo de 44 a 45 segundos (96 MB / s).

Mais tarde, executei mais três testes (refinando meu procedimento de teste, na verdade), novamente apenas colocando os arquivos ao lado dos existentes, e obtive desempenho de 44 segundos, 45 segundos e 50 segundos. Esses três grupos de corridas estavam bem próximos um do outro. Tenha em mente que ainda não estou falando sobre execuções individuais. Eu corri o programa de testes 9 vezes, todos com resultados de 44 segundos, outros 9 vezes, todos com resultados de 45 segundos, e mais 9 vezes, todos com resultados de 50 segundos.

Estas são algumas diferenças muito grandes e muito estranhamente agrupadas.

Eu usei debugfs para verificar quais blocos os arquivos estão usando, e não há nada "engraçado" acontecendo lá. Cada arquivo parece receber os próximos blocos disponíveis, em seqüência, começando do começo do disco.

A única coisa em que consigo pensar que poderia explicar isso seria se o circuito do disco estivesse de alguma forma alocando blocos de diferentes partes do disco e apresentando-os ao host como contíguos. Para os resultados que estou vendo, teria que estar percebendo o atraso entre meus testes e usando isso como uma oportunidade de mudar para uma parte diferente do disco para alocação.

Francamente, isso parece um pouco difícil para mim, mas eu não tenho muitas outras ideias.

Alguém pode esclarecer isso? Por que estou obtendo resultados tão consistentes globalmente e globalmente variáveis?

    
por Rick Koshi 10.09.2011 / 03:20

3 respostas

1

Meses depois, parece valer a pena seguir essa questão ainda em aberto.

Eu tive que arquivar o projeto por um tempo, logo após encontrar esse obstáculo, devido a outras prioridades. Recentemente, consegui voltar a isso.

A coisa mais frustrante foi (e é) que agora estou completamente incapaz de reproduzir o problema. Eu ainda tenho exatamente o mesmo hardware e as mesmas máquinas. No entanto, todo o desempenho é razoavelmente consistente e tão rápido quanto eu esperava. Para simplificar, minha pergunta inicial não incluiu todas as diferentes configurações (e hardware) que tentei.

Em particular, havia uma máquina que tinha o problema e que eu simplesmente encerrei no meio de testar esse problema. Meses depois, ainda estava desligado. Voltei a ligá-lo e retomei a tentativa de caracterizar o desempenho inconsistente, apenas para descobrir que o problema havia desaparecido.

Fase da lua? Número do ano? Manchas solares? Eu não faço ideia. Desde então, reiniciei essa máquina, executei vários testes com duas placas de interface USB diferentes e dois discos diferentes. Nenhum resultado está fora do comum. Eu suspeitaria da minha própria sanidade, exceto que eu ainda tinha os registros recortados e colados dos testes originais, junto com os arquivos de saída de teste com timestamp. Eles estavam, sem dúvida, naquela máquina, naquele disco, com resultados estranhos. Resultados estranhos que agora sou incapaz de reproduzir apesar das horas de tentativas.

Declaro que não vale mais o meu tempo e declaro a questão encerrada.

Minhas desculpas para aqueles que vêm atrás de mim esperando uma resposta definitiva.

    
por 21.02.2012 / 04:26
2

Essa é uma unidade Caviar Green. Ouvi falar de algum desempenho inconsistente daqueles graças ao circuito verde. Eles têm uma velocidade de rotação variável para economizar energia e isso pode afetar a taxa de transferência. O suficiente para o que você está vendo? Não sei dizer, não lidei com eles pessoalmente. Se um desempenho consistente é o que você procura, eu escolheria as linhas azuis ou pretas.

    
por 10.09.2011 / 04:10
0

Isso é bem típico para discos com um RPM constante (que quase todos têm porque alterar a velocidade de rotação diminuiria o tempo de busca para um rastreamento). Quando a cabeça está perto do centro da transmissão, a velocidade linear é baixa e quando a cabeça está perto da borda da unidade, a velocidade linear é maior. A maioria das unidades mapeia as faixas externas para números de setores lineares mais altos e a maioria dos sistemas de arquivos sobe pelos setores lineares. Então, como você continua usando um sistema de arquivos, ele tende a ficar mais rápido.

    
por 10.09.2011 / 07:41