8.4. A interface glock debugfs
A interface debugfs
da glock permite a visualização do estado interno das glocks e dos suportes e também inclui alguns detalhes resumidos dos objetos que estão sendo trancados em alguns casos. Cada linha do arquivo ou começa com G: sem recuo (que se refere à própria glock) ou começa com uma letra diferente, recuada com um único espaço, e refere-se às estruturas associadas à glock imediatamente acima dela no arquivo (H: é um suporte, I: um inode, e R: um grupo de recursos) . Aqui está um exemplo de como poderia ser o conteúdo deste arquivo:
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 (de um arquivo de aproximadamente 18MB) gerados pelo comando cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock
durante uma execução do benchmark do carimbo do correio em um único nó do sistema de arquivos GFS2. Os glocks da figura foram selecionados a fim de mostrar algumas das características mais interessantes das lixeiras de glock.
Os estados de glock são EX (exclusivo), DF (diferido), SH (compartilhado) ou UN (desbloqueado). Estes estados correspondem diretamente aos modos de bloqueio DLM, exceto ONU, que pode representar ou o estado de bloqueio DLM nulo, ou que o GFS2 não possui um bloqueio DLM (dependendo da bandeira I, conforme explicado acima). O s: campo da glock indica o estado atual da fechadura e o mesmo campo no suporte indica o modo solicitado. Se a fechadura for concedida, o detentor terá o bit H ajustado em suas bandeiras (f: campo). Caso contrário, ele terá o bit W de espera ajustado.
O n: campo (número) indica o número associado a cada item. Para glocks, este é o número do tipo seguido pelo número da glock, de modo que no exemplo acima, a primeira glock é n:5/75320; o que indica uma glock iopen
que se relaciona ao inode 75320. No caso das glocos inode e iopen
, o número da glock é sempre idêntico ao número do bloco de disco do inode.
Os números de glock (n: campo) no arquivo de glocks debugfs estão em hexadecimal, enquanto que a saída dos tracepoints os lista em decimal. Isto por razões históricas; os números de glock sempre foram escritos em hexadecimal, mas o decimal foi escolhido para os tracepoints de modo que os números pudessem ser facilmente comparados com os outros tracepoints de saída (de blktrace
por exemplo) e com a saída de stat
(1).
A listagem completa de todas as bandeiras, tanto para o titular como para a glande, encontra-se em Tabela 8.4, “Bandeiras Glock” e Tabela 8.5, “Bandeiras porta-bandeiras Glock”. O conteúdo dos blocos de valores de bloqueio não está atualmente disponível através da interface da glock debugfs
.
Tabela 8.3, “Tipos de Glock” mostra os significados dos diferentes 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 | bando |
|
8 | quota | Operações de cotas |
9 | revista | Jornal mutex |
Uma das bandeiras glock mais importantes é a bandeira l (bloqueada). Esta é a bit lock que é usada para arbitrar o acesso ao estado de glock quando uma mudança de estado deve ser realizada. Ela é definida quando a máquina de estado está prestes a enviar um pedido de bloqueio remoto através do DLM, e só é liberada quando a operação completa tiver sido realizada. Às vezes isto pode significar que mais de uma solicitação de bloqueio terá sido enviada, com várias invalidações ocorrendo entre as vezes.
Tabela 8.4, “Bandeiras Glock” mostra os significados das diferentes bandeiras de glock.
Bandeira | Nome | Significado |
---|---|---|
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. |
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 |
Quando uma chamada remota é recebida de um nó que deseja obter uma fechadura em um modo que entre em conflito com o que está sendo mantido no nó local, então uma ou outra das duas bandeiras D (demote) ou d (demote pending) é definida. A fim de evitar condições de fome quando há contendas em uma determinada eclusa, a cada eclusa é atribuído um tempo mínimo de retenção. Um nó que ainda não teve a eclusa pelo tempo mínimo de retenção é autorizado a reter essa eclusa até que o intervalo de tempo tenha expirado.
Se o intervalo de tempo tiver expirado, então a bandeira D (demotada) será colocada e o estado requerido será registrado. Nesse caso, na próxima vez que não houver fechaduras concedidas na fila de titulares, a fechadura será rebaixada. Se o intervalo de tempo não tiver expirado, então a bandeira d (demote pendente) será colocada no lugar dela. Isto também programa a máquina de estado para liberar a d (demote pendente) e definir a D (demote) quando o tempo mínimo de espera tiver expirado.
A bandeira I (inicial) é colocada quando a glock tiver sido atribuída a uma fechadura DLM. Isto acontece quando a glock é usada pela primeira vez e a bandeira I permanecerá então definida até que a glock seja finalmente liberada (a qual a trava DLM é desbloqueada).