Matriz inteligente HP DL380 G7 + P410i + sysbench -> baixo desempenho no ataque 10

8

Eu tenho o sistema em execução com baixa utilização de E / S:

  1. HP DL380G7 (24 gb de RAM)
  2. Smart Array p410i com cache de gravação com 512 MB de memória
  3. 6x unidades SAS de 10k rpm 146gb em RAID10
  4. Debian Squeze linux, ext4 + LVM, hpacucli instalado

iostat (cciss / c0d1 = matriz raid10, partição dm-7 = 60G lvm para teste):

Dispositivo: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz aguardam svctm% util
cciss / c0d0 0,00 101,20 0,00 6,20 0,00 0,42 138,58 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 395,20 3,20 130,20 0,18 2,05 34,29 0,04 0,26 0,16 2,08
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 3,20 391,00 0,18 1,53 8,87 0,04 0,11 0,05 1,84
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 106,80 0,00 0,42 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,60 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 2,80 0,00 0,01 8,00 0,00 0,00 0,00 0,00
dm-1 0,00 0,00 0,00 132,00 0,00 0,52 8,00 0,00 0,02 0,01 0,16
dm-7 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

hpacucli "ctrl tudo mostra a configuração"

Matriz inteligente P410i no slot 0 (incorporado) (sn: 5001438011FF14E0)

   matriz A (SAS, espaço não utilizado: 0 MB)


      unidade lógica 1 (136,7 GB, RAID 1, OK)

      unidade física 1I: 1: 1 (porta 1I: caixa 1: compartimento 1, SAS, 146 GB, OK)
      unidade física 1I: 1: 2 (porta 1I: caixa 1: compartimento 2, SAS, 146 GB, OK)

   matriz B (SAS, espaço não utilizado: 0 MB)


      unidade lógica 2 (410,1 GB, RAID 1 + 0, OK)

      unidade física 1I: 1: 3 (porta 1I: caixa 1: compartimento 3, SAS, 146 GB, OK)
      unidade física 1I: 1: 4 (porta 1I: caixa 1: compartimento 4, SAS, 146 GB, OK)
      unidade física 2I: 1: 5 (porta 2I: caixa 1: compartimento 5, SAS, 146 GB, OK)
      unidade física 2I: 1: 6 (porta 2I: caixa 1: compartimento 6, SAS, 146 GB, OK)
      unidade física 2I: 1: 7 (porta 2I: caixa 1: compartimento 7, SAS, 146 GB, OK)
      unidade física 2I: 1: 8 (porta 2I: caixa 1: compartimento 8, SAS, 146 GB, OK)

   SEP (ID do fornecedor PMCSIERA, Modelo SRC 8x6G) 250 (WWID: 5001438011FF14EF)

hpacucli "ctrl all show status"

Matriz inteligente P410i no slot 0 (incorporado)
   Status do Controlador: OK
   Status do cache: OK
   Status da bateria / capacitor: OK

Comando Sysbench

sysbench --init-rng = on --test = fileio --num-threads = 16 --file-num = 128 --file-size-block = 4K --file-total-size = 54G --file-test -mode = rndrd --file-fsync-freq = 0 --file-fsync-end = execução incorreta --max-orders = 30000

Resultados Sysbench

sysbench 0.4.12: benchmark de avaliação de sistema multiencadeado

Executando o teste com as seguintes opções:
Número de threads: 16
Inicializando o gerador de números aleatórios a partir do timer.


Sinalizadores abertos de arquivo extra: 0
128 arquivos, 432Mb cada
Tamanho total do arquivo de 54Gb
Tamanho do bloco 4Kb
Número de pedidos aleatórios para IO aleatório: 30000
Taxa de leitura / gravação para o teste IO aleatório combinado: 1,50
Usando o modo de E / S síncrona
Fazendo teste de leitura aleatória
Tópicos iniciados!
Feito.

Operações realizadas: 30000 Leitura, 0 Gravação, 0 Outros = 30000 Total
Leitura 117.19Mb Gravado 0b Total transferido 117.19Mb (935.71Kb / s)
  233.93 Solicitações / s executadas

Resumo da execução do teste:
    tempo total: 128.2455s
    número total de eventos: 30000
    tempo total gasto pela execução do evento: 2051.5525
    estatísticas por solicitação:
         min: 0.00ms
         média: 68.39ms
         max: 2010.15ms
         Aproximadamente. Percentil 95: 660.40ms

