9.4. L'interface debugfs de glock
L'interface glock debugfs
permet de visualiser l'état interne des glocks et des détenteurs et comprend également des détails sommaires sur les objets verrouillés dans certains cas. Chaque ligne du fichier commence soit par G : sans indentation (ce qui fait référence au glock lui-même), soit par une lettre différente, indentée d'un seul espace, et faisant référence aux structures associées au glock immédiatement au-dessus d'elle dans le fichier (H : est un support, I : un inode, et R : un groupe de ressources). Voici un exemple de ce que pourrait être le contenu de ce fichier :
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]
L'exemple ci-dessus est une série d'extraits (d'un fichier d'environ 18 Mo) générés par la commande cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock
lors de l'exécution du test de référence postmark sur un système de fichiers GFS2 à nœud unique. Les glocks de la figure ont été sélectionnés afin de montrer certaines des caractéristiques les plus intéressantes des dumps de glocks.
Les états de verrouillage sont EX (exclusif), DF (différé), SH (partagé) ou UN (déverrouillé). Ces états correspondent directement aux modes de verrouillage DLM, à l'exception de UN qui peut représenter soit l'état de verrouillage DLM nul, soit le fait que GFS2 ne détient pas de verrouillage DLM (en fonction de l'indicateur I, comme expliqué ci-dessus). Le champ s : du glock indique l'état actuel du verrou et le même champ dans le holder indique le mode demandé. Si le verrou est accordé, le détenteur aura le bit H activé dans ses drapeaux (champ f :). Dans le cas contraire, le bit d'attente W est activé.
Le champ n : (numéro) indique le numéro associé à chaque élément. Pour les glocks, il s'agit du numéro de type suivi du numéro de glock. Ainsi, dans l'exemple ci-dessus, le premier glock est n:5/75320, ce qui indique un glock iopen
lié à l'inode 75320. Dans le cas des glocks d'inodes et de iopen
, le numéro de glock est toujours identique au numéro de bloc de disque de l'inode.
Les numéros de glock (champ n :) dans le fichier debugfs glocks sont en hexadécimal, alors que la sortie tracepoints les indique en décimal. C'est pour des raisons historiques ; les numéros de glock ont toujours été écrits en hexadécimal, mais la décimale a été choisie pour les tracepoints afin que les numéros puissent être facilement comparés avec les autres sorties de tracepoints (de blktrace
par exemple) et avec la sortie de stat
(1).
La liste complète de tous les drapeaux, tant pour le détenteur que pour le glock, figure dans le tableau "Glock Flags", ci-dessous, et dans le tableau "Glock Holder Flags", dans la rubrique "Glock holders" ( détenteurs de glock). Le contenu des blocs de valeurs de verrouillage n'est actuellement pas disponible via l'interface glock debugfs
.
Le tableau suivant indique la signification des différents types de glock.
Numéro de type | Type de serrure | Utilisation |
---|---|---|
1 | trans | Verrouillage des transactions |
2 | inode | Métadonnées et données des inodes |
3 | rgrp | Métadonnées du groupe de ressources |
4 | méta | Le superbloc |
5 | iopen | Dernière détection rapprochée de l'inode |
6 | troupeau |
|
8 | quota | Opérations de quotas |
9 | journal | Journal mutex |
L'un des drapeaux les plus importants de glock est le drapeau l (locked). Il s'agit du bit de verrouillage utilisé pour arbitrer l'accès à l'état glock lorsqu'un changement d'état doit être effectué. Il est activé lorsque la machine d'état est sur le point d'envoyer une demande de verrouillage à distance via le DLM, et n'est désactivé que lorsque l'opération complète a été effectuée. Parfois, cela peut signifier que plus d'une demande de verrouillage a été envoyée, avec diverses invalidations se produisant entre-temps.
Le tableau suivant indique la signification des différents drapeaux du glock.
Drapeau | Nom | Signification |
---|---|---|
d | Rétrogradation en cours | Une demande de rétrogradation différée (à distance) |
D | Rétrograder | Une demande de rétrogradation (locale ou à distance) |
f | Rinçage des grumes | Le journal doit être engagé avant de sortir ce glock |
F | Congelé | Les réponses des nœuds distants sont ignorées - la récupération est en cours. |
i | Invalidation en cours | En cours d'invalidation des pages sous ce glock |
I | Initiale | Fixé lorsque la serrure DLM est associée à ce glock |
l | Verrouillé | Le glock est en train de changer d'état |
L | LRU | Défini lorsque le glock est sur la liste LRU` |
o | Objet | Défini lorsque le glock est associé à un objet (c'est-à-dire un inode pour les glocks de type 2 et un groupe de ressources pour les glocks de type 3) |
p | Rétrogradation en cours | Le glock est en train de répondre à une demande de rétrogradation |
q | En attente | Défini lorsqu'un détenteur est mis en file d'attente pour un glock, et effacé lorsque le glock est tenu, mais qu'il n'y a plus de détenteurs restants. Utilisé dans le cadre de l'algorithme qui calcule le temps de maintien minimum d'un glock. |
r | Réponse en attente | La réponse reçue du nœud distant est en attente de traitement |
y | Sale | Les données doivent être transférées sur le disque avant la mise en circulation de ce glock |
Lorsqu'un rappel à distance est reçu d'un nœud qui souhaite obtenir un verrou dans un mode qui entre en conflit avec celui détenu par le nœud local, l'un ou l'autre des deux drapeaux D (demote) ou d (demote pending) est activé. Afin d'éviter les situations de famine lorsqu'il y a de la contention sur un verrou particulier, chaque verrou se voit attribuer un temps de maintien minimum. Un nœud qui n'a pas encore eu le verrou pendant le temps de maintien minimum est autorisé à conserver ce verrou jusqu'à ce que l'intervalle de temps ait expiré.
Si l'intervalle de temps a expiré, l'indicateur D (demote) est activé et l'état requis est enregistré. Dans ce cas, la prochaine fois qu'il n'y aura pas de verrou accordé dans la file d'attente des détenteurs, le verrou sera rétrogradé. Si l'intervalle de temps n'a pas expiré, l'indicateur d (demote pending) est activé à la place. Cela permet également de programmer la machine à états pour effacer d (demote pending) et définir D (demote) lorsque le temps d'attente minimum a expiré.
L'indicateur I (initial) est activé lorsque le verrou DLM a été attribué au glock. Cela se produit lorsque le glock est utilisé pour la première fois et l'indicateur I reste activé jusqu'à ce que le glock soit finalement libéré (c'est-à-dire que le verrou DLM soit déverrouillé).