6.5. Resolución de problemas de rendimiento de GFS2 con el volcado de bloqueos de GFS2
Si el rendimiento de su clúster se ve afectado por el uso ineficiente de la caché de GFS2, es posible que vea tiempos de espera de E/S grandes y crecientes. Puede hacer uso de la información de volcado de bloqueos de GFS2 para determinar la causa del problema.
Esta sección proporciona una visión general del volcado de bloqueos de GFS2.
La información de volcado de bloqueos de GFS2 puede obtenerse del archivo debugfs que puede encontrarse en el siguiente nombre de ruta, asumiendo que debugfs está montado en /sys/kernel/debug/:
/sys/kernel/debug/gfs2/fsname/glocks
El contenido del archivo es una serie de líneas. Cada línea que comienza con G: representa un glock, y las líneas siguientes, sangradas por un solo espacio, representan un elemento de información relacionado con el glock inmediatamente anterior en el archivo.
La mejor manera de utilizar el archivo debugfs es usar el comando cat para tomar una copia del contenido completo del archivo (puede tomar mucho tiempo si tiene una gran cantidad de RAM y muchos inodos en caché) mientras la aplicación está experimentando problemas, y luego mirar los datos resultantes en una fecha posterior.
Puede ser útil hacer dos copias del archivo debugfs, una unos segundos o incluso uno o dos minutos después de la otra. Comparando la información del soporte en las dos trazas relacionadas con el mismo número de glock, se puede saber si la carga de trabajo está progresando (sólo es lenta) o si se ha quedado atascada (lo que siempre es un error y debe ser reportado al soporte de Red Hat inmediatamente).
Las líneas del archivo debugfs que comienzan con H: (holders) representan solicitudes de bloqueo concedidas o en espera de ser concedidas. El campo de banderas en la línea de titulares f: muestra cuál: La bandera 'W' se refiere a una solicitud en espera, la bandera 'H' se refiere a una solicitud concedida. Los glocks que tienen un gran número de solicitudes en espera son probablemente los que están experimentando una contención particular.
Tabla 6.1, “Banderas Glock” muestra los significados de las diferentes banderas de las glock y Tabla 6.2, “Banderas de soporte de Glock” muestra los significados de las diferentes banderas de los soportes de las glock.
| Bandera | Nombre | Significado |
|---|---|---|
| b | Bloqueo | Válido cuando la bandera de bloqueo está activada, e indica que la operación que se ha solicitado al DLM puede bloquearse. Esta bandera se borra para las operaciones de descenso y para los bloqueos "try". El propósito de esta bandera es permitir la recopilación de estadísticas del tiempo de respuesta del DLM independientemente del tiempo que tomen otros nodos para degradar los bloqueos. |
| d | Pendiente de degradación | Una solicitud de baja aplazada (remota) |
| D | Desplazar a | Una solicitud de baja (local o remota) |
| f | Descarga de troncos | El registro necesita ser comprometido antes de liberar esta glock |
| F | Congelado | Las respuestas de los nodos remotos se ignoran - la recuperación está en curso. Esta bandera no está relacionada con la congelación del sistema de archivos, que utiliza un mecanismo diferente, sino que se utiliza sólo en la recuperación. |
| i | Invalidación en curso | En el proceso de invalidación de páginas bajo este glock |
| I | Inicialmente | Se establece cuando el bloqueo DLM está asociado a esta glock |
| l | Bloqueado | La glock está en proceso de cambio de estado |
| L | LRU | Se establece cuando la glock está en la lista LRU |
| o | Objeto | Se establece cuando el glock está asociado a un objeto (es decir, un inodo para los glocks de tipo 2, y un grupo de recursos para los glocks de tipo 3) |
| p | Descenso de categoría en curso | El glock está en proceso de responder a una solicitud de degradación |
| q | En cola | Se establece cuando un portador está en la cola de una glock, y se borra cuando la glock está retenida, pero no hay portadores restantes. Se utiliza como parte del algoritmo que calcula el tiempo mínimo de retención de una cerradura. |
| r | Respuesta pendiente | La respuesta recibida del nodo remoto está a la espera de ser procesada |
| y | Dirty | Los datos necesitan ser lavados en el disco antes de liberar este glock |
| Bandera | Nombre | Significado |
|---|---|---|
| a | Async | No espere el resultado de glock (hará una encuesta para el resultado más tarde) |
| A | Cualquier | Se acepta cualquier modo de bloqueo compatible |
| c | No hay caché | Cuando se desbloquea, baja el bloqueo DLM inmediatamente |
| e | No caduca | Ignorar las solicitudes de cancelación de bloqueo posteriores |
| E | exactamente | Debe tener el modo de bloqueo exacto |
| F | Primero | Se establece cuando el titular es el primero en ser concedido para esta cerradura |
| H | Titular | Indica que se ha concedido el bloqueo solicitado |
| p | Prioridad | Colocar al titular de la cola en la cabeza de la cola |
| t | Prueba con | Una cerradura "try" |
| T | Prueba 1CB | Un bloqueo "try" que envía un callback |
| W | Espera | Se establece mientras se espera a que se complete la solicitud |
Una vez identificado un glock que está causando un problema, el siguiente paso es averiguar a qué inodo se refiere. El número de glock (n: en la línea G:) lo indica. Es de la forma type/number y si type es 2, entonces el glock es un glock de inodo y number es un número de inodo. Para localizar el inodo, puede ejecutar find -inum number donde number es el número de inodo convertido del formato hexadecimal del archivo glocks a decimal.
Si ejecuta el comando find en un sistema de archivos cuando está experimentando contención de bloqueos, es probable que empeore el problema. Es una buena idea detener la aplicación antes de ejecutar el comando find cuando se buscan inodos en contención.
Tabla 6.3, “Tipos de Glock” muestra los significados de los diferentes tipos de glock.
| Tipo de número | Tipo de cerradura | Utilice |
|---|---|---|
| 1 | Trans | Bloqueo de la transacción |
| 2 | Inodo | Metadatos y datos del inodo |
| 3 | Rgrp | Metadatos del grupo de recursos |
| 4 | Meta | El superbloque |
| 5 | Abrir | Detección del último inodo más cercano |
| 6 | Flock |
|
| 8 | Cuota | Operaciones de contingencia |
| 9 | Diario | Diario mutex |
Si el glock que se identificó era de un tipo diferente, lo más probable es que sea del tipo 3: (grupo de recursos). Si ve un número significativo de procesos esperando por otros tipos de glock bajo cargas normales, infórmelo al soporte de Red Hat.
Si ves un número de solicitudes en espera en el bloqueo de un grupo de recursos, puede haber varias razones para ello. Una de ellas es que haya un gran número de nodos en comparación con el número de grupos de recursos en el sistema de archivos. Otra es que el sistema de archivos puede estar casi lleno (lo que requiere, por término medio, más tiempo de búsqueda de bloques libres). La situación en ambos casos puede mejorarse añadiendo más almacenamiento y utilizando el comando gfs2_grow para ampliar el sistema de archivos.