1.4.2. Réglage de la performance GFS2 par le Lump Dock GFS2

Si la performance de votre cluster souffre de la mauvaise utilisation de la mise en cache GFS2, vous observerez sans doute des temps d'attente I/O augmenter. Vous pouvez utiliser les informations de vidage de verrou (lock dump) de GFS2 pour trouver quelle est la cause du problème.
On peut trouver l'information de vidage de verrou (lock dump) dans le fichier debugfs situé sur le chemin d'accès suivant, en assumant que debugfs soit monté sur /sys/kernel/debug/:
/sys/kernel/debug/gfs2/fsname/glocks
Le contenu de ce fichier se présente sous une série de lignes. Chaque ligne qui commence par G: représente un glock, et les lignes suivantes, en retrait d'un espace unique, représentent un élément d'information concernant le glock qui se trouve sous leurs yeux dans le fichier.
La meilleure façon d'utiliser le fichier debugfs est d'utiliser la commande cat pour en extraire une copie de tout le fichier (cela peut prendre un moment si vous possédez beaucoup de RAM et d'inodes mises en cache) quand l'application rencontre des problèmes, et regarder les résultats un peu plus tard.

Note

Il peut être utile de faire deux copies du fichier debugfs, quelques secondes, voire une minute ou deux l'une de l'autre. En comparant les informations des deux demandes de traçage se rapportant au même numéro de glock, vous saurez si la charge de travail progresse (c'est à dire qu'elle est juste ralentie) ou si elle a été bloquée (ce qui correspondrait toujours à un bogue et devrait être signalé au support Red Hat immédiatement).
Les lignes du fichier debugfs qui commencent par H: (holders) représentent des demandes de verrouillage accordées, ou en attente d'être accordée. Le champ indicateur des détenteurs (holders) ligne f: montre quel : drapeau « W » fait référence à une attente de demande, le drapeau « H » fait référence à une demande accordée. Les glocks qui ontun grand nombre de demandes d'attente sont sans doute ceux qui ont un problème de contentieux particulier.
Tableau 1.2, « Indicateurs glock » explique ce que signifient les différents indicateurs glock et Tableau 1.3, « Marqueurs de détenteurs de glock » explique ce qui signifient les différents indicateurs de marqueurs glock.

Tableau 1.2. Indicateurs glock

Marqueur Nom Signification
d Abaissement de niveau en attente Une requête (distante) abaissée d'un niveau différée
D Régression Requête de régression (locale ou distante)
f Log flush Le journal doit être validé avant de produire ce glock
F Frozen (gelé) Les réponses en provenance de nœuds distants sont ignorées - recouvrement en progrès
i Invalidation en cours En cours d'invalidation des pages sous ce glock
I Initial Activé quand le verrou DLM est associé à ce glock
l Verrouillé Le glock est en cours de changer d'état
p Régression en progrès Le glock est entrain de répondre à la demande de régression
r Réponse en attente Réponse reçue d'un nœud distant en attente de traitement
y Dirty Les données ont besoin d'être vidées dans le disque avant de libérer ce glock

Tableau 1.3. Marqueurs de détenteurs de glock

Marqueur Nom Signification
a Async N'attendez pas le résultat glock (cherchera le résultat plus tard)
A Any Tout mode de verrouillage compatible est acceptable
c No cache Si déverrouillé, abaisser d'un niveau le verrou DLM immédiatement
e Pas d'expiration Ignore les requêtes d'annulation de verrous à venir
E exact Doit posséder un mode de verrouillage exact
F First Défini quand le détenteur est le premier à obtenir ce verrou
H Holder (détenteur) Indique que le verrou demandé a été octroyé
p Priorité Mettez le détenteur (holder) en début de file d'attente
t Try Un verrou "try"
T Try 1CB Un verrou "lock" qui envoie un rappel
W Wait Définir en attendant qu'une requête soit complétée
Si vous identifiez un glock qui pose problème, l'étape suivante consiste à trouver à quel inode il se rapporte. Le numéro de glock (n: sur la ligne G: ) l'indique. Vous le trouverez sous la forme type/numéro et si type correspond à 2, alors le numéro est un numéro d'inode. Pour retrouver l'inode, vous pourrez exécuter find -inum nombre avec le nombre correspondant au numéro d'inode converti du format hexadécimal du fichier de glocks en décimale.

Note

Si vous exécutez la commande find sur un système de fichiers quand il expérimente des problèmes de conflit de verrouillage, vous risquez d'aggraver le problème. Il serait judicieux de stopper l'application avant d'exécuter la commande find quand vous cherchez des inodes en conflit.
Tableau 1.4, « Types de glock » indique ce que signifient les différents types de glock.

Tableau 1.4. Types de glock

Nombre de types Type de verrou Utilisation
1 Trans Verrou de transaction
2 Inode données et métadonnées d'inode
3 Rgrp Métadonnées de groupe de ressources
4 Meta Superblock
5 Iopen Dernière détection de l'inode (et la plus proche)
6 Flock flock(2) syscall
8 Quota Opérations de quota
9 Journal Journal mutex
Si le glock qui a été identifié était d'un type différent, il est sans doute de type 3: (groupe de ressources). Si vous voyez un nombre significatif deprocessus en attente pour d'autres types de glock sous charge normale, alors veuillez le rapporter au Support Red Hat.
Si vous voyez un certain nombre de demandes d'attente en file d'attente sur un verrou de groupe ressources, il peut y avoir un certain nombre de raisons pour cela. L'une d'entre elles, c'est qu'il y a un grandnombre de nœuds par rapport au nombre de groupes de ressources dans le fichiersystème. Une autre raison, c'est que le système de fichiers peut être presque complet (nécessitant,en moyenne, des recherches plus longues pour trouver des blocs libres). La situation, dans les deux cas,peut être améliorée en ajoutant plus de stockage et en utilisant la commande gfs2_grow pour étendre le système de fichier.