C.6. Glock-Tracepoints
Die Tracepoints wurden auch konzipiert, um die Richtigkeit der Cache-Steuerung zu bestätigen, indem sie mit der blktrace-Ausgabe und mit der Kenntnis des Layouts der Festplatte kombiniert werden. Es ist dann möglich zu überprüfen, dass eine bestimmte I/O unter der richtigen Sperre ausgegeben und abgeschlossen wurde und dass keine Race-Bedingungen vorliegen.
Von allen Tracepoints ist es am wichtigsten, den Tracepoint
gfs2_glock_state_change
zu verstehen. Er verfolgt jede Statusänderung des Glocks von der ursprünglichen Erstellung bis hin zur endgültigen Herabstufung, die mit gfs2_glock_put
und dem endgültigen Übergang von NL auf entsperrt endet. Das Glock-Flag l (locked) ist immer gesetzt, bevor eine Statusänderung erfolgt, und wird erst gelöscht, nachdem diese abgeschlossen ist. Während einer Statusänderung gibt es niemals gewährte Halter (das Glock-Halter-Flag H). Wenn es Halter in der Warteschlange gibt, werden sie immer im W (waiting) Status sein. Wenn die Statusänderung abgeschlossen ist, dann können die Halter gewährt werden, welches die letzte Operation ist, bevor das l-Glock-Flag gelöscht wird.
Der Tracepoint
gfs2_demote_rq
verfolgt Herabstufungsanfragen, sowohl lokal als auch remote. Vorausgesetzt, auf dem Knoten ist genügend Speicher vorhanden, dann treten die lokalen Herabstufungsanfragen nur selten auf. Meistens werden sie vom umount-Prozess oder durch gelegentliche Speicherrückforderungen erstellt. Die Anzahl der Remote-Herabstufungsanfragen ist ein Maß für den Konflikt zwischen den Knoten für eine bestimmte Inode- oder Ressourcengruppe.
Wenn einem Halter eine Sperre erteilt wird, wird
gfs2_promote
aufgerufen. Dies geschieht in der Endphase einer Statusänderung oder wenn eine Sperre angefordert wird, die sofort gewährt werden kann, da der Glock-Status bereits eine Sperre mit einem geeigneten Modus im Cache vorhält. Falls der Halter der erste ist, der auf diesem Glock gewährt wird, dann wird das f (first) Flag auf diesem Halter gesetzt. Dies wird derzeit nur von Ressourcengruppen verwendet.