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.

Note

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.

Tableau 9.3. Types de Glock
Numéro de typeType de serrureUtilisation

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

flock(2) syscall

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.

Tableau 9.4. Drapeaux Glock
DrapeauNomSignification

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é).

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.