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

11

Explicação:

Temos um servidor:

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

As unidades SSD são 4 novíssimas 2.5 "Intel 530 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 a velocidade de leitura no ataque 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 uma velocidade de leitura de 1 GB com o ataque 10, mas 270 MB nem sequer é a velocidade de um único disco!

Perguntas:

  1. Por que isso é 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, eu tenho o resultado abaixo:

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

EDIT: parece que o comando estava errado e nós deveríamos ter usado o -s144g para essa quantidade de memória RAM, é por isso que ele mostra 4GB (como sugerido nos comentários do 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 antigo comando hdparm -t /dev/sda ainda mostra:

Leituras de disco no buffer com temporização: 810 MB em 3.00 segundos = 269,85 MB / seg

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

Finalmente, esperávamos que tivéssemos desativado o cache do controlador RAID e feito algumas outras coisas antes, sem sorte, mas porque recarregamos o servidor e instalamos o sistema novamente, nos esquecemos de instalar "tuned-utils" como sugerido na resposta do ewwhite (Obrigado ewwhite por este pacote incrível que você sugeriu)

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

Aqui está o resultado para o comando iozone -t1 -i0 -i1 -i2 -r1m -s144g :

    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 comando hdparm -t /dev/sda , temos:

Leituras de disco em buffer com tempo: 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 (~ 150MB / s, que não é igual a 1/3 de um único disco)

Saída para df -h e 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
    
por Ara 04.12.2013 / 19:55

2 respostas

16

Enquanto a outra resposta aqui traz alguns pontos, seus problemas específicos se devem às limitações da plataforma e à configuração do sistema operacional:

  • Você é limitado em termos de produtividade pelo uso do consumidor SATA SSDs em um controlador RAID HP Smart Array P410 . Os discos SATA são executados a 3,0 Gbps (3G) nesses controladores, em vez de 6,0 Gbps (6 G). Então, essa é uma barreira que afeta as velocidades de leitura dos seus SSDs da Intel; 300MB / s ou menos por unidade.

  • O controlador Smart Array P410 possui requisitos e práticas recomendadas específicos quando usados com SSDs. Em suma, o controlador é capaz de 50.000 IOPS, desabilitar o acelerador de matriz para o volume do seu SSD e o desempenho é de ~ 6 drives.

  • O desempenho do disco nem sempre é sobre a velocidade de leitura / gravação sequencial. Experimente o 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 tuned-utils e defina o perfil como enterprise-performance para remover as barreiras de gravação de seus sistemas de arquivos e configure o elevador de E / S correto para sua configuração. Isso também é abordado em outras perguntas aqui .

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

Aqui está um relatório da iozone para um G7 ProLiant rodando com quatro SSDs SATA 6G (reduzidos para velocidades 3G) no mesmo controlador RAID HP Smart Array P410.

Você deve estar vendo gravações de ~ 470MB / s 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
    
por 26.11.2013 / 14:32
12

Oh querida, por onde começar?

Há muito envolvido, e você precisa de um bom entendimento de tudo. Apenas jogar um monte de discos contra um controlador RAID não renderá os resultados que você está procurando.

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

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

Como seu throughput contra todo o RAID (desconsiderando 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 que todos os discos confirmem a gravação (e, a menos que você tenha a RAM na bateria do controlador, isso pode ser de seu interesse).

    
por 26.11.2013 / 13:47