Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

C.4. L'interfaccia debugfs di glock

L'interfaccia debugfs di glock permette di visualizzare lo stato interno dei glock e degli holder, include anche, in alcuni casi, un sommario degli oggetti bloccati. Ogni riga del file può iniziare con G: con doppio spazio (si riferisce a glock stesso) oppure con una lettera diversa, e con spazio singolo, e si riferisce alle strutture associate con glock immediatamente sopra nel file (H: rappresenta un holder, I: un inode e R: un gruppo di risorse). Di seguito viene riportato un esempio del contenuto di questo file:
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]
Il seguente esempio riporta alcuni estratti (da un file di circa 18MB) generati dal comando cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock durante l'esecuzione di un postmark benchmark su un file system GFS2 di un nodo. Nell figura sono stati selezionati i glock in modo da mostrare alcune delle funzioni più interessanti dei glock dump.
Gli stati relativi al glock possono essere EX (exclusive), DF (deferred), SH (shared) o UN (unlocked). I suddetti stati corrispondono direttamente con le modalità DLM lock ad eccezione di UN, il quale può rappresentare uno stato DLM null lock oppure indicare che GFS2 non presenta alcun DLM lock (a seconda del flag I come precedentemente affrontato). Il campo s: indica lo stato corrente di lock, lo stesso campo nell'holder indica la modalità richiesta. Se si conferisce un lock, l'holder presenterà la lettera H nei propri flag (f: field). In caso contrario presenterà la lettera W.
Il campo n: (numero) indica il numero associato con ogni oggetto. Per glock, rappresenta il numero del tipo seguito dal numero di glock come nell'esempio riportato, il primo glock è n:5/75320; cioè un glock iopen relativo all'inode 75320. In presenza di inode e glock iopen, il numero di glock è sempre identico al numero del blocco a disco dell'inode.

Nota

I numeri di glock (campo n:) nel file glock di debugfs sono esadecimali, mentre gli output di tracepoint li rappresenta con valori decimali. Questo viene fatto per motivi cronologici; i numeri di glock sono sempre stati scritti in esadecimali, ma i valori decimali sono stati scelti per i tracepoint in modo da facilitare il processo di confronto con gli altri output (per esempio di blktrace) e con output di stat(1).
L'elenco completo di tutti i flag, sia per l'holder che per glock, sono disponibili in Tabella C.4, «Flag di glock» e Tabella C.5, «Flag holder di glock». Il contenuto dei blocchi per il valore del blocco non è attualmente disponibile tramite l'interfaccia debugfs di glock.
Tabella C.3, «Tipi di glock» mostra il significato dei diversi tipi di glock.

Tabella C.3. Tipi di glock

Numero tipoTipo di lockUso
1transLock di transazione
2inodeDati e metadati di Inode
3rgrpMetadati del gruppo di risorse
4metaIl superblocco
5iopenRilevamento ultimo nodo che ha utilizzato inode
6flockflock(2) syscall
8quotaOperazioni quota
9journalJournal mutex
Uno dei flag più importanti di glock è l (locked). Questo flag regola l'accesso allo stato di glock per eseguire la modifica dello stato stesso. Esso viene impostato quando la macchina degli stati è in procinto di inviare una richiesta remota di lock tramite DLM, viene annullato solo quando l'operazione è stata completamente eseguita. Talvolta ciò può implicare l'invio di più di una richiesta di lock con conseguenti processi di annullamento.
Tabella C.4, «Flag di glock» mostra il significato dei diversi flag.

Tabella C.4. Flag di glock

FlagNomeSignificato
dPending demoteUna richiesta di declassamento (remota) rinviata
DDemote (declassamento)Una richiesta di declassamento (locale o remota)
fLog flushÈ necessario eseguire il commit del log prima di rilasciare questo glock
FFrozenLe risposte dai nodi remoti sono ignorate - il ripristino è in corso.
iInvalidate in progressLa rimozione in questo glock della convilida delle pagine è in corso
IInitialImpostato quando il DLM lock è associato con questo glock
lLockedIl glock è in procinto di cambiare stato
LLRUImpostato quando glock è nell'elenco LRU
oOggettoImpostato quando glock è associato con un oggetto (cioè un inode per il tipo 2 di glock, e un gruppo di risorse per il tipo 3 di glock)
pDemote in progressGlock è in procinto a rispondere ad una richiesta di declassamento
qIn codaImpostato quando un holder è in coda per un glock ed è rimosso quando un glock è occupato, quando altri holder non sono disponibili. Usato come parte dell'algoritmo per il calcolo dell'intervallo minimo per un glock.
rReply pendingLa risposta ricevuta da un nodo remoto è in attesa di processazione
yDirtyÈ necessario azzerare i dati sul disco prima di rilasciare questo glock
Alla ricezione di una chiamata remota da un nodo che desidera ottenere un lock in una modalità in conflitto con quella presente sul nodo locale, verrà impostato uno dei seguenti flag, D (demote) o d (demote pending). Per evitare condizioni di "starvation" in presenza di una contesa per un lock particolare, ogni lock riceve un intervallo. In presenza di un nodo al quale non è stato conferito un lock per la durata prevista dell'intervallo, esso avrà diritto al lock fino a quando l'intervallo scade.
Se l'intervallo è scaduto, allora verrà impostato il flag D (demote) e registrato lo stato necessario. In tal caso in assenza di lock nella coda degli holder, il lock verrà declassato. Se l'intervallo non è ancora scaduto verrà impostato il flag d (demote pending). Questa operazione indica alla macchina degli stati di eliminare d (demote pending) e impostare D (demote) dopo la scadenza dell' intervallo.
Il flag I (initial) viene impostato quando è stato assegnato al glock un DLM lock. Ciò si verifica al primo utilizzo di glock ed il flag rimarrà impostato fino alla disponibilità di glock (DLM lock è sbloccato "unlocked").