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
/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.
| 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 |
| 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.
| 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.