C.4. Interfaz de Glock debugfs

La interfaz de glock debugfs permite la visualización del estado interno de los glocks y de los portadores y también incluye algunos detalles de resumen de los objetos que se bloquean en algunos casos. Cada línea del archivo puede comenzar por G: sin ninguna sangría (lo cual se refiere al glock) o por una letra diferente, con sangría con un solo espacio y se refiere a las estructuras asociadas con el glock inmediatamente por encima de este en el archivo (H: es un portador, I: un inodo, y R: un grupo de recursos) . Aquí vemos un ejemplo de cómo se podría ver el contenido:
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 18 MB aproximadamente) generado por el comando cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock durante una ejecución del punto de referencia del matasellos en un único nodo de sistema de archivos GFS2. Los glocks en la figura han sido seleccionados para mostrar algunas de las funciones más interesantes de los vaciados de glock.
Los estados de glock pueden ser EX (exclusivo), DF (diferido), SH (compartido) o UN (desbloqueado). Estos estados corresponden directamente con extractos de modos de cerrojo DLM para 'UN' el cual puede representar un estado de cerrojo DLM null (nulo) o ese GFS2 no mantiene el cerrojo DLM (según el indicador I como se explica arriba). El s: campo del glock indica el estado actual del cerrojo y el mismo campo en el portador indica el modo solicitado. Si el cerrojo se otorga, el portador tendrá el bit H bit establecido en sus indicadores (f: campo). De lo contrario, deberá tener el bit W de esperar.
El campo n: (número) indica el número asociado con cada elemento. Para glocks, es el número del tipo seguido por el número de glock, entonces en el ejemplo anterior, el primer glock es n:5/75320; es decir, un glock iopen se relaciona con el inodo 75320. En el caso del inodo y de los glocks iopen, el número de glock siempre es idéntico al número de bloque del disco del inodo.

Nota

Los números glock (n: campo) en el archivo de glocks debugfs están en hexadecimales, aunque en la salida de puntos de trazado aparece en decimales. Esto se debe a razones históricas; los números glock siempre se escribían en hexadecimales, pero se seleccionaron los decimales para los puntos de trazado a fin de que los números pudieran ser comparados fácilmente con la otra salida de punto de trazado (desde blktrace por ejemplo) y con salida desde stat(1).
El listado completo de todos los indicadores para el portador y el glock se configuran en la Tabla C.4, “Indicadores Glock” y en la Tabla C.5, “Indicadores de portadores de glock”. El contexto de bloques de valor de cerrojo no está disponible actualmente mediante la interfaz de glock debugfs.
La Tabla C.3, “Tipos Glock” muestra los significados de los diferentes tipos de Glock.

Tabla C.3. Tipos Glock

Número de tipoTipo de cerrojoUso
1transCerrojo de transacción
2inodoMetadatos y datos de inodo
3rgrpMetadatos de grupo de recursos
4metaEl súperbloque
5iopenEl último nodo que se detectó
6Flockflock(2) syscall
8quotaOperaciones de cuota
9DiarioDiario mutex
Uno de los indicadores de glock más importantes es el indicador l (Bloqueado). Este es el cerrojo de bits utilizado para arbitrar el acceso a un estado de glock cuando se realiza un cambio de estado. Se establece cuando la máquina de estados está a punto de enviar una petición de cerrojo a través del Gestor de cerrojo distribuido (DML) , y solo se despeja cuando la operación se ha realizado. Algunas veces, esto puede significar que se ha enviado más de una solicitud de cerrojo con varias invalidaciones que se presentan entre los tiempos.
La Tabla C.4, “Indicadores Glock” muestra los significados de los diferentes indicadores Glock.

Tabla C.4. Indicadores Glock

IndicadorNombreSignificado
dPending demoteUna solicitud para degradar diferida o remota
DDemoteUna solicitud para degradar (local o remota)
fLog flushEl registro necesita ser enviado antes de lanzar este Glock
FFrozenResponde desde los nodos remotos ignorados - recuperación en curso.
iInvalidate in progressEn el proceso de invalidar páginas en este Glock
IInitialDefinir cuando el cerrojo DLM esté asociado con este Glock
lLockedEl Glock está en el proceso de cambiar estado
LLRUSe establece cuando el glock está en la lista LRU
oObjetoSe 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 )
pDemote in progressEl Glock está en el proceso de responder a una solicitud de degradación
sEn colaSe 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.
rReply pendingRespuesta recibida del nodo remoto está a la espera del procesamiento
yDirtyLos datos necesitan vaciarse al disco antes de lanzar este glock
Cuando se recibe una llamada remota desde un nodo que desea obtener un cerrojo en un modo que entra en conflicto con el que se mantiene en un nodo local, luego uno u otro de los dos indicadores D (degradar) o d (pendiente para degradar) se establece. Con el fin de evitar las condiciones de hambre cuando hay contención en un cerrojo particular, a cada cerrojo se le asigna un tiempo de espera mínimo. El nodo que aún no tiene el cerrojo para el tiempo de espera mínimo puede retener ese cerrojo hasta que el intervalo de tiempo haya expirado.
Si el intervalo de tiempo ha expirado, entonces el indicador D (degradar) se enviará y el estado requerido será registrado. En ese caso, la próxima vez que no se otorguen cerrojos en la cola de portadores, el cerrojo será degradado. Si el tiempo de intervalo no ha expirado, entonces el indicador d (pendiente para degradar) se establecerá en su lugar. Esto también programa el la máquina de estados para limpiar d (pendiente para degradar) y establecer D (degradar) cuando el tiempo mínimo del portador mínimo ha expirado.
El indicador I (inicial) se establece cuando se ha asignado un cerrojo DLM al glock. Esto sucede cuando el glock se utiliza primero y cuando el indicador I permanece configurado hasta que el glock sea desbloqueado.