RAID0 (tanto hardware quanto md) mais lento que o LVM?

4

Estou fazendo um benchmarking de nós à medida que construímos um sistema de arquivos distribuído. Como os arquivos serão distribuídos e replicados em muitos nós, estamos usando o raid0 nos próprios nós. No entanto, estou obtendo alguns números de desempenho estranhos e estou curioso para saber se a comunidade StackOverflow pode ajudar a descobrir o motivo. Eu estou usando fio como minha ferramenta de benchmarking; note que a versão 1.38 não funcionou para mim e eu precisava usar a versão 1.59 ou 1.60.

Aqui está o meu arquivo de configuração de fio:

[global]
directory=/mnt/gluster
lockfile=readwrite
ioengine=libaio
iodepth=8
rw=randrw
nrfiles=200
openfiles=30
runtime=900

[file]
filesize=16-8k/8M-512M
size=1GiB

Para um raid0 usando raid de software, obtive os seguintes resultados (recorte para o essencial):

  read : io=285240KB, bw=324535 B/s, iops=79 , runt=900011msec
  write: io=283532KB, bw=322592 B/s, iops=78 , runt=900011msec

Em um ataque1 usando invasão de software, recebi os seguintes resultados:

  read : io=683808KB, bw=778021 B/s, iops=189 , runt=900000msec
  write: io=488184KB, bw=628122 B/s, iops=153 , runt=795864msec

Desempenho de disco único ainda supera o desempenho do raid0:

  read : io=546848KB, bw=622179 B/s, iops=151 , runt=900018msec
  write: io=486736KB, bw=591126 B/s, iops=144 , runt=843166msec

LVM distribuído pelos quatro discos com extensões 4k:

  read : io=727036KB, bw=827198 B/s, iops=201 , runt=900007msec
  write: io=489424KB, bw=604693 B/s, iops=147 , runt=828800msec

Hardware RAID0 (HighPoint RocketRaid 2470)

  read : io=326884KB, bw=371918 B/s, iops=90 , runt=900008msec
  write: io=328824KB, bw=374125 B/s, iops=91 , runt=900008msec

Observe que os primeiros quatro resultados acima estão sendo executados apenas nos controladores SATA da placa-mãe. No entanto, reproduzi os resultados com o software RAID depois de passar para o cartão RocketRaid. Estes são drives SATA de 1 TB. Execução de testes multithreaded entregues sobre os mesmos resultados. Existe alguma razão para que o RAID0 esteja rodando tão devagar? Eu pensei que iria entregar desempenho em E / S aleatória que era superior a uma única unidade ou RAID1.

Acompanhamento: Baseado em algumas sugestões de Joe na Scalable Informatics (cara legal, compre as coisas dele!), eu mudei meu teste para usar uma fila mais profunda e um tamanho de bloco mais aleatório.

[global]
directory=/mnt/glusterfs
lockfile=readwrite
ioengine=libaio
iodepth=32
rw=randrw
numjobs=8

[file]
filesize=16-8k/8M-512M
blocksize_range=64k-1M
size=1GiB
nrfiles=50
openfiles=8
runtime=900

E o resultado final é que o cartão HighPoint RocketRaid 2740 é uma droga.

  • Desempenho de disco único (placa-mãe SATA SuperMicro): leitura de 43.2 mb / s, gravação de 42.6 mb / s
  • MD Raid 0 (RocketRAID usado como HBA, com ou sem drivers carregados): 53.1 mb / s leitura, 54.1 mb / s write
  • Raid RocketRaid 0: 29.4 mb / s leitura, 29.2 mb / s escrever
  • MD RAID 0 (Placa-mãe SATA): 58.0 mb / s leitura, 58.3mb / s gravação

O desempenho conectado a um cartão RocketRaid foi mais lento em todo o fórum.

Vou deixar essa pergunta em aberto. "Estamos recebendo uma nova lista de cartões RAID nas próximas semanas ou duas para testar, e ainda estou procurando dicas de otimização para conseguir mais do que o único - desempenho do disco, que parece não ter sido totalmente respondido.

    
por Karl Katzke 22.11.2011 / 21:37

2 respostas

2

Você pode estar se deparando com um problema de tamanho reduzido, em que os dados escritos ou lidos estão ocupando um único disco. Consulte o como RAID de software para detalhes. Você pode verificar se esse é o caso olhando para a saída de iostat .

Se você quiser verificar o desempenho de acesso linear, tente usar "hdparm -t" ou dd para benchmarking - isso deve mostrar números de desempenho que aproximadamente dobram o desempenho de um disco único.

    
por 22.11.2011 / 23:36
1

I thought it would deliver performance in random I/O that was superior to a single drive or RAID1.

Não, se os blocos que você está procurando aleatoriamente for maior que o tamanho da faixa, ele deverá ser aproximadamente a velocidade de uma única unidade. O que ainda não explica seus resultados, que são piores do que um único disco.

Em wikipedia .

For reads and writes that are larger than the stripe size, such as copying files or video playback, the disks will be seeking to the same position on each disk, so the seek time of the array will be the same as that of a single drive. For reads and writes that are smaller than the stripe size, such as database access, the drives will be able to seek independently.

    
por 22.11.2011 / 23:35