Red Hat Training

A Red Hat training course is available for RHEL 8

8.4. La interfaz glock debugfs

La interfaz de glock debugfs permite visualizar el estado interno de los glock y los soportes y también incluye algunos detalles resumidos de los objetos que se bloquean en algunos casos. Cada línea del archivo o bien comienza con G: sin sangría (que se refiere al propio glock) o bien comienza con una letra diferente, sangrada con un solo espacio, y se refiere a las estructuras asociadas al glock inmediatamente superior en el archivo (H: es un holder, I: un inodo, y R: un grupo de recursos) . He aquí un ejemplo de cómo podría ser el contenido de este archivo:

G:  s:SH n:5/75320 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:EX n:3/258028 f:yI t:EX d:EX/0 a:3 r:4
 H: s:EX f:tH e:0 p:4466 [postmark] gfs2_inplace_reserve_i+0x177/0x780 [gfs2]
 R: n:258028 f:05 b:22256/22256 i:16800
G:  s:EX n:2/219916 f:yfI t:EX d:EX/0 a:0 r:3
 I: n:75661/219916 t:8 f:0x10 d:0x00000000 s:7522/7522
G:  s:SH n:5/127205 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:EX n:2/50382 f:yfI t:EX d:EX/0 a:0 r:2
G:  s:SH n:5/302519 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:SH n:5/313874 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:SH n:5/271916 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
G:  s:SH n:5/312732 f:I t:SH d:EX/0 a:0 r:3
 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]

El ejemplo anterior es una serie de extractos (de un archivo de aproximadamente 18 MB) generados por el comando cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock durante una ejecución del benchmark postmark en un sistema de archivos GFS2 de un solo nodo. Los glocks de la figura se han seleccionado para mostrar algunas de las características más interesantes de los volcados de glock.

Los estados de glock son EX (exclusivo), DF (diferido), SH (compartido) o UN (desbloqueado). Estos estados se corresponden directamente con los modos de bloqueo DLM, excepto UN, que puede representar el estado de bloqueo DLM nulo, o que GFS2 no mantiene un bloqueo DLM (dependiendo de la bandera I, como se ha explicado anteriormente). El campo s: del glock indica el estado actual del bloqueo y el mismo campo en el holder indica el modo solicitado. Si el bloqueo se concede, el soporte tendrá el bit H activado en sus banderas (campo f:). En caso contrario, tendrá activado el bit de espera W.

El campo n: (número) indica el número asociado a cada elemento. En el caso de los glocks, es el número de tipo seguido del número de glock, de modo que en el ejemplo anterior, el primer glock es n:5/75320; lo que indica un glock iopen que se relaciona con el inodo 75320. En el caso de los glocks de inodo y iopen, el número de glock es siempre idéntico al número de bloque de disco del inodo.

Nota

Los números de glock (campo n:) en el archivo glocks de debugfs están en hexadecimal, mientras que la salida de tracepoints los lista en decimal. Esto es por razones históricas; los números de glock siempre se escribían en hexadecimal, pero se eligió el decimal para los tracepoints para que los números pudieran ser fácilmente comparados con la salida de otros tracepoints (de blktrace por ejemplo) y con la salida de stat(1).

El listado completo de todas las banderas, tanto para el titular como para el glock, se encuentra en Tabla 8.4, “Banderas Glock” y Tabla 8.5, “Banderas de soporte de Glock”. El contenido de los bloques de valores de los candados no está disponible actualmente a través de la interfaz de glock debugfs.

Tabla 8.3, “Tipos de Glock” muestra los significados de los diferentes tipos de glock.

Tabla 8.3. Tipos de Glock

Tipo de númeroTipo de cerraduraUtilice

1

trans

Bloqueo de la transacción

2

inode

Metadatos y datos del inodo

3

rgrp

Metadatos del grupo de recursos

4

meta

El superbloque

5

iopen

Detección del último inodo más cercano

6

rebaño

flock(2) syscall

8

cuota

Operaciones de contingencia

9

revista

Diario mutex

Una de las banderas más importantes de glock es la bandera l (locked). Este es el bit de bloqueo que se utiliza para arbitrar el acceso al estado de glock cuando se va a realizar un cambio de estado. Se establece cuando la máquina de estado está a punto de enviar una solicitud de bloqueo remoto a través del DLM, y sólo se borra cuando la operación completa se ha realizado. A veces esto puede significar que se haya enviado más de una solicitud de bloqueo, con varias invalidaciones que se producen entre las veces.

Tabla 8.4, “Banderas Glock” muestra los significados de las diferentes banderas de las glock.

Tabla 8.4. Banderas Glock

BanderaNombreSignificado

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

Respuestas de los nodos remotos ignoradas - la recuperación está en curso.

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 el 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

Cuando se recibe una devolución de llamada remota de un nodo que quiere obtener un bloqueo en un modo que entra en conflicto con el que se mantiene en el nodo local, entonces se establece uno u otro de los dos indicadores D (demote) o d (demote pending). Para evitar que se produzcan condiciones de inanición cuando hay contención en un determinado bloqueo, a cada bloqueo se le asigna un tiempo de retención mínimo. Un nodo que aún no ha tenido el bloqueo durante el tiempo mínimo de retención se le permite retener ese bloqueo hasta que el intervalo de tiempo haya expirado.

Si el intervalo de tiempo ha expirado, se activará la bandera D (demote) y se registrará el estado requerido. En ese caso, la próxima vez que no haya bloqueos concedidos en la cola de titulares, el bloqueo será degradado. Si el intervalo de tiempo no ha expirado, entonces se establece la bandera d (demote pending) en su lugar. Esto también programa la máquina de estado para borrar d (demote pending) y establecer D (demote) cuando el tiempo mínimo de retención haya expirado.

La bandera I (inicial) se establece cuando a la glock se le ha asignado un bloqueo DLM. Esto sucede cuando la glock se utiliza por primera vez y la bandera I permanecerá entonces establecida hasta que la glock sea finalmente liberada (que el bloqueo DLM se desbloquee).