Segura a justiça:
    eventos (avg / stddev): 1875.0000 / 111.75
    tempo de execução (avg / stddev): 128.2220 / 0.02

iostat durante o teste

avg-cpu:% user% nice% system% iowait% steal% ocioso
           0,00 0,01 0,10 31,03 0,00 68,86

Dispositivo: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz aguardam svctm% util
cciss / c0d0 0,00 0,10 0,00 0,60 0,00 0,00 9,33 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 46,30 208,50 1,30 0,82 0,10 8,99 29,03 119,75 4,77 100,00
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 0,00 51,60 0,00 0,20 8,00 49,72 877,26 19,38 100,00
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 0,70 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-7 0,00 0,00 208,50 0,00 0,82 0,00 8,04 25,00 75,29 4,80 100,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

Bonnie ++ v1.96

cmd: / usr / sbin / bonnie ++ -c 16 -n 0

Escrevendo um byte de cada vez ... feito
Escrevendo de forma inteligente ... feito
Reescrevendo ... concluído
Lendo um byte de cada vez ... feito
Leitura inteligente ... feito
inicie-os ... pronto ... pronto ... pronto ... pronto ... pronto ...
Versão 1.96 ------ Saída sequencial ------ - Entrada equivalente - - Random-
Simultaneidade 16 -Por Chr- --Bloco-- -Rescreva- -Por Chr- --Block-- --Seeks--
Tamanho da máquina K / seg% CP K / seg% CP K / seg% CP K / seg% CP K / seg% CP / seg% CP
seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8 265,2 1
Latência 14899us 726ms 15194ms 100ms 122ms 665ms

1.96,1.96, seo-db, 16,1337541936,48304M ,, 819,99,188274,17,98395,8,2652,78,201280,8,265.2,1 ,,,,,,,,,,,,,,, ,,,, 14899us, 726ms, 15194ms, 100ms, 122ms, 665ms ,,,,,,

Questões

Assim, o sysbench mostrou 234 leituras aleatórias por segundo.
Espero que seja pelo menos 400.
Qual pode ser o gargalo? LVM?
Outro sistema com unidades mdadm raid1 + 2x 7200rpm mostra mais de 200 leituras aleatórias por segundo ...

Obrigado por qualquer ajuda!

Oleg Golovanov
fonte
Qual é o tamanho da faixa? O iostat parece que o sysbench estava trabalhando em apenas uma unidade física.
Dmitri Chubarov
hpacucli diz que o tamanho da tira é de 256k. Os dispositivos DM-x do iostat não são unidades físicas, mas partições lvm. DM-7 é uma partição lvm de 60GB, onde executei o sysbench.
Oleg Golovanov
O que exatamente você está testando com essa sysbenchlinha de comando específica ? Você está simulando um cenário de uso no mundo real?
ewwhite
Estou simulando o banco de dados PostgreSql, que usa internamente blocos de 4kb. Meu aplicativo faz um monte de leituras aleatórias / escreve em arquivos de dados grandes (app parou no momento do teste)
Oleg Golovanov

Respostas:

10

Seu sistema está definitivamente com baixo desempenho, com base nas especificações de hardware. Carreguei o sysbenchutilitário em alguns servidores ociosos HP ProLiant DL380 G6 / G7 executando o CentOS 5/6 para verificar seu desempenho. Estas são partições fixas normais em vez de LVM. (Normalmente não uso LVM, devido à flexibilidade oferecida pelos controladores HP Smart Array)

O DL380 G6 possui uma matriz RAID 1 + 0 de 6 discos em um controlador Smart Array P410 com 512 MB de cache com bateria. O DL380 G7 possui um array SSD SLC corporativo de 2 discos. Os sistemas de arquivos são XFS . Eu usei a mesma linha de comando sysbench que você:

sysbench --init-rng=on --test=fileio --num-threads=16 --file-num=128 --file-block-size=4K --file-total-size=54G --file-test-mode=rndrd --file-fsync-freq=0 --file-fsync-end=off --max-requests=30000 run

