C.4. Die Glock-debugfs-Schnittstelle


Die glock-debugfs-Schnittstelle ermöglicht die Visualisierung des internen Status der Glocks und der Halter; sie enthält in einigen Fällen auch einige zusammenfassende Daten über die Objekte, die gesperrt sind. Jede Zeile der Datei beginnt entweder mit G: ohne Einrückung und bezieht sich auf das Glock selbst, oder aber mit einem anderen Buchstaben, um ein Leerzeichen eingerückt, und bezieht sich auf die Strukturen, die mit dem Glock in der Datei unmittelbar darüber verknüpft sind (H: ist ein Halter, I: ein Inode und R: eine Ressourcengruppe). Nachfolgend sehen Sie ein Beispiel dafür, wie der Inhalt dieser Datei aussehen könnte:
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]
Das obige Beispiel zeigt eine Reihe von Auszügen (aus einer etwa 18 MB Datei), die durch den Befehl cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock in einem Durchlauf der Postmark Benchmark auf einem Ein-Knoten-GFS2-Dateisystem erstellt wurden. Die Glocks in der Abbildung wurden ausgewählt, um einige der interessantesten Merkmale der Glock-Dumps zu zeigen.
Der Glock-Status ist entweder EX (exklusiv), DF (zurückgestellt), SH (gemeinsam verwendet) oder UN (nicht gesperrt). Diese Status entsprechen direkt den DLM-Sperrmodi mit Ausnahme von UN, was entweder den DLM-Null-Sperrstatus darstellen kann oder dass GFS2 nicht im Besitz einer DLM-Sperre ist (abhängig von dem I-Flag, wie oben erläutert). Das s: Feld des Glocks zeigt den aktuellen Status der Sperre an; das gleiche Feld im Halter zeigt den angeforderten Modus an. Wenn die Sperre gewährt ist, ist beim Halter das H-Bit in den Flags (f: Feld) gesetzt, andernfalls ist das W-Bit (warten) gesetzt.
Das n: Feld (eine Zahl) gibt die Nummer an, die jedem Element zugeordnet ist. Für Glocks ist das die Typnummer gefolgt von der Glock-Nummer, sodass im obigen Beispiel das erste Glock n:5/75320 ist, das heißt, ein iopen-Glock, das den Inode 75320 betrifft. Im Fall von Inode und iopen-Glocks entspricht die Glock-Nummer immer der Festplatten-Blocknummer des Inodes.

Anmerkung

