Red Hat Training

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

C.4. A interface de debugfs do glock

A inteface do glock debugfs permite a visualização do estado interno dos Glock e os "holders" e também inclui alguns detalhes em síntese dos objetos que estão sendo travados em alguns casos. Cada linha do arquivo ou começa G: sem recuo (que se refere ao próprio glock) ou começa com uma letra diferente, recuado com um único espaço, e refere-se às estruturas associadas ao glock imediatamente acima dele no arquivo (H: é um holder, I: um inode, e R: um grupo de recursos). Aqui está um exemplo de como o conteúdo deste arquivo pode parecer:
G:  s:SH n:5/75320 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:EX n:3/258028 f:yI t:EX d:EX/0 a:3 r:4
 H: s:EX f:tH e:0 p:4466 [postmark] gfs2_inplace_reserve_i+0x177/0x780 [gfs2]
 R: n:258028 f:05 b:22256/22256 i:16800
G:  s:EX n:2/219916 f:yfI t:EX d:EX/0 a:0 r:3
 I: n:75661/219916 t:8 f:0x10 d:0x00000000 s:7522/7522
G:  s:SH n:5/127205 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:EX n:2/50382 f:yfI t:EX d:EX/0 a:0 r:2
G:  s:SH n:5/302519 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:SH n:5/313874 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:SH n:5/271916 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:SH n:5/312732 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
O exemplo acima é uma série de trechos (a partir de um arquivo de aproximadamente 18MB) gerado pelo cat/sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock durante uma execução do postmark benchmark em um sistema de arquivos GFS2 de nó único. Os glocks na figura foram selecionados, a fim de mostrar algumas das características mais interessantes dos despejos do glock.
A estados de glock são ou EX (exclusive), DF (diferido), SH (compartilhado) ou UN (desbloqueado). Esses estados correspondem diretamente aos modos de bloqueio DLM, exceto para UN, que pode representar o estado de bloqueio DLM nulo, ou que GFS2 não mantém um bloqueio DLM (dependendo da bandeira I, como explicado acima). O campo s: do glock indica o estado actual do bloqueio e o mesmo campo no holder indica o modo requerido. Se o bloqueio for concedido, o holderr terá o bit H definido em suas bandeiras (f: campo). Caso contrário, ele terá o conjunto de bits de espera W.
O campo n: (número) indica o número associado a cada item. Para glocks, este é onúmero do tipo seguido pelo número glock, assim, no exemplo acima, o primeira glock é n: 5/75320, isto é, um glock Iopen, que se relaciona com Inode 75320. No caso do inode e glocks Iopen, o número Glock é sempre idêntico ao número do bloco de disco do inode.

Nota

Os números glock (n: campo) no arquivo de glocks debugfs, estão em hexadecimal, enquanto que o resultado do tracepoints lista-os em decimal. Isto acontece por razões históricas, números glock foram sempre escritos em hexadecimal, mas decimal foi escolhido para os pontos de rastreamento, para que os números pudessem ser facilmente comparados com o outro resultado de tracepoint (a partir do blktrace por exemplo) e com resultado de stat(1).
Uma listagem completa de todas as bandeiras para ambos holder e glock são definidas em Tabela C.4, “Sinalizadores Glock” e Tabela C.5, “Sinalizadores do proprietário glock”. O conteúdo de blocos de valor de bloqueio não está disponível no momento via interface debugfs do glock.
A Tabela C.3, “Tipos de Glock” mostra os significados dos diferentes tipos de glock.

Tabela C.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
Uma das bandeiras mais importantes glock é a bandeira l (bloqueado). Isto é o bit de bloqueio, que é utilizado para arbitrar o acesso ao estado Glock quando uma mudança de estado está a ser executada. Ele é definido quando a máquina de estado está prestes a enviar um pedido de bloqueio remoto via a DLM, e só apagada quando a operação toda tenha sido realizada. Às vezes, isso pode significar que mais do que um pedido de bloqueio terá sido enviado, com várias invalidações ocorrendo de tempo em tempo.
Tabela C.4, “Sinalizadores Glock” exibe o significado das bandeiras de glock diferentes.

Tabela C.4. Sinalizadores Glock

SinalizadorNomeSignificado
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
FCongeladoRespostas de nós remotos ignorados - recuperação em progresso.
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
Quando uma chamada remota é recebida de um nó que deseja obter um bloqueio em um modo que entra em conflito com o que foi realizado no nó local, então uma das duas bandeiras D (rebaixar) ou d (rebaixar pendente) é definida. A fim de evitar condições de desespero, quando existe um bloqueio de contenção em particular, cada bloqueio recebe um tempo mínimo de espera. Um nó que ainda não tenha tido o bloqueio para o tempo mínimo de espera é permitido para manter aquele bloqueio até que o intervalo de tempo tenha expirado.
Se o intervalo de tempo expirou, então a bandeira D (demote) será definida e o estado requerido será gravado. Nesse caso, na próxima vez que não houver bloqueios concedidos na fila de holders, o bloqueio será rebaixado. Se o intervalo de tempo não houver expirado, a bandeira d (demote pending) será definida em seu lugar. Isso também agenda a máquina de estado para limpar o d (demote pending) e definir o D (demote), quando o tempo mínimo de espera expirar.
A bandeira I (initial) é definida quando o glock recebe um bloqueio do DLM. Isto acontece quando o glock é utilizado pela primeira vez e a bandeira I fica definida até que o glock é finalmente liberado (quando o bloqueio do DLM é desbloqueado).