Por que a maioria das E / S de disco é atribuída ao jbd2 e não ao processo que realmente está usando a E / S?

16

Ao monitorar a E / S do disco, a maior parte da E / S é atribuída ao jbd2, enquanto o processo original que causou a E / S alta é atribuído a uma porcentagem de E / S muito mais baixa. Por quê?

Aqui está iotopo exemplo de saída (outros processos com IO <1% omitido):

insira a descrição da imagem aqui

Sparkler
fonte
Isso é com data=journal?
DepressedDaniel
@DepressedDaniel não sabe o que quer dizer. Acabei de usar o iotop -oP
Sparkler

Respostas:

16

jbd2 é um encadeamento do kernel que atualiza o diário do sistema de arquivos.

O rastreamento da atividade do sistema de arquivos ou do disco com o processo que a causou é difícil porque as atividades de muitos processos são combinadas. Por exemplo, se dois processos estiverem lendo do mesmo arquivo ao mesmo tempo, em qual processo a leitura seria contabilizada? Se dois processos gravam no mesmo diretório e o diretório é atualizado no disco apenas uma vez (combinando as duas operações), em qual processo a gravação seria considerada?

No seu caso, parece que a maior parte do tráfego consiste em atualizações no diário. Isso é rastreado para o atualizador de diário, mas não há rastreamento entre as atualizações do diário e os processos que causaram as operações de gravação que exigiram essa atualização do diário.

Gilles 'SO- parar de ser mau'
fonte
2
Quais outras categorias de disco io existem além das atualizações do diário? (ou seja, por jdb2 não é a única entrada na saída de iotop?)
Sparkler
@Sparkler Também está escrevendo os dados reais. (A menos que você esteja usando um sistema de arquivos estruturado em log, mas a maioria não esteja.)
Gilles 'SO- stop be evil'
Isso explica o que acontece. Mas é muito demorado quando o processo original 'Prioridade de E / S foi definido como' inativo 'e jbd2apenas continua executando muitas E / S em sua própria prioridade de E / S.
Jlh