Melhorando a velocidade de gravação mdadm RAID-6

8

Eu tenho um mdadm RAID-6 no meu servidor doméstico de HDDs 5x1Tb WD Green. A velocidade de leitura é mais que suficiente - 268 Mb / s em dd. Mas a velocidade de gravação é de apenas 37,1 Mb / s. (Ambos testados via dd em um arquivo de 48Gb, o tamanho da RAM é 1Gb, o tamanho do bloco usado nos testes é 8kb)

Você poderia sugerir por que a velocidade de gravação é tão baixa e existem maneiras de melhorá-la? O uso da CPU durante a gravação é de apenas 25% (ou seja, metade de 1 núcleo do Opteron 165) Não há dados críticos para a empresa e o servidor é suportado por UPS.

mdstat é:

Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda1[0] sdd1[4] sde1[3] sdf1[2] sdb1[1]
      2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices: <none>

Alguma sugestão?

Coisas como writeback, barreira, nobh não ajudaram. DD tamanho do bloco = 1 milhão, 8 milhões não mudaram nada. Parece que o mdadm lê fisicamente setores para calcular a paridade, mesmo que isso não importe ... Está correto?

Atualização: A degradação da velocidade após o cache de faixas alteradas foi realmente porque 1 HDD provavelmente falhou durante o teste, bom :-D

Resolvido: Depois de aumentar o cache de distribuição e alternar para bitmap externo, minhas velocidades são de gravação de 160 Mb / s, de leitura de 260 Mb / s. :-D

BarsMonster
fonte
Hey Bars .. O que você mexeu e depois de que mudança o desempenho caiu para 120Mb / s? Estou tendo um problema semelhante, mas o meu desempenho é muito pior :( Todas as sugestões serão úteis Graças!
No meu caso, eu tive um diskfail no meio da otimização :-)
BarsMonster 25/03

Respostas:

9

Você já tentou ajustar / sys / block / mdX / md / stripe_cache_size?

De acordo com esta postagem do fórum (em norueguês, desculpe) "ajustar esse parâmetro é mais essencial, quanto mais discos e o sistema mais rápido você tiver":

No meu sistema, obtenho o melhor desempenho usando o valor 8192. Se eu usar o valor padrão 256, o desempenho de gravação cai 66%.

Citando sua velocidade de comparação:

Discos: 8xSeagate 2TB LP (5900RPM) no mdadm RAID6 (-n 512) (stripe_size_cache = 8192).

Processador: Intel X3430 (4x2.4GHz, 8GB DDR3 ECC RAM)

Velocidade: gravação sequencial de 387 MB / s, leitura sequencial de 704 MB / s, 669 buscas aleatórias por segundo.

Meu servidor doméstico possui quase os mesmos discos que você, usando o RAID 5:

Discos: 4x1,5 TB WD verde no RAID 5 (stripe_size_cache = 256 - o padrão)

CPU: Intel i7 920 (2,66 GHz, 6 GB RAM)

Velocidade: gravação sequencial de 60 MB / s, leitura sequencial de 138 MB / s (de acordo com Bonnie ++)

Portanto, parece que o desempenho de gravação sequencial representa cerca de 50% do desempenho de leitura.

Para que desempenho esperar, o Linux Raid Wiki diz sobre o RAID 5:

As leituras são quase semelhantes às leituras do RAID-0, as gravações podem ser bastante caras (exigindo a leitura antes da gravação, para poder calcular as informações de paridade corretas, como nas operações do banco de dados) ou semelhantes ao RAID-1 gravações (quando gravações sequenciais maiores são executadas e a paridade pode ser calculada diretamente dos outros blocos a serem gravados).

E sobre o RAID 6:

O desempenho de leitura é semelhante ao RAID-5, mas o desempenho de gravação é pior.

jg-faustus
fonte
A velocidade de gravação caiu para 15-20 Mb / s, a velocidade de leitura caiu para 110: -S Isso simplesmente não faz sentido :-(
BarsMonster
Tente alguns outros valores, veja o que acontece. Não sou especialista nisso, mas tenho WD Greens (4x1,5 TB) no md RAID 5 com o mesmo problema - velocidade de gravação bastante lenta. Meu sistema está inoperante no momento, mas também testarei no final e atualizarei aqui se conseguir melhorá-lo.
Jg-faustus
BTW: Você tem o AHCI ativado? Qual sistema de arquivos - ext3, ext4?
Jg-faustus
Não tenho certeza sobre o AHCI, é muito difícil dar uma olhada no BIOS. ext4.
BarsMonster
Porra, preso com velocidade de leitura de 120Mb / s, não consigo voltar aos meus 268 :-( Isso é tão frustrante ... Não vejo por que o mdadm não pode ler ou gravar dados linearmente a ~ 3x90 Mb / s. .. É simplesmente bobo.
BarsMonster
4

tentar

echo 32768 > /sys/block/md0/md/stripe_cache_size

e verifique;)

DM1
fonte
Na resposta anterior, estávamos testando diferentes stripe_cache_sizes. Configurá-lo para 32768 não melhorou nada. Eu ainda estou em ~ 100Mb / seg escreve mesmo depois de upgrade (E8500 CPU, 8 GB de RAM e um conjunto 8x1Tb)
BarsMonster
ABSURDO! Isso instantaneamente aumentou meu desempenho de gravação de ~ 70MB / s para ~ 360MB / s!?! Oh meu Deus. WTF isso não é o padrão?!?
stolsvik
Oh minha palavra. Isso realmente funciona ... De [================> ....] recuperação = 82,1% (1604609136/1953382144) concluir = 122,7min de velocidade = 47348K / s até [ ================> ....] recuperação = 82.3% (1607712880/1953382144) acabamento = velocidade 56.2min = 102451K / seg
Lmwangi
Nos meus testes, o valor de 8192 parece suficiente. Apesar de jogar tudo o que eu tinha para testar em uma matriz, não consegui fazer com que stripe_cache_active picasse mais alto do que os 7000s baixos.
Jody Lee Bruchon