Velocidade de leitura / gravação SSD (Intel 530) muito lenta com RAID 10

11

Explicação:

Nós temos um servidor:

  • Modelo: HP ProLiant DL160 G6
  • SSD de 4 x 240 GB (RAID-10)
  • 72GB DDR3 RAM
  • 2 x L5639
  • Controladora RAID HP P410 (256MB, V6.40, versão Rom: 8.40.41.00)

As unidades SSD são 4 novas Intel 530 de 2,5 "com velocidade de leitura de 540MB / s e velocidade de gravação de 490MB / s

  • CentOS 6
  • Os sistemas de arquivos são ext4

mas este é o resultado do teste para velocidade de leitura no raid 10:

hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  824 MB in  3.00 seconds = 274.50 MB/sec
[root@localhost ~]# hdparm -t /dev/mapper/vg_localhost-lv_root

/dev/mapper/vg_localhost-lv_root:
 Timing buffered disk reads:  800 MB in  3.01 seconds = 266.19 MB/sec

e isso é para velocidade de gravação:

dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 4.91077 s, 109 MB/s

esperávamos velocidade de leitura de 1 GB com o RAID 10, mas 270 MB nem sequer é a velocidade de um único disco!

Questões:

  1. Por que é tão lento?
  2. É por causa do controlador RAID?

Atualização 1 - Mesma velocidade de leitura / gravação:

Depois de alterar algumas configurações, como mencionado nas respostas, tenho o resultado abaixo:

(Alguém sabe por que mostra 4 GB em vez de 400 MB como velocidade de leitura ?!)

EDIT: parece que o comando estava errado e deveríamos ter usado -s144g para essa quantidade de memória ram, é por isso que mostra 4 GB (como sugerido nos comentários de ewwhite)

[root@192 ~]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.408 $
                Compiled for 64 bit mode.
                Build: linux

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  135331.80 KB/sec
        Children see throughput for  1 rewriters        =  124085.66 KB/sec
        Children see throughput for  1 readers          = 4732046.50 KB/sec
        Children see throughput for 1 re-readers        = 4741508.00 KB/sec
        Children see throughput for 1 random readers    = 4590884.50 KB/sec
        Children see throughput for 1 random writers    =  124082.41 KB/sec

mas o hdparm -t /dev/sdacomando antigo ainda mostra:

Tempo limite de leituras em disco buffer: 810 MB em 3,00 segundos = 269,85 MB / s

Atualização 2 (pacote de utilitários ajustados) - A velocidade de leitura agora é de 600 MB / s:

Finalmente, com alguma esperança, desativamos o cache do controlador RAID e fizemos outras coisas anteriormente sem sorte, mas, como recarregamos o servidor e instalamos o sistema operacional novamente, esquecemos de instalar "tuned-utils", conforme sugerido na resposta do ewwhite (Obrigado ewwhite para este pacote incrível que você sugeriu)

