Estratificação de E / S HP DL380p Gen8 (controlador p420i) em partições XFS

14

Nos servidores DL380p gen8 que usam XFS no LVM e no RAID 1 + 0 com 6 discos, uma carga de trabalho idêntica resulta em um aumento de dez vezes na gravação de discos no RHEL 6 em comparação com o RHEL 5, tornando os aplicativos inutilizáveis.

Observe que não estou tentando otimizar o sistema co6 o máximo possível, mas entendendo por que o co6 se comporta de maneira tão diferente e resolvendo isso.

vmstat / iostat

Temos uma configuração de replicação do MySQL, usando o mysql 5.5. Escravos Mysql em servidores gen8 que usam RHEL 6 como SO executam mal; a inspeção com vmstat e iostat mostra que esses servidores executam dez vezes a atividade de paginação e dez vezes a quantidade de gravações no subsistema de disco. O blktrace mostra que essas gravações não são iniciadas pelo mysql, mas pelo kernel.

Centos 5:

[dkaarsemaker@co5 ~]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0     12 252668 102684 10816864    0    0     8   124    0    0  9  1 90  0  0
 1  0     12 251580 102692 10817116    0    0    48  2495 3619 5268  6  1 93  0  0
 3  0     12 252168 102692 10817848    0    0    32  2103 4323 5956  6  1 94  0  0
 3  0     12 252260 102700 10818672    0    0   128  5212 5365 8142 10  1 89  0  0

[dkaarsemaker@co5 ~]$ iostat 1
Linux 2.6.18-308.el5 (bc290bprdb-01.lhr4.prod.booking.com)  02/28/2013

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.74    0.00    0.81    0.25    0.00   90.21

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0      277.76       399.60      5952.53 2890574849 43058478233
cciss/c0d0p1      0.01         0.25         0.01    1802147      61862
cciss/c0d0p2      0.00         0.01         0.00     101334      32552
cciss/c0d0p3    277.75       399.34      5952.52 2888669185 43058383819
dm-0             32.50        15.00       256.41  108511602 1854809120
dm-1            270.24       322.97      5693.34 2336270565 41183532042

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.49    0.00    0.79    0.08    0.00   91.64

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0      300.00        32.00      4026.00         32       4026
cciss/c0d0p1      0.00         0.00         0.00          0          0
cciss/c0d0p2      0.00         0.00         0.00          0          0
cciss/c0d0p3    300.00        32.00      4026.00         32       4026
dm-0              0.00         0.00         0.00          0          0
dm-1            300.00        32.00      4026.00         32       4026

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.25    0.00    0.46    0.21    0.00   95.09

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0      507.00       160.00     10370.00        160      10370
cciss/c0d0p1      0.00         0.00         0.00          0          0
cciss/c0d0p2      0.00         0.00         0.00          0          0
cciss/c0d0p3    507.00       160.00     10370.00        160      10370
dm-0              0.00         0.00         0.00          0          0
dm-1            507.00       160.00     10370.00        160      10370

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.33    0.00    0.50    0.08    0.00   94.09

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0      318.00        64.00      4559.00         64       4559
cciss/c0d0p1      0.00         0.00         0.00          0          0
cciss/c0d0p2      0.00         0.00         0.00          0          0
cciss/c0d0p3    319.00        64.00      4561.00         64       4561
dm-0              0.00         0.00         0.00          0          0
dm-1            319.00        64.00      4561.00         64       4561

E no Centos 6, um aumento de dez vezes nas paginações e gravações em disco:

