2.9.3. Resolución de problemas de rendimiento de GFS2 con el volcado de cerrojo GFS2
Si su rendimiento de cluster está sufriendo debido a un uso ineficiente de guardado de memoria en cache de GFS2, verá que los tiempos de espera aumentan y se prolongan.
Esta sección ofrece una visión general del vaciado de bloques GFS2. Para obtener una descripción completa del vaciado de bloqueo GFS2, consulte el Apéndice C, Puntos de trazado GFS2 y archivo glocks debugfs.
La información del volcado de cerrojo GFS2 puede obtenerse del archivo
debugfs, el cual se encuentra en el siguiente nombre de ruta, suponiendo que debugfs esta montado en /sys/kernel/debug/:
/sys/kernel/debug/gfs2/fsname/glocks
/sys/kernel/debug/gfs2/fsname/glocks
El contenido del archivo es una serie de líneas. Cada línea que inicia con G: representa un glock, y las siguientes líneas, con un solo espacio, representan un elemento de información que relaciona el glock inmediatamente delante de ellas en el archivo.
La mejor manera de usar el archivo
debugfs es usar el comando cat para tomar una copia del contenido completo del archivo (podría tomarse bastante tiempo si tiene una gran cantidad de RAM y un montón de inodos en memoria) mientras la aplicación está teniendo problemas y luego mirar los datos resultantes en una fecha posterior.
Nota
Puede ser útil hacer dos copias del archivo
debugfs, una, unos segundos o incluso un minuto o dos después de la otra. Al comparar la información del portador en los dos trazados que se relacionan con el mismo número de glock, se sabe si la carga de trabajo está haciendo algún progreso o si se ha trancado (lo cual es siempre un error y debe reportarse inmediatamente al soporte técnico de Red Hat).
Las líneas en el archivo
debugfs que inician con H de 'holders' (portadores), representan solicitudes de cerrojo otorgadas o en espera de ser otorgadas. Los campos de indicadores en la línea de portadores f: muestra Which (cuál) : El indicador 'W' se refiere a la solicitud en espera, el indicador 'H' se refiere a la solicitud otorgada. Es probable que los glocks que tienen una gran cantidad de solicitudes en espera sean los que estén experimentando contención particular.
Tabla 2.1, “Indicadores Glock” shows the meanings of the different glock flags and Tabla 2.2, “Indicadores de portador de Glock” shows the meanings of the different glock holder flags in the order that they appear in the glock dumps.
| Indicador | Nombre | Significado |
|---|---|---|
| por | Bloqueo | Es válido cuando el indicador se establece a bloqueado e indica si la operación que ha sido solicitada desde el DLM puede bloquear. Este indicador es retirado para degradación y para los cerrojos 'try'. El propósito de este indicador es permitir reunir estadísticas de tiempo de respuesta independiente del tiempo tomado por otros nodos para degradar cerrojos. |
| d | Pending demote | Una solicitud para degradar diferida o remota |
| D | Demote | Una solicitud para degradar (local o remota) |
| f | Log flush | El registro necesita ser enviado antes de liberar este Glock |
| F | Frozen | Las respuestas de los nodos remotos se ignoran- la recuperación está en curso. Este indicador no se relaciona con la congelación del sistema de archivos, el cual usa un mecanismo diferente, pero se utiliza únicamente en recuperación. |
| i | Invalidate in progress | En el curso de invalidar páginas en este Glock |
| I | Initial | Establecer cuándo un bloqueo de DLM se asocia con este Glock |
| l | Locked | El Glock está en el proceso de cambio de estado |
| L | LRU | Se establece cuando el glock está en la lista LRU |
| o | Objeto | Se establece cuando el glock se asocia con un objeto (es decir, un inodo para tipo de glocks 2 y grupo de recursos para tipo de glocks3 ) |
| p | Demote in progress | El Glock está en el proceso de responder a una solicitud de degradación |
| s | En cola | Se establece cuando un portador es puesto en cola para un glock y se retira cuando el glock se mantiene pero no quedan portadores remanentes. Se utiliza como parte de el algoritmo que calcula el mínimo de tiempo de retención para un glock. |
| r | Reply pending | La respuesta recibida del nodo remoto está pendiente de procesamiento |
| y | Dirty | Es necesario vaciar los datos al disco antes de lanzar este Glock |
| Indicador | Nombre | Significado |
|---|---|---|
| a | Async | No espera ningún resultado de Glock (emitirá un resultado más adelante) |
| A | Any | Se acepta cualquier modo de bloqueo compatible |
| c | No cache | Cuando se desbloquea, degrada de inmediato el bloque DML |
| e | No expire | Ignora las siguientes solicitudes de cancelación de bloqueo |
| E | exact | Debe tener un modo de bloqueo exacto |
| F | First | Cuando el portador es el primero en concedérsele este cerrojo |
| H | Holder | Indica que se ha otorgado el cerrojo solicitado |
| p | Priority | Pone a Holder a la cabeza de la cola |
| t | Try | Un cerrojo de "ensayo" |
| T | Try 1CB | Un cerrojo de "ensayo" que envía una llamada |
| W | Wait | Establecer mientras espera que la solicitud se complete |
Al haber identificado el glock que está causando problemas, el siguiente paso es averiguar con qué inodo se relaciona. El número de glock (n: en la G: línea) lo indica. Es de la forma tipo/número y si el tipo es 2, entonces el glock es un glock de inodo y el número es un número de inodo. Para rastrear el inodo, puede entonces ejecutar
find -inum número donde número es el número del inodo convertido desde el formato hex en el archivo glocks en decimales.
Nota
Si ejecuta
find en un sistema de archivos cuando experimente una contención de cerrojo, muy probable que el problema empeore. Se recomienda parar la aplicación antes de ejecutar find cuando esté buscando inodos enfrentados.
La Tabla 2.3, “Tipos de glock”muestra los significados de los diferentes tipos de glock.
| Número | Tipo de cerrojo | Uso |
|---|---|---|
| 1 | Trans | Cerrojo de transacción |
| 2 | Inodo | Metadatos y datos de inodos |
| 3 | Rgrp | Metadatos de grupo de recursos |
| 4 | Meta | El superbloque |
| 5 | Iopen | El último nodo que se detectó |
| 6 | Flock | flock(2) syscall |
| 8 | Cuota | Operaciones de cuota |
| 9 | Diario | Diario mutex |
Si el glock que ha sido identificado era de un tipo diferente, entonces es muy probable que sea del tipo 3: (grupo de recursos). Si usted ve una cantidad significativa de procesos que están esperando a otros tipos de glock bajo cargas normales, entonces por favor repórtelo al soporte técnico de Red Hat.
Si ve una cantidad de solicitudes esperando en cola en un cerrojo de grupo de recursos, puede haber varias explicaciones. Una es que hay un gran número de nodos comparados al número de grupo de recursos en el sistema de archivos. Otra es que el sistema de archivos puede estar casi lleno (requiriendo en promedio, búsquedas más prolongadas para bloques libres). La situación en ambos casos puede mejorarse añadiendo más almacenamiento y usando el comando
gfs2_grow para expandir el sistema de archivos.