8.7. Bmap tracepoints
O mapeamento de blocos é uma tarefa central para qualquer sistema de arquivos. O GFS2 utiliza um sistema tradicional baseado em bitmap com dois bits por bloco. O objetivo principal dos pontos de rastreamento neste subsistema é permitir o monitoramento do tempo necessário para alocar e mapear blocos.
O ponto de rastreamento gfs2_bmap
é chamado duas vezes para cada operação de bmap: uma no início para exibir o pedido de bmap, e outra no final para exibir o resultado. Isto facilita a correspondência das solicitações e resultados juntos e mede o tempo necessário para mapear blocos em diferentes partes do sistema de arquivos, diferentes compensações de arquivos, ou mesmo de arquivos diferentes. Também é possível ver quais são os tamanhos médios de extensão que estão sendo devolvidos em comparação aos que estão sendo solicitados.
O gfs2_rs
tracepoint traça reservas de blocos à medida que são criados, utilizados e destruídos no alocador de blocos.
Para manter o controle dos blocos alocados, gfs2_block_alloc
é chamado não apenas nas alocações, mas também na liberação de blocos. Como as alocações são todas referenciadas de acordo com o inode ao qual o bloco é destinado, isto pode ser usado para rastrear quais blocos físicos pertencem a quais arquivos em um sistema de arquivos ao vivo. Isto é particularmente útil quando combinado com blktrace
, que mostrará padrões de E/S problemáticos que podem então ser referidos de volta aos inodes relevantes usando o mapeamento obtido por meio deste tracepoint.
Direct I/O (iomap
) é uma política de cache alternativa que permite que as transferências de dados de arquivos aconteçam diretamente entre o disco e o buffer do usuário. Isto tem benefícios em situações em que se espera que a taxa de acerto do cache seja baixa. Tanto gfs2_iomap_start
como gfs2_iomap_end
tracepoints rastreiam essas operações e podem ser usados para acompanhar o mapeamento usando Direct I/O, as posições no sistema de arquivo do Direct I/O junto com o tipo de operação.