[root@co6 ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 361044  52340 81965728    0    0    19  1804   36  110  1  1 98  0  0  
 0  0      0 358996  52340 81965808    0    0   272 57584 1211 3619  0  0 99  0  0  
 2  0      0 356176  52348 81966800    0    0   240 34128 2121 14017  1  0 98  0  0 
 0  1      0 351844  52364 81968848    0    0  1616 29128 3648 3985  1  1 97  1  0  
 0  0      0 353000  52364 81969296    0    0   480 44872 1441 3480  1  0 99  0  0  

[root@co6 ~]# iostat 1
Linux 2.6.32-279.22.1.el6.x86_64 (bc291bprdb-01.lhr4.prod.booking.com)  02/28/2013  _x86_64_    (32 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.08    0.00    0.67    0.27    0.00   97.98

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             373.48      1203.02    115203.05   11343270 1086250748
dm-0             63.63        74.92       493.63     706418    4654464
dm-1            356.48      1126.72    114709.47   10623848 1081596740

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.19    0.06    0.00   99.50

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             330.00        80.00     77976.00         80      77976
dm-0              0.00         0.00         0.00          0          0
dm-1            328.00        64.00     77456.00         64      77456

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.38    0.00    0.19    0.63    0.00   98.81

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             570.00      1664.00    128120.00       1664     128120
dm-0              0.00         0.00         0.00          0          0
dm-1            570.00      1664.00    128120.00       1664     128120

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.66    0.00    0.47    0.03    0.00   98.84

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             317.00       448.00     73048.00        448      73048
dm-0             34.00         0.00       272.00          0        272
dm-1            309.00       448.00     72776.00        448      72776

Estreitamento

Servidores Gen 8 usando RHEL 5 e servidores Gen 7 usando RHEL 5 ou 6 não mostram esse problema. Além disso, o RHEL 6 com ext3 como sistema de arquivos, em vez de nosso xfs padrão, não mostra o problema. O problema realmente parece estar entre o XFS, o hardware gen8 e o centos 6. O RHEL 6 também mostra o problema.

Edit 29/04: adicionamos HBA qlogic à máquina G8. O uso do XFS no armazenamento de canal de fibra não mostra o problema. Portanto, está definitivamente em algum lugar na interação entre xfs / hpsa / p420i.

XFS

Os xfs mais recentes no rhel 8 parecem capazes de detectar a largura da faixa subjacente, mas apenas nos controladores p420i usando o driver hpsa, e não nos controladores p410i usando cciss.

Saída xfs_info:

[root@co6 ~]# xfs_info /mysql/bp/
meta-data=/dev/mapper/sysvm-mysqlVol isize=256    agcount=16, agsize=4915136 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=78642176, imaxpct=25
         =                       sunit=64     swidth=192 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=38400, version=2
         =                       sectsz=512   sunit=64 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

sunit / swidth são 0 em toda a configuração marcada como OK acima. Parece que não podemos mudar isso, nem no mkfs nem com a opção de montagem noalign. Também não sabemos se essa é a causa.

Hugepages

Outras pessoas com problemas de XFS no rhel 6 dizem que desativar grandes páginas, e especialmente grandes páginas transparentes, pode ser benéfica. Nós desativamos os dois, o problema não desapareceu.

Já tentamos e observamos muitas coisas, nenhuma das seguintes opções ajudou:

  • Usando numactl para influenciar alocações de memória. Percebemos que o g7 e o g8 têm um layout diferente de numa, nenhum efeito foi visto
  • Kernels mais recentes (tão novos quanto 3.6) não pareciam resolver isso. Nem usando o fedora 17.
  • O iostat não relata um aumento de dez vezes nas transações de gravação, apenas no número de bytes gravados
  • O uso de agendadores de E / S diferentes não tem efeito.
  • A montagem do sistema de arquivos relevante noatime / nobarrier / nopdiratime não ajudou
  • Alterar / proc / sys / vm / dirty_ratio não teve efeito
  • Isso acontece nos sistemas baseados nas CPUs 2640 e 2670
  • hpsa-3.2.0 não resolve o problema
Dennis Kaarsemaker
fonte
Mostre seu XFS mkfs.xfse mountopções. O EL6 reconhece o alinhamento de partição. O HPSA estaria em uso nos dois tipos de controladores Smart Array no EL6, mas o EL5 usaria o CCISS.
ewwhite
Opções do mkfs: nenhuma. Linha de montagem: / dev / mapper / sysvm-mysqlVol no / mysql / bp tipo xfs (rw, alocam = 1m). Adicionará saída xfs_info completa à postagem.
Dennis Kaarsemaker #
Então, qual era a solução?
ewwhite

Respostas:

7

O XFS e o EL6 caíram em um estado feio ... Eu abandonei o XFS nos sistemas EL6 por enquanto, devido a vários recursos / alterações de upstream que entraram no kernel da Red Hat ...

Essa foi uma surpresa e causou pânico: por que meus sistemas de arquivos XFS estão consumindo subitamente mais espaço e arquivos esparsos?

Desde novembro de 2012, a versão do XFS é lançada em kernels mais recentes do 2.6.32-279.11.1.el6que um problema irritante de carga e desempenho, causado pelo Red Hat Bugzilla 860787 . Desde então, tenho desempenho imprevisível e filas de execução mais altas que a média.

Para novos sistemas, estou usando o ZFS ou apenas o ext4. Para sistemas mais antigos, estou congelando-os em 2.6.32-279.11.1.el6.

Tente reverter para essa versão com:

yum install kernel-2.6.32-279.11.1.el6.x86_64

Além do acima, devido ao tipo de controlador RAID que você está usando, as otimizações típicas estão em ordem:

Monte seus sistemas de arquivos XFS noatime. Você também deve aproveitar a estrutura Tuned com:

tuned-adm profile enterprise-storage

para definir um readahead, nobarrier e elevador de E / S para uma boa linha de base.


Editar:

Há muitas recomendações em torno da otimização do sistema de arquivos XFS. Eu usei o sistema de arquivos exclusivamente na última década e, ocasionalmente, tive que ajustar os parâmetros, pois ocorreram alterações subjacentes no sistema operacional. Não tive uma queda drástica no desempenho como a sua, mas também não uso o LVM.

Eu acho que não é razoável esperar que o EL5 atue da mesma maneira que o EL6 , dada a diferente geração do kernel, padrões compilados, agendadores, pacotes, etc.

O que eu faria neste momento?

  • Eu examinaria os parâmetros mkfs.xfs e como você está construindo os sistemas. Você está usando o particionamento XFS durante a instalação ou criando as partições após o fato? Eu faço a criação do sistema de arquivos XFS após a instalação principal do SO, porque tenho mais flexibilidade nos parâmetros fornecidos.

  • Meus parâmetros de criação do mkfs.xfs são simples: mkfs.xfs -f -d agcount=32 -l size=128m,version=2 /dev/sdb1por exemplo.

  • Minhas opções de montagem são: noatime,logbufs=8,logbsize=256k,nobarriereu permitiria que a pré - alocação dinâmica do XFS fosse executada nativamente e não a restringisse como você tem aqui. Meu desempenho melhorou com isso.

  • Então, eu não uso LVM . Especialmente sobre RAID de hardware ... Especialmente nos controladores HP Smart Array, onde existem algumas funções semelhantes a LVM nativas para o dispositivo. No entanto, usando o LVM, você não tem acesso para fdiska criação de partições brutas. Uma coisa que mudou de EL5 para EL6 é o alinhamento da partição no instalador e muda para fdisk para definir o setor inicial no limite do cilindro.

  • Verifique se você está executando seus controladores e unidades HP Smart Array no nível de revisão atual. Nesse ponto, faz sentido atualizar o servidor inteiro para a revisão atual do firmware do HP Service Pack for ProLiant . Este é um DVD inicializável que atualiza todos os componentes detectados no sistema.

  • Eu verificaria as configurações do controlador RAID. Cole a saída de hpacucli ctrl all show config detail. Aqui está o meu. Você deseja uma taxa de cache inclinada para gravações versus leituras. 75:25 é a norma. O tamanho da faixa padrão de 256K deve ser bom para este aplicativo.

  • Eu provavelmente tentaria isso sem o LVM.

  • Quais são os seus sysctl.confparâmetros?

ewwhite
fonte
Infelizmente, o kernel mais antigo mostra o mesmo comportamento.
Dennis Kaarsemaker
Teste sem LVM.
precisa saber é
1

Tivemos um problema semelhante e descobrimos que é devido a alterações na versão do log do XFS. Os logs da versão 2 respeitam o conjunto de largura da faixa usado com o mkfs.xfs. Se você faz muito fsync, seu cartão de ataque não pode mais falsificar essas gravações de logs. Você pode testá-lo formatando a partição sem nenhuma configuração de largura de banda (não faz nenhuma diferença com o RAID 1 + 0). Você pode verificar isso com blktrace / seekwatcher para ver se envolve muita atualização de log.

mjiang
fonte
Qual é a sua mkfs.xfsstring de comando?
ewwhite
Eu mesmo pretendo fornecer uma resposta, pois finalmente a encontramos. Sua resposta faz parte da solução, mas não toda.
Dennis Kaarsemaker
mkfs.xfs -f / your_dev
mjiang