Depois de instalar tuned-utilse escolher o enterprise-storageperfil, a velocidade de leitura agora é de ~ 600MB / s +, mas a velocidade de gravação ainda é muito lenta (~ 160MB) (:

Aqui está o resultado do iozone -t1 -i0 -i1 -i2 -r1m -s144gcomando:

    Children see throughput for  1 initial writers  =  165331.80 KB/sec
    Children see throughput for  1 rewriters        =  115734.91 KB/sec
    Children see throughput for  1 readers          =  719323.81 KB/sec
    Children see throughput for 1 re-readers        =  732008.56 KB/sec
    Children see throughput for 1 random readers    =  549284.69 KB/sec
    Children see throughput for 1 random writers    =  116389.76 KB/sec

Mesmo com o hdparm -t /dev/sdacomando, temos:

Tempo limite de leituras no disco buffer: 1802 MB em 3,00 segundos = 600,37 MB / s

Alguma sugestão para a velocidade de gravação muito lenta?

Atualização 3 - Algumas informações solicitadas nos comentários:

A velocidade de gravação ainda é muito baixa (~ 150 MB / s, que nem sequer é 1/3 de um único disco)

Saída para df -he fdisk -l:

[root@192 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       441G  3.2G  415G   1% /
tmpfs            36G     0   36G   0% /dev/shm


[root@192 ~]# fdisk -l
Disk /dev/sda: 480.0 GB, 480047620096 bytes
255 heads, 63 sectors/track, 58362 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00040c3c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       58363   468795392   83  Linux
Ara
fonte
Para este teste, você provavelmente deve especificar o dobro da quantidade de RAM instalada no servidor.
ewwhite
Você pode nos dizer a versão do firmware do seu controlador Smart Array P410?
ewwhite
@ewwhite obrigado pelo seu comentário, a versão do firmware é p410 (256MB, V6.40) e a versão rom é 8.40.41.00. Meu comando iozone estava errado? Se sim, poderia me dizer o comando certo para testar? porque tudo o que eu tento eu recebo a velocidade de leitura em GB
Ara
Alguma coisa está muito errada aqui. Você está recebendo apenas ~ 122 MB / s de gravação. Os números de 4 GB / s que você vê são operações do cache; portanto, sua sequência de comandos deve ser parecida iozone -t1 -i0 -i1 -i2 -r1m -s144g. :(
ewwhite
@ewwhite Muito obrigado, a velocidade de leitura agora é muito boa (detalhada como a atualização 2 na minha pergunta), mas a velocidade de gravação é muito decepcionante, você tem alguma sugestão para isso?
Ara

Respostas:

16

Enquanto a outra resposta aqui menciona alguns pontos, seus problemas específicos são causados ​​por limitações da plataforma e configuração do sistema operacional:

  • Você tem uma taxa de transferência limitada pelo uso de SSDs SATA de consumidor em um controlador RAID HP Smart Array P410 . Os discos SATA são executados a 3.0Gbps (3G) nesses controladores, em vez de 6.0Gbps (6G). Portanto, essa é uma barreira que afeta a velocidade de leitura dos seus SSDs Intel; 300 MB / s ou menos por unidade.

  • O controlador Smart Array P410 possui requisitos e práticas recomendadas específicas quando usado com SSDs. Em resumo, o controlador é capaz de 50.000 IOPS, desativa o acelerador do array para o seu volume SSD e o desempenho atinge o máximo em ~ 6 unidades.

  • O desempenho do disco nem sempre é sobre velocidade sequencial de leitura / gravação. Tente fazer benchmarking com uma ferramenta adequada, como iozone ou bonnie ++ . Você ainda obtém os benefícios aleatórios de E / S de suas várias unidades.

  • No nível do sistema operacional, instale o pacote tuned-utils e configure o perfil enterprise-performancepara remover barreiras de gravação de seus sistemas de arquivos e defina o elevador de E / S correto para sua configuração. Isso também é abordado em outras questões aqui .

  • Parece que você está usando LVM. Isso pode ter um impacto também ...

Aqui está um relatório da iozone para um G7 ProLiant executando com quatro SSDs de 6G SATA de consumidor (com redução de velocidade para velocidades 3G) no mesmo controlador RAID HP Smart Array P410.

Você deve ver ~ 470MB / se gravações e 650MB / s + leituras.

[root@mdmarra /data/tmp]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.394 $
                Compiled for 64 bit mode.
                Build: linux 

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  478209.81 KB/sec
        Children see throughput for  1 rewriters        =  478200.84 KB/sec
        Children see throughput for  1 readers          =  677397.69 KB/sec
        Children see throughput for 1 re-readers        =  679523.88 KB/sec
        Children see throughput for 1 random readers    =  437344.78 KB/sec
        Children see throughput for 1 random writers    =  486254.41 KB/sec
ewwhite
fonte
Muito obrigado, o modelo é "DL160 G6", sim, há um backplane envolvido :( eu ficaria feliz com 600 MB aqui, mas 270 MB é muito lento, o que você acha que devo fazer, o ataque de software ajuda?
Ara
2
Ok, com um DL160 G6, você deve ter dois cabos que vão do controlador RAID para o backplane da unidade ... 8 slots de unidade. Seu problema aqui é o rendimento da unidade, sua metodologia de teste e as configurações do servidor. Tente as outras sugestões que listei na minha resposta.
ewwhite
Um pouco interessante sobre o P410 fazer apenas 3G no SATA e as práticas recomendadas específicas. Mod up. (LVM no entanto não deve ser um lançador pesado em termos de impacto negativo no desempenho, também observado aqui: unix.stackexchange.com/questions/7122/... )
Roman
1
@Ara Não existe um controlador SATA 6G para o ProLiant. Essa é a questão. Seus SSDs serão executados apenas na velocidade 3G nesta plataforma, a menos que você use SSDs SAS .
ewwhite
1
O RAID da @Ara Software implicaria a conexão a um controlador diferente, como um SAS HBA (por exemplo, o LSI 9211-8i) ... permitiria ver toda a largura de banda de seus discos, mas existem outras facetas do desempenho do SSD além do puro largura de banda de leitura / gravação seqüencial.
ewwhite
12

Oh querida, por onde começar?

Há muita coisa envolvida e você precisa de um bom entendimento de tudo. Jogar vários discos contra um controlador RAID não produzirá os resultados que você está procurando.

Isso não pode ser facilmente respondido. Mas pelo menos, aqui está uma lista de coisas que você deve examinar:

  • O controlador tem a taxa de transferência necessária? (-> Folhas de dados)
  • O Controlador tem largura de banda suficiente para o Host (ele possui, mesmo na v1.0, uma vez que é x8)
  • O chipset do sistema tem taxa de transferência suficiente (CPU-Controller)? (desconhecido)
  • Que estratégia de gravação você instruiu o Controlador a empregar? ( isto é o que mais provavelmente te mordeu )
  • Está tudo alinhado (Partição inicia, LVs, PVs)?
  • Os tamanhos dos blocos estão harmonizados? (Tamanho da faixa RAID, tamanho do bloco, blocos FS, ...)
  • O sistema de arquivos está otimizado para a configuração do RAID? (Nível e tamanho do bloco)

Como a taxa de transferência de todo o RAID (desconsiderando o FS) é significativamente menor do que um único disco, é provável que você tenha configurado sua estratégia de gravação incorretamente; o controlador provavelmente está aguardando todos os discos confirmarem a gravação (e, a menos que você tenha a memória RAM na bateria do controlador, isso pode ser do seu interesse).

romano
fonte
isso é realmente mais difícil do que eu pensava, eu pensei que era tão simples quanto atualizar a ram do controlador RAID para 512 MB! , Obrigado Roman, deixe-me ver um pouco do que você acabou de dizer na esperança de encontrar a razão
Ara
A maioria das opções acima são estratégias válidas para solução de problemas para casos extremos, mas não se aplicam aos detalhes específicos da configuração do pôster original. O controlador aqui possui a taxa de transferência e a largura de banda necessárias, a CPU está boa, o controlador RAID é padronizado para a proporção de cache 25:75 R / W (deve ser totalmente desativada para uso de SSD), o CentOS6 alinha as partições corretamente e há muita abstração potencial para obter os tamanhos dos blocos "harmonizados". Os três problemas em questão são os discos 6G que são limitados em velocidades 3G, as barreiras de gravação do sistema de arquivos provavelmente estão ativadas e o elevador de E / S é o CFQ padrão.
ewwhite
1
Infelizmente, o modelo do servidor não foi anotado no momento da minha resposta. É bom saber sobre a otimização. Eu acho que as barreiras e o CFQ não custaram muito nesse "benchmark" específico, mas valiosas informações, no entanto.
Roman
@Roman Desculpe, não mencionei o modelo anteriormente, realmente aprecio sua ajuda, estou tentando que os guias do seu e do ewwhite atinjam 500-600MB, acho que é a velocidade mais alta que posso alcançar com esse limite 3G
Ara
1
Sem problema algum. Siga os links nas respostas do ewwhite, pois há coisas específicas a fazer com o P410 em conjunto com os SSDs. Além disso, faça com que você distribua os quatro discos uniformemente pelas duas conexões do backplane ao controlador.
Roman