Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
2.9.3. Suche und Bereinigung von Problemen bei der GFS2-Leistung mit GFS2 Lock Dump
Falls die Leistung Ihres Clusters unter ineffizienter Nutzung des GFS2-Cachings leidet, bemerken Sie möglicherweise zunehmend große I/O-Wartezeiten. Sie können die Informationen des GFS2 Lock Dump nutzen, um der Ursache des Problems auf den Grund zu gehen.
Dieser Abschnitt enthält einen Überblick über den GFS2 Lock Dump. Eine vollständige Beschreibung des GFS2 Lock Dumps finden Sie in Anhang C, GFS2-Tracepoints und die debugfs-Glocks-Datei.
Die Informationen des GFS2 Lock Dumps können aus der
debugfs
-Datei entnommen werden, die sich im folgenden Pfad befindet, sofern debugfs
unter /sys/kernel/debug/
eingehängt ist:
/sys/kernel/debug/gfs2/fsname/glocks
Die Datei enthält eine Reihe von Zeilen. Jede Zeile, die mit einem G: beginnt, steht für einen Glock und die folgenden Zeilen – um ein Leerzeichen eingerückt – stehen für eine Information, die sich auf das in der Datei darüberstehende Glock bezieht.
Erstellen Sie am besten mithilfe des
cat
-Befehls eine Kopie des gesamten Inhalts der debugfs
-Datei (dies kann eine längere Zeit dauern, falls Sie eine große Menge RAM und zahlreiche gecachte Inodes haben), während bei der Applikation Probleme auftreten, und schauen Sie sich die so erstellten Daten zu einem späteren Zeitpunkt an.
Anmerkung
Es kann hilfreich sein, zwei Kopien der
debugfs
-Datei zu erstellen, im Abstand von ein paar Sekunden oder ein bis zwei Minuten. Vergleichen Sie in den zwei Kopien nun die Halterinformationen derselben Glock-Nummer. Anhand dessen sollten Sie feststellen können, ob die Verarbeitung Fortschritte macht (also nur langsam ist) oder ob sie hängen geblieben ist (was immer auf einen Fehler hindeutet und umgehend dem Red Hat Support gemeldet werden sollte).
Jede Zeile in der
debugfs
-Datei, die mit H: (Halter) beginnt, steht für eine Sperranfrage, die entweder bereits gewährt wurde oder darauf wartet, gewährt zu werden. Das Flags-Feld auf der Halterzeile f: zeigt an, was von beidem der Fall ist: Das „W“-Flag kennzeichnet eine wartende Anfrage, das „H“-Flag kennzeichnet eine gewährte Anfrage. Diejenigen Glocks mit einer hohen Anzahl wartender Anfragen sind wahrscheinlich diejenigen mit Konflikten.
Tabelle 2.1, »Glock-Flags« zeigt die Bedeutungen der verschiedenen Glock-Flags und Tabelle 2.2, »Glock-Halter-Flags« zeigt die Bedeutungen der verschiedenen Glock-Halter-Flags in der Reihenfolge, in der Sie in den Glock-Dumps auftreten.
Tabelle 2.1. Glock-Flags
Flag | Name | Bedeutung |
---|---|---|
b | Blocking | Gültig, wenn das „locked“-Flag gesetzt ist. Zeigt an, dass die Operation, die vom DLM angefordert wurde, sperren könnte. Dieses Flag wird für „demote“-Operationen und für „try“-Sperren entfernt. Der Zweck dieses Flags ist es, das Sammeln von Statistiken über die DLM-Antwortzeiten zu ermöglichen, unabhängig von der Zeit, die andere Knoten zum Herabstufen von Sperren benötigen. |
d | Pending demote | Eine wartende Anfrage zum Herabstufen (remote) |
D | Demote | Eine Anfrage zum Herabstufen (lokal oder remote) |
f | Log flush | Das Protokoll muss festgeschrieben werden, bevor dieses Glock freigegeben werden kann |
F | Frozen | Antworten von Remote-Knoten werden ignoriert, eine Wiederherstellung läuft. Dieses Flag hat nichts mit dem Dateisystem-Freeze zu tun, das einen anderen Mechanismus verwendet, sondern wird nur zur Wiederherstellung verwendet. |
i | Invalidate in progress | Seiten unter diesem Glock werden derzeit ungültig gemacht (invalidiert) |
I | Initial | Gesetzt, wenn eine DLM-Sperre mit diesem Glock verknüpft ist |
l | Locked | Das Glock ändert derzeit seinen Status |
L | LRU | Gesetzt, wenn das Glock auf der LRU-Liste ist |
o | Object | Gesetzt, wenn das Glock einem Objekt zugeordnet ist (d. h. einem Inode für Typ-2-Glocks und einer Ressourcengruppe für Typ-3-Glocks) |
p | Demote in progress | Das Glock antwortet derzeit auf eine Anfrage zum Herabstufen |
q | Queued | Gesetzt, 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. |
r | Reply pending | Von Remote-Knoten erhaltene Antwort wartet auf Verarbeitung |
y | Dirty | Daten müssen auf die Festplatte überschrieben werden, bevor dieses Glock freigegeben werden kann |
Tabelle 2.2. Glock-Halter-Flags
Flag | Name | Bedeutung |
---|---|---|
a | Async | Nicht auf das Glock-Ergebnis warten (Ergebnis wird später abgerufen) |
A | Any | Jeder kompatible Sperrmodus ist zulässig |
c | No cache | Wenn nicht gesperrt, sofort DLM-Sperre herabstufen |
e | No expire | Nachfolgende Anfragen zur Aufhebung der Sperre ignorieren |
E | exact | Muss den exakten Sperrmodus haben |
F | First | Gesetzt, wenn der Halter der Erste ist, dem diese Sperre gewährt wird |
H | Holder | Zeigt an, dass die angeforderte Sperre gewährt wird |
p | Priority | Reiht Halter an der Spitze der Warteschlange ein |
t | Try | Eine „try“-Sperre |
T | Try 1CB | Eine „try“-Sperre, die einen Callback sendet |
W | Wait | Gesetzt, während auf den Abschluss einer Anfrage gewartet wird |
Nachdem Sie herausgefunden haben, welches Glock das Problem verursacht, müssen Sie nun feststellen, auf welchen Inode es sich bezieht. Dies wird angezeigt durch die Glock-Nummer (n: auf der Zeile G:) im Format type/number. Falls type 2 ist, dann ist das Glock ein Inode-Glock und die number ist eine Inode-Nummer. Um den Inode zu finden, können Sie den Befehl
find -inum number
ausführen, wobei number die Inode-Nummer ist, die aus dem Hexadezimalformat in der Glocks-Datei in ein Dezimalformat konvertiert wurde.
Anmerkung
Falls Sie den
find
-Befehl auf einem Dateisystem durchführen, während dort Sperrkonflikte auftreten, werden Sie wahrscheinlich das Problem dadurch noch verschlimmern. Wenn Sie nach Inode-Konflikten suchen, ist es ratsam, die Applikation vor der Ausführung des find
-Befehls zu stoppen.
Tabelle 2.3, »Glock-Typen« zeigt die Bedeutungen der verschiedenen Glock-Typen.
Tabelle 2.3. Glock-Typen
Typnummer | Sperrtyp | Verwendung |
---|---|---|
1 | Trans | Transaktionssperre |
2 | Inode | Inode-Metadaten und -Daten |
3 | Rgrp | Ressourcengruppen-Metadaten |
4 | Meta | Der Superblock |
5 | Iopen | Feststellung des letzten Schließers des Inodes |
6 | Flock | flock (2)-Systemaufruf |
8 | Quota | Kontingentoperationen |
9 | Journal | Journal-Mutex |
Falls das identifizierte Glock einem anderen Typ angehört, dann am ehesten Typ 3: (Ressourcengruppe). Falls Sie unter normaler Auslastung eine erhebliche Anzahl von Prozessen sehen, die auf andere Glock-Typen warten, dann melden Sie dies bitte dem Red Hat Support.
Falls Sie eine Reihe von Anfragen in der Warteschlange sehen, die auf eine Ressourcengruppensperre warten, könnte dies eine Reihe von Ursachen haben. Zum einen gibt es unter Umständen eine hohe Anzahl von Knoten im Vergleich zur Anzahl von Ressourcengruppen im Dateisystem. Zum anderen könnte das Dateisystem unter Umständen beinahe voll sein (wodurch die Suche nach freien Blöcken durchschnittlich länger braucht). In beiden Fällen kann die Situation verbessert werden, indem mehr Speicher hinzugefügt wird und das Dateisystem mithilfe des Befehls
gfs2_grow
vergrößert wird.