8.6. Rastros de Glock
Os tracepoints também são projetados para poder confirmar a exatidão do controle do cache, combinando-os com a saída do blktrace
e com o conhecimento do layout do on-disk. É então possível verificar se uma determinada E/S foi emitida e completada sob a trava correta, e se não há corridas presentes.
O traço gfs2_glock_state_change
é o mais importante para entender. Ele rastreia cada mudança de estado da glóculo desde a criação inicial até a despromoção final que termina com gfs2_glock_put
e o NL final para a transição desbloqueada. A bandeira l (bloqueada) da glock é sempre colocada antes que ocorra uma mudança de estado e só será liberada depois de terminada. Nunca há nenhum detentor concedido (a bandeira H glock holder) durante uma mudança de estado. Se houver algum detentor em fila de espera, ele estará sempre no estado W (em espera). Quando a mudança de estado estiver completa, os titulares poderão ser concedidos, o que é a operação final antes que a bandeira de glock l seja liberada.
O ponto de rastreamento gfs2_demote_rq
mantém o controle dos pedidos de demote, tanto locais quanto remotos. Assumindo que haja memória suficiente no nó, os pedidos de demote local raramente serão vistos, e na maioria das vezes eles serão criados por umount
ou ocasionalmente por recuperação de memória. O número de solicitações de demote remoto é uma medida da contenda entre nós para um determinado inode ou grupo de recursos.
O ponto de rastreamento gfs2_glock_lock_time
fornece informações sobre o tempo gasto pelos pedidos ao DLM. A bandeira de bloqueio (b
) foi introduzida na glock especificamente para ser usada em combinação com este tracepoint.
Quando um detentor recebe uma fechadura, gfs2_promote
é chamado, isso ocorre como o estágio final de uma mudança de estado ou quando é solicitada uma fechadura que pode ser concedida imediatamente devido ao estado de glock já cravando uma fechadura de um modo adequado. Se o suporte for o primeiro a ser concedido para esta glock, então a bandeira f (primeira) é colocada nesse suporte. Isto é usado atualmente apenas por grupos de recursos.