Die Glock-Nummern (n: Feld) in der debugfs-Glocks-Datei sind in Hexadezimalwerten angegeben, während die Tracepoints-Ausgabe sie in Dezimalwerten aufführt. Dies hat historische Gründe; Glock-Nummern wurden schon immer in Hexadezimalwerten angegeben, aber für die Tracepoints wurden Dezimalwerte gewählt, sodass die Nummern leicht mit anderen Tracepoint-Ausgaben (zum Beispiel von blktrace) und mit der Ausgabe von stat(1) verglichen werden können.
Eine vollständige Liste aller Flags sowohl für den Halter als auch den Glock sehen Sie in Tabelle C.4, »Glock-Flags« und Tabelle C.5, »Glock-Halter-Flags«. Der Inhalt der Sperrwertblöcke steht derzeit nicht über die Glock-debugfs-Schnittstelle zur Verfügung.
Tabelle C.3, »Glock-Typen« zeigt die Bedeutung der verschiedenen Glock-Typen.
Tabelle C.3. Glock-Typen
TypnummerSperrtypVerwendung
1transTransaktionssperre
2InodeInode-Metadaten und -Daten
3rgrpRessourcengruppen-Metadaten
4metaDer Superblock
5iopenFeststellung der letzten Schließers des Inodes
6flockflock(2)-Systemaufruf
8quotaKontingentoperationen
9journalJournal-Mutex
Einer der wichtigsten Glock-Flags ist das l-Flag (gesperrt). Dies ist die Bit-Sperre, mit der der Zugriff auf den Glock-Status vermittelt wird, wenn ein Statuswechsel durchgeführt werden soll. Es wird gesetzt, wenn die State Machine eine externe Sperranforderung über den DLM zu senden bereit ist, und wird erst gelöscht, wenn der komplette Vorgang abgeschlossen wurde. Manchmal kann dies dazu führen, dass mehr als eine Sperranforderung gesendet wurde mit verschiedenen Invalidierungen dazwischen.
Tabelle C.4, »Glock-Flags« zeigt die Bedeutung der verschiedenen Glock-Flags.
Tabelle C.4. Glock-Flags
FlagNameBedeutung
dPending demoteEine wartende Anfrage zum Herabstufen (remote)
DDemoteEine Anfrage zum Herabstufen (lokal oder remote)
fLog flushDas Protokoll muss festgeschrieben werden, bevor dieses Glock freigegeben werden kann
FFrozenAntworten von Remote-Knoten werden ignoriert, eine Wiederherstellung läuft.
iInvalidate in progressSeiten unter diesem Glock werden derzeit ungültig gemacht (invalidiert)
IInitialGesetzt, wenn eine DLM-Sperre mit diesem Glock verknüpft ist
lLockedDas Glock ändert derzeit seinen Status
LLRUGesetzt, wenn das Glock auf der LRU-Liste ist
oObjectGesetzt, wenn das Glock einem Objekt zugeordnet ist (d. h. einem Inode für Typ-2-Glocks und einer Ressourcengruppe für Typ-3-Glocks)
pDemote in progressDas Glock antwortet derzeit auf eine Anfrage zum Herabstufen
qQueuedGesetzt, wenn ein Halter der Warteschlange eines Glocks hinzugefügt wird, und gelöscht, wenn das Glock noch gehalten wird, es jedoch keine verbleibenden Halter gibt. Verwendet als Teil des Algorithmus, der die minimale Haltezeit für ein Glock berechnet.
rReply pendingVon Remote-Knoten erhaltene Antwort wartet auf Verarbeitung
yDirtyDaten müssen auf die Festplatte überschrieben werden, bevor dieses Glock freigegeben werden kann
Wenn ein Remote-Callback von einem Knoten empfangen wird, der eine Sperre in einem Modus erhalten will, der mit dem Modus des lokalen Knoten kollidiert, dann wird entweder das Flag D (demote) oder d (demote pending) gesetzt. Um bei diesen Konflikten um eine Sperre das „Verhungern“ (engl.: starvation) zu verhindern, wird jeder Sperre eine Mindesthaltezeit zugewiesen. Ein Knoten, der die Sperre noch nicht für die Mindesthaltezeit gehalten hat, darf diese Sperre behalten, bis diese Zeitspanne abgelaufen ist.
Wenn die Zeit abgelaufen ist, wird das D (demote) Flag gesetzt und der benötigte Status wird aufgezeichnet. In diesem Fall wird, wenn es das nächste Mal keine erteilten Sperren in der Halter-Warteschlange gibt, die Sperre herabgestuft werden. Wenn das Zeitintervall noch nicht abgelaufen ist, dann wird stattdessen das d (demote pending) Flag gesetzt. Dies weist auch die State Machine dazu an, das Flag d (demote pending) zu löschen und stattdessen D (demote) zu setzen, sobald die Mindesthaltezeit abgelaufen ist.
Das I (initial) Flag wird gesetzt, wenn dem Glock eine DLM-Sperre zugewiesen wurde. Dies geschieht, wenn das Glock zum ersten Mal verwendet wird; das I Flag bleibt anschließend gesetzt, bis das Glock schließlich freigegeben wird (was die DLM-Sperre aufhebt).
Red Hat logoGithubRedditYoutubeTwitter

Lernen

Testen, kaufen und verkaufen

Communitys

Über Red Hat Dokumentation

Wir helfen Red Hat Benutzern, mit unseren Produkten und Diensten innovativ zu sein und ihre Ziele zu erreichen – mit Inhalten, denen sie vertrauen können.

Mehr Inklusion in Open Source

Red Hat hat sich verpflichtet, problematische Sprache in unserem Code, unserer Dokumentation und unseren Web-Eigenschaften zu ersetzen. Weitere Einzelheiten finden Sie in Red Hat Blog.

Über Red Hat

Wir liefern gehärtete Lösungen, die es Unternehmen leichter machen, plattform- und umgebungsübergreifend zu arbeiten, vom zentralen Rechenzentrum bis zum Netzwerkrand.

© 2024 Red Hat, Inc.