Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.9.3. Resolução de Problemas do Desempenho do Despejo de Bloqueios GFS2

Se o desempenho de seu cluster está comprometido por causa do uso ineficiente do cache do GFS2, você pode ver grandes e crescentes períodos de espera de E/S. Você pode usar as informações de despejo de bloquieo do GFS2 para determinar a causa do problema.
Esta seção provê uma visão geral do despejo do Bloqueio GFS2. Para uma descrição mais completa do despejo do Bloqueio GFS2, veja Apêndice C, Os tracepoints e o Arquivo debugfs glocks.
As informações de despejo de bloqueio do GFS2 podem ser colhidas a partir do arquivo debugfs que pode ser encontrado no seguinte caminho, assumindo que o debugfs está montado em /sys/kernel/debug/:
/sys/kernel/debug/gfs2/fsname/glocks
O conteúdo do arquivo é uma série de linhas. Cada linha iniciando com G: representa um glock e as linhas seguintes, iniciadas com um único espaço, representam um ítem de formação relacionadas ao glock em questão nesse arquivo.
A melhor maneira de usar o arquivo debugfs é usar o comando cat para fazer uma cópia do conteúdo completo do arquivo (isso pode levar um longo tempo se você tiver uma grande quantidade de RAM e vários inodes em cache) enquanto o aplicativo estiver passando por problemas e então buscando através dos dados resultantes em uma data posterior.

Nota

Pode ser útil fazer duas cópias do arquivo debugfs, uma poucos segundos ou mesmo um ou dois minutos depois da outra. Comparando as informações do detentor nos dois arquivos, relacionados ao mesmo número glock, você poderá dizer se a carga de trabalho está fazendo progresso (que está somente lenta) ou se tornou parada (que é sempre um bug e deve ser avisado ao suporte Red Hat imediatamente).
Linhas no arquivo debugfs iniciando com o H: (holders - detentores) representam pedidos de bloqueios tanto concedidos ou em espera. O sinalizador 'W' se refere ao pedido em espera, o 'H' se refere a um pedido concedido. Os glocks que possuem um grande número de pedidos em espera são provavelmente aqueles que estão passando por determinadas contenções.
Tabela 2.1, “Sinalizadores Glock” mostra o significado de sinalizações de glock diferentes e Tabela 2.2, “Sinalizadores do proprietário glock” mostra os significados das sinalizações do proprietário diferentes do glock na ordem em que eles aparecem nos despejos do glock.

Tabela 2.1. Sinalizadores Glock

SinalizaçãoNomeSignificado
bBloqueantesVálido quando a sinalização bloqueada é definida, e indica que a operação, que foi requisitada do DLM, poderá bloquear. Esta sinalização é removida para operações de rebaixamento e para "tentativas" de bloqueios. O propósito desta sinalização é permitir reunir estatísticas do tempo de resposta de DLM independentes a partir do tempo tomado por outros nós para bloqueios de rebaixamento.
dRebaixamento pendenteUm pedido (remoto) de rebaixamento deferido
DRebaixamentoUm pedido de rebaixamento (local ou remoto)
fDescarga de LogO log precisa ser enviado antes de liberar esse glock
FCongeladoResponde a partir de nós remotos ignorados - recuperação está em progresso. Esta sinalização não é relacionada ao congelamento de sistema de arquivo, o qual utiliza um mecanismo diferente, mas é utilizado somente na recuperação.
iInvalidação em progressoNo processo de estar invalidando páginas sob este glock.
IInicialAjuste quando o bloqueio DLM é associado com este glock
lBloqueadoO glock está no processo de mudança de estado
LLRUDefinido quando o glock está na lista do LRU
oObjectDefinido quando o glock é associado com um objeto (ou seja, um inode para glocks tipo 2, e um grupo de recurso para glocks tipo 3)
pRebaixamento em progressoO glock está no processo de responder a um pedido de rebaixamento
qEm filaDefinido quando um proprietário é enfileirado em um glock e limpo quando um glock é mantido, mas não houver nenhum outro proprietário. Usado como parte do algorítimo que calcula um tempo mínimo de espera para um glock.
rResposta pendenteResposta recebida do nó remoto está aguardando processamento
ySujoOs dados precisam descarregar para o disco antes de liberar este glock

Tabela 2.2. Sinalizadores do proprietário glock

SinalizaçãoNomeSignificado
aAsyncNão espere pelo resultado glock (fará um conjunto para enviar depois)
AQualquerQualquer modo de bloqueio compatível é aceitável
cSem cacheQuando desbloqueado, rebaixe o bloqueio DLM imediatamente
eNão expirar dataIgnore pedidos de cancelamento de bloqueios subsequentes
EexatoDeve ter um modo de bloqueio exato
FPrimeiroAjuste quando o proprietário é o primeiro a ser concedido para este bloqueio
HDetentorIndica que o bloqueio requerido é concedido
pPrioridadeEnfileire os proprietários no início da fila
tTentarUma "tentativa" de bloqueio
TTentar 1CBUma "tentativa" que envia um callback
WEsperaAjuste enquanto espera por um pedido para completar
Ter identificado um glock que está causando um problema, o próximo passo é encontrar qual inode ele está relacionado. O número do glock (n: na linha G:) indica isso. Isso é na forma tipo/número e se o tipo é 2, então o glock é um glock inode e o number é um número inode. Para descobrir o inode, você pode então rodar find -inum number onde número é o número inode convertido do formato hex nos arquivos glocks em decimais.

Nota

Se você executar o find em um sistema de arquivos quando estiver passando por uma contenção de bloqueio, você poderá tornar o problema pior. É uma boa idéia parar a aplicação antes de rodar o find quando você estiver buscando por inode sustentados.
A Tabela 2.3, “Tipos de Glock” mostra os significados dos diferentes tipos de glock.

Tabela 2.3. Tipos de Glock

Digite o númeroTipo de bloqueioUse
1TransBloqueio de transação
2InodeDados e metadados inode
3RgrpMetadados de grupos de recursos
4MetaO superblock
5IopenDetecção mais próxima do último inode
6Flockflock(2) syscall
8QuotaOperações de quota
9DiárioDiário mutex
Se o glock que foi identficado fosse de um tipo diferente, então é provável que seja de um tipo 3: (grupo de recursos). Se você ver números significantes de processos esperando por outros tipos de glock sob carregamentos normais, então por favor relate isso ao suporte Red Hat.
Se você ver um número de pedidos em espera enfileirados em um bloqueio de grupo de recursos, poderão haver algumas razões para isso. Uma é que existem um grande número de nós comparados ao número de grupos de recursos no sistema de arquivos. Outra é que o sistema de arquivos podem estar quase cheios (requerendo, na média, buscas mais longas para blocos disponíveis). A situação em ambos os casos pode ser melhorada adicionado mais armazenamento e usando o comando gfs2_grow para expandir o sistema de arquivos.