RAID0 (hardware e md) mais lento que LVM?

RAID0 (hardware e md) mais lento que LVM?

Estou fazendo alguns benchmarking de nós enquanto 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 porquê. Estou usando o fio como minha ferramenta de benchmarking; observe que a versão 1.38 não funcionou para mim e precisei usar a versão 1.59 ou 1.60.

Aqui está meu arquivo de configuração 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 software raid, obtive os seguintes resultados (reduzindo ao 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 raid1 usando software raid, obtive 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

O desempenho do 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 nos quatro discos com extensões de 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 software RAID depois de mudar para a placa RocketRaid. Estas são unidades SATA de 1 TB. A execução de testes multithread apresentou aproximadamente os mesmos resultados. Existe alguma razão para o RAID0 estar tão lento? Achei que ele proporcionaria desempenho em E/S aleatória superior a uma única unidade ou RAID1.


Acompanhamento: Com base em algumas sugestões de Joe da Scalable Informatics (cara legal, compre as coisas dele!), 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 a placa HighPoint RocketRaid 2740 é uma droga.

  • Desempenho de disco único (placa-mãe SuperMicro SATA): 43,2 mb/s de leitura, 42,6 mb/s de gravação
  • MD Raid 0 (RocketRAID usado como HBA, com ou sem drivers carregados): 53,1 mb/s de leitura, 54,1 mb/s de gravação
  • RocketRaid Raid 0: 29,4 mb/s de leitura, 29,2 mb/s de gravação
  • MD RAID 0 (placa-mãe SATA): 58,0 mb/s de leitura, 58,3 mb/s de gravação

O desempenho conectado a uma placa RocketRaid foi mais lento em todos os aspectos.

Vou deixar esta questão em aberto - receberemos uma nova lista de placas RAID nas próximas uma ou duas semanas para testar, e ainda estou procurando dicas de otimização para obter mais do que desempenho de disco único , o que não parece ter sido completamente respondido.

Responder1

Você pode estar enfrentando um problema de tamanho de distribuição em que os dados gravados ou lidos estão afetando um único disco - consulte osoftware RAID como fazerpara detalhes. Você pode verificar se este é o caso observando a saída deiostat.

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

Responder2

Achei que ele proporcionaria desempenho em E/S aleatória superior a uma única unidade ou RAID1.

Não, se os blocos que você está procurando aleatoriamente forem maiores que o tamanho da faixa, então deve ser aproximadamente a velocidade de uma única unidade. O que ainda não explica seus resultados que são piores que uma única unidade.

DeWikipédia.

Para leituras e gravações maiores que o tamanho da faixa, como cópia de arquivos ou reprodução de vídeo, os discos procurarão a mesma posição em cada disco,então o tempo de busca da matriz será o mesmo de uma única unidade. Para leituras e gravações menores que o tamanho da faixa, como acesso ao banco de dados, as unidades poderão buscar de forma independente.

informação relacionada