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.

Nota

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

BandeiraNomeSignificado

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

BandeiraNomeSignificado

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.

Atenção

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 tipoTipo de fechaduraUse

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

flock(2) syscall

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.