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.