Eu tenho um sistema com dualIntel E5-2620 v3 a 2,40 GHz, 64 GB de RAM, umLSI 3008 HBA, 8xSSD Intel S3510 de 1,6 TB. Tenho feito benchmarking em diferentes configurações usando fio e obtive alguns resultados interessantes. Comparando cada disco bruto individualmente, vejo gravações aleatórias de aproximadamente 450 MB/s por dispositivo. Em um RAID0 (faixa sem paridade) estou vendo~3500MB/sgravações aleatórias - basicamente 450 * 8 discos.
No entanto, quando experimentei o RAID 5, o desempenho caiu completamente. Sei que o raid5 deveria ser significativamente pior que o raid0, mas o desempenho do RAID5 usando o mesmo teste foi cerca de50MB/s. Já usei RAID 5 antes e embora o desempenho nunca tenha sido ótimo, nunca vi uma penalidade de 99% nisso. O teste fio que estou executando tem 600 threads gravando dados aleatórios em blocos de 512 mil. O sistema de arquivos no dispositivo é xfs para todos esses testes.
Definir /sys/block/md0/md/stripe_cache_size
como 32768 (o valor máximo possível) aumentou o rendimento geral para~130MB/s, levando-me a supor que o problema é a falta de um cache de write-back como os encontrados em controladores RAID de hardware. Mas estou me perguntando se há algo que eu possa fazer para melhorar o desempenho do mdadm raid 5. Alguma ideia do que poderia estar causando isso ou como melhorar o desempenho do raid 5?
Curiosamente, também tentei um RAID-10 de 16 discos (mesmos discos mais um segundo HBA LSI) e o desempenho foi de aproximadamente 2.400 MB/s - uma redução de 33% em relação ao RAID 0. Considerando como o RAID10 funciona, eu teria esperado o desempenho ser quase idêntico ao RAID 0.
Para quem estiver interessado, aqui está o arquivo de configuração do fio:
[global]
rw=randwrite
direct=1
numjobs=600
group_reporting
bs=512k
runtime=120
ramp_time=5
size=10G
[raid]
new_group
directory=/raid/