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ção | Nome | Significado |
---|---|---|
b | Bloqueantes | Vá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. |
d | Rebaixamento pendente | Um pedido (remoto) de rebaixamento deferido |
D | Rebaixamento | Um pedido de rebaixamento (local ou remoto) |
f | Descarga de Log | O log precisa ser enviado antes de liberar esse glock |
F | Congelado | Responde 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. |
i | Invalidação em progresso | No processo de estar invalidando páginas sob este glock. |
I | Inicial | Ajuste quando o bloqueio DLM é associado com este glock |
l | Bloqueado | O glock está no processo de mudança de estado |
L | LRU | Definido quando o glock está na lista do LRU |
o | Object | Definido quando o glock é associado com um objeto (ou seja, um inode para glocks tipo 2, e um grupo de recurso para glocks tipo 3) |
p | Rebaixamento em progresso | O glock está no processo de responder a um pedido de rebaixamento |
q | Em fila | Definido 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. |
r | Resposta pendente | Resposta recebida do nó remoto está aguardando processamento |
y | Sujo | Os dados precisam descarregar para o disco antes de liberar este glock |
Tabela 2.2. Sinalizadores do proprietário glock
Sinalização | Nome | Significado |
---|---|---|
a | Async | Não espere pelo resultado glock (fará um conjunto para enviar depois) |
A | Qualquer | Qualquer modo de bloqueio compatível é aceitável |
c | Sem cache | Quando desbloqueado, rebaixe o bloqueio DLM imediatamente |
e | Não expirar data | Ignore pedidos de cancelamento de bloqueios subsequentes |
E | exato | Deve ter um modo de bloqueio exato |
F | Primeiro | Ajuste quando o proprietário é o primeiro a ser concedido para este bloqueio |
H | Detentor | Indica que o bloqueio requerido é concedido |
p | Prioridade | Enfileire os proprietários no início da fila |
t | Tentar | Uma "tentativa" de bloqueio |
T | Tentar 1CB | Uma "tentativa" que envia um callback |
W | Espera | Ajuste 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úmero | Tipo de bloqueio | Use |
---|---|---|
1 | Trans | Bloqueio de transação |
2 | Inode | Dados e metadados inode |
3 | Rgrp | Metadados de grupos de recursos |
4 | Meta | O superblock |
5 | Iopen | Detecção mais próxima do último inode |
6 | Flock | flock (2) syscall |
8 | Quota | Operações de quota |
9 | Diário | Diá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.