Red Hat Training
A Red Hat training course is available for RHEL 8
6.5. Solução de problemas de desempenho do GFS2 com o lixão de fechadura GFS2
Se seu desempenho de cluster estiver sofrendo devido ao uso ineficiente do cache GFS2, você poderá ver grandes e crescentes tempos de espera de E/S. Você pode fazer uso das informações de lock dump do GFS2 para determinar a causa do problema.
Esta seção fornece uma visão geral do lixão de eclusas GFS2.
As informações sobre o lixão GFS2 podem ser coletadas no arquivo debugfs
que pode ser encontrado no seguinte caminho, assumindo que debugfs
esteja montado em /sys/kernel/debug/
:
/sys/kernel/debug/gfs2/fsname/glocks
O conteúdo do arquivo é uma série de linhas. Cada linha começando com G: representa uma glock, e as seguintes linhas, recuadas por um único espaço, representam um item de informação relativo à glock imediatamente antes delas no arquivo.
A melhor maneira de usar o arquivo debugfs
é usar o comando cat
para obter uma cópia do conteúdo completo do arquivo (pode levar muito tempo se você tiver uma grande quantidade de RAM e muitos inodes em cache) enquanto a aplicação está enfrentando problemas, e então olhar os dados resultantes em uma data posterior.
Pode ser útil fazer duas cópias do arquivo debugfs
, uma poucos segundos ou até mesmo um minuto ou dois depois da outra. Comparando as informações do titular nos dois traços relativos ao mesmo número de glock, você pode dizer se a carga de trabalho está progredindo (é apenas lenta) ou se ficou presa (o que é sempre um bug e deve ser reportado ao suporte da Red Hat imediatamente).
As linhas no arquivo debugfs
que começam com H: (titulares) representam pedidos de fechaduras concedidas ou à espera de serem concedidas. O campo das bandeiras na linha f: mostra qual: A bandeira "W" se refere a um pedido de espera, a bandeira "H" se refere a um pedido deferido. Os glocks que têm um grande número de pedidos de espera são provavelmente aqueles que estão passando por uma disputa particular.
Tabela 6.1, “Bandeiras Glock” mostra os significados das diferentes bandeiras porta-bandeiras e Tabela 6.2, “Bandeiras porta-bandeiras Glock” mostra os significados das diferentes bandeiras porta-bandeiras.
Tabela 6.1. Bandeiras Glock
Bandeira | Nome | Significado |
---|---|---|
b | Bloqueio | Válido quando a bandeira bloqueada é colocada, e indica que a operação que foi solicitada ao DLM pode bloquear. Esta bandeira é liberada para as operações de despromoção e para os bloqueios "try". O objetivo desta bandeira é permitir a coleta de estatísticas do tempo de resposta do DLM independente do tempo que os outros nós levam para destravar as fechaduras. |
d | Pendente de demote | Um pedido de demote (remoto) diferido |
D | Demote | Um pedido de demote (local ou remoto) |
f | Fluxo de toras | O tronco precisa ser comprometido antes de liberar esta glóculo |
F | Congelados | Respostas de nós remotos ignorados - a recuperação está em andamento. Esta bandeira não está relacionada ao congelamento do sistema de arquivos, que usa um mecanismo diferente, mas é usada apenas na recuperação. |
i | Invalidar em andamento | No processo de invalidar as páginas sob esta glock |
I | Inicial | Definido quando a fechadura DLM é associada a esta glock |
l | Fechado | A glóculo está em processo de mudança de estado |
L | LRU | Definido quando a glock está na lista da LRU |
o | Objeto | Definido quando a glock está associada a um objeto (ou seja, um inode para glocks tipo 2 e um grupo de recursos para glocks tipo 3) |
p | Demonstração em andamento | A glock está no processo de responder a um pedido de demote |
q | Enfileirado | Definido quando um suporte é enfileirado e limpo quando a glande é mantida, mas não há nenhum suporte restante. Usado como parte do algoritmo, o algoritmo calcula o tempo mínimo de retenção para uma bata. |
r | Resposta pendente | A resposta recebida do nó remoto está aguardando processamento |
y | Sujo | Os dados precisam ser lavados em disco antes de soltar esta glock |
Tabela 6.2. Bandeiras porta-bandeiras Glock
Bandeira | Nome | Significado |
---|---|---|
a | Async | Não espere pelo resultado da glock (pesquisará o resultado mais tarde) |
A | Qualquer | Qualquer modo de bloqueio compatível é aceitável |
c | Sem cache | Quando desbloqueado, destravar imediatamente a fechadura DLM |
e | Não expira | Ignorar pedidos subsequentes de cancelamento de bloqueio |
E | exato | Deve ter o modo de bloqueio exato |
F | Primeiro | Definido quando o titular é o primeiro a ser concedido para esta fechadura |
H | Titular | Indica que o bloqueio solicitado é concedido |
p | Prioridade | Titular da fila de espera à frente da fila |
t | Tente | Uma fechadura "try |
T | Experimente 1CB | Uma fechadura "try" que envia uma chamada de retorno |
W | Aguarde | Definido enquanto se aguarda a solicitação para completar |
Tendo identificado uma glock que está causando um problema, o próximo passo é descobrir com qual inode ela se relaciona. O número da glóculo (n: na linha G:) indica isto. É do formulário type/number e se type é 2, então a glock é um inode glock e o number é um inode number. Para rastrear o inode, você pode então executar find -inum number
onde number é o número do inode convertido do formato hexadecimal no arquivo de glocks em decimal.
Se você executar o comando find
em um sistema de arquivo quando ele estiver passando por uma contenção de travas, é provável que você piore o problema. É uma boa idéia parar a aplicação antes de executar o comando find
quando você estiver procurando por inodes contendidos.
Tabela 6.3, “Tipos de Glock” mostra os significados dos diferentes tipos de glock.
Tabela 6.3. Tipos de Glock
Número do tipo | Tipo de fechadura | Use |
---|---|---|
1 | Trans | Trava da transação |
2 | Inode | Inode metadados e dados |
3 | Rgrp | Metadados dos grupos de recursos |
4 | Meta | O superbloco |
5 | Iopen | A última detecção mais próxima do inode |
6 | Rebanho |
|
8 | Quota | Operações de cotas |
9 | Jornal | Jornal mutex |
Se a glock que foi identificada era de um tipo diferente, então é mais provável que seja do tipo 3: (grupo de recursos). Se você vir um número significativo de processos esperando por outros tipos de glock sob cargas normais, informe isso ao suporte da Red Hat.
Se você vir uma série de pedidos em fila de espera em um bloqueio de grupo de recursos, pode haver uma série de razões para isso. Uma delas é que há um grande número de nós em comparação com o número de grupos de recursos no sistema de arquivos. Outra é que o sistema de arquivos pode estar muito próximo de estar cheio (exigindo, em média, buscas mais longas por blocos livres). A situação em ambos os casos pode ser melhorada adicionando mais armazenamento e usando o comando gfs2_grow
para expandir o sistema de arquivo.