Desempenho de leitura de software ruim raid10 no Linux

2

Eu recentemente criei um novo servidor de arquivos baseado em Linux. A distribuição que estou usando é o Ubuntu 10.10. Eu criei dois dispositivos de invasão de software da seguinte forma:

mc@vmr:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf1[1] sdh1[3] sde1[0] sdg1[2]
  19530688 blocks [4/4] [UUUU]

md1 : active raid10 sdh3[3] sdf3[1] sde3[0] sdg3[2]
  1912461184 blocks 64K chunks 2 near-copies [4/4] [UUUU]

O dispositivo / dev / md0 (raid1) é montado em "/" e / dev / md1 (raid10) é montado em "/ home". Infelizmente o desempenho do meu raid10 é profundamente insatisfatório. Aqui está o desempenho de cada disco rígido:

mc@vmr:~$ sudo hdparm -t /dev/sdh3  
/dev/sdh3:
 Timing buffered disk reads:  410 MB in  3.00 seconds = 136.57 MB/sec

mc@vmr:~$ sudo hdparm -t /dev/sdf3
/dev/sdf3:
 Timing buffered disk reads:  402 MB in  3.01 seconds = 133.60 MB/sec

mc@vmr:~$ sudo hdparm -t /dev/sde3
/dev/sde3:
 Timing buffered disk reads:  418 MB in  3.01 seconds = 139.10 MB/sec

mc@vmr:~$ sudo hdparm -t /dev/sdg3
/dev/sdg3:
 Timing buffered disk reads:  406 MB in  3.00 seconds = 135.32 MB/sec

Então, naturalmente, eu esperava um desempenho de leitura em torno de 260 MB / s, mas, em vez disso, tenho isto:

mc@vmr:~$ sudo hdparm -t /dev/md1
/dev/md1:
 Timing buffered disk reads:  172 MB in  3.04 seconds =  56.64 MB/sec
Em primeiro lugar, assumi que o método de teste hdparm não deve ser 100% confiável, então fiz um tipo de teste de leitura real e o desempenho ainda não era o esperado (random.bin é colocado em raid10):

mc@vmr:~$ dd if=random.bin of=/dev/null bs=256k
38800+0 records in
38800+0 records out
10171187200 bytes (10 GB) copied, 96.3874 s, 106 MB/s

Por fim, gostaria de compartilhar que o desempenho de leitura do raid1 é exatamente o esperado:

mc@vmr:~$ sudo hdparm -t /dev/md0
/dev/md0:
 Timing buffered disk reads:  412 MB in  3.01 seconds = 136.91 MB/sec

Alguém se deparou com um problema como este? Alguma pista?

    
por mcDev 14.02.2011 / 11:07

3 respostas

1

64K chunks

- muito pequeno. Quase todas as operações de E / S tem uma probabilidade perceptível de envolver 2 discos com esse tamanho de faixa, o que significa mais desperdício de E / S. Minha sugestão é de pelo menos 512 KiB e pode ser de 1 a 2 MB.

Além disso, você pode achar útil o meu .

    
por 03.04.2011 / 02:51
1

Acabei de criar novamente meu array md1:

leo@stellie:~$ cat /proc/mdstat 
Personalities : [raid1] [raid10] 
md1 : active raid10 sdc6[0] sdb6[2] sda6[1]
      32807040 blocks super 1.2 64K chunks 2 far-copies [3/3] [UUU] 
md0 : active raid1 sda1[0] sdb1[2] sdc1[1]
      248896 blocks [3/3] [UUU]

Observe que:  1. versão de metadados foi atualizada para 1,2  2. cópias remotas em vez de cópias próximas

leo@stellie:~$ sudo hdparm -t /dev/md1
/dev/md1:
 Timing buffered disk reads: 372 MB in  3.02 seconds = 123.29 MB/sec

Fiz mais alguns testes hdparm enquanto o array ainda não estava em uso e:  - 64k pedaços e quase cópias tiveram melhor desempenho que antes (~ 70MB / seg)  - 512K pedaços tiveram menor taxa de transferência (~ 50MB / seg)  - O desempenho máximo de leitura foi atingido com cópias distantes e blocos de 64 K

Como você disse, também preciso realizar um teste com o iozone.

    
por 11.04.2011 / 22:12
0

Existem algumas opções

1.Há um problema com:

  • firmware do disco rígido
  • placa-mãe de firmware
  • controlador sata de firmware
  • bug no ubuntu

2. sintonizando algumas coisas

  • hdparm -t --direct / dev / md0
  • blockdev --setra 16384
  • tente um bloco maior com o raid10 (não certeza se é bom)

de qualquer forma o hdparm não é realmente o melhor software de benchmark - tente bonni ++, iozone ou dd

    
por 02.04.2011 / 23:25