Meus resultados foram 1595 leituras aleatórias por segundo em 6 discos.
No SSD, o resultado foi 39047 leituras aleatórias por segundo . Os resultados completos estão no final deste post ...

  • Quanto à sua configuração, a primeira coisa que me impressiona é o tamanho da sua partição de teste. Você está quase enchendo a partição de 60 GB com 54 GB de arquivos de teste. Não tenho certeza se o ext4 tem um problema com desempenho acima de 90%, mas essa é a coisa mais rápida para você modificar e testar novamente. (ou use um conjunto menor de dados de teste)

  • Mesmo com o LVM, existem algumas opções de ajuste disponíveis nesta configuração de controlador / disco. Verificar a leitura antecipada e alterar a configuração do planejador de E / S do cfq padrão para deadline ou noop é útil. Consulte a pergunta e as respostas em: Linux - ajuste do controlador RAID de hardware do mundo real (scsi e cciss)

  • Qual é a sua taxa de cache do controlador RAID? Normalmente, uso um saldo de gravação / leitura de 75% / 25%. Este deve ser um teste rápido. A matriz de 6 discos foi concluída em 18 segundos. O seu levou mais de 2 minutos.

  • Você pode executar um teste bonnie ++ ou iozone na partição / matriz em questão? Seria útil verificar se existem outros gargalos no sistema. Eu não estava familiarizado com o sysbench , mas acho que essas outras ferramentas fornecerão uma melhor visão geral dos recursos do sistema.

  • As opções de montagem do sistema de arquivos podem fazer uma pequena diferença, mas acho que o problema pode ser mais profundo do que isso ...

saída hpacucli ...

Smart Array P410i in Slot 0 (Embedded)    (sn: 50123456789ABCDE)

   array A (SAS, Unused Space: 0 MB)

      logicaldrive 1 (838.1 GB, RAID 1+0, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)

   SEP (Vendor ID PMCSIERA, Model  SRC 8x6G) 250 (WWID: 50123456789ABCED)

sysbench DL380 G6 resultados de 6 discos ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.

Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30001 Read, 0 Write, 0 Other = 30001 Total
Read 117.19Mb  Written 0b  Total transferred 117.19Mb  (6.2292Mb/sec)
 1594.67 Requests/sec executed

Test execution summary:
    total time:                          18.8133s
    total number of events:              30001
    total time taken by event execution: 300.7545
    per-request statistics:
         min:                                  0.00ms
         avg:                                 10.02ms
         max:                                277.41ms
         approx.  95 percentile:              25.58ms

Threads fairness:
    events (avg/stddev):           1875.0625/41.46
    execution time (avg/stddev):   18.7972/0.01

sysbench DL380 G7 SSD resultados ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.


Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30038 Read, 0 Write, 0 Other = 30038 Total
Read 117.34Mb  Written 0b  Total transferred 117.34Mb  (152.53Mb/sec)
39046.89 Requests/sec executed

Test execution summary:
    total time:                          0.7693s
    total number of events:              30038
    total time taken by event execution: 12.2631
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.41ms
         max:                                  1.89ms
         approx.  95 percentile:               0.57ms

Threads fairness:
    events (avg/stddev):           1877.3750/15.59
    execution time (avg/stddev):   0.7664/0.00
ewwhite
fonte
Obrigado pela resposta detalhada! Seus resultados são impressionantes ... >> Normalmente não uso LVM, especialmente com a flexibilidade oferecida pelos controladores HP RAID. Que tipo de flexibilidade você quer dizer? >> Qual é a sua taxa de cache do controlador RAID? 75/25, padrão) >> Acho que o problema é mais profundo que isso ... sim! Anexei os resultados do bonnie ++ v1.96 no final do meu post principal. Parece que os resultados não são tão bons :( No começo, vou tentar me afastar do LVM e executar o teste novamente. Se não ajudar - suponho que haja algo errado com o controlador de ataque
Oleg Golovanov
Você pode mostrar sua bonnie++linha de comando?
Ewwhite 20/05
Desculpe, minha culpa. Linha de comando: / usr / sbin / bonnie ++ -c 16 -n 0
Oleg Golovanov
3
Mudei o agendador de cfq para noop e os resultados do benchmark aumentaram dramaticamente! )) Mostra agora sysbench para me 1500 aleatório lê / segundo ... grande, grande obrigado :)
Oleg Golovanov
1
Tente deadlinetambém ... Em cargas de banco de dados, ele pode funcionar melhor do que noop, além disso, existem alguns ajustes adicionais no seu, /sys/block/cciss1/queue/iosched/se você usar deadline. Consulte esta publicação para obter mais detalhes sobre o ajuste mais preciso. Consegui fazer esse teste até 2600 leituras aleatórias / segundo ao fazer isso.
ewwhite