razões do kjournald para alto uso

15

Estou tentando descobrir por que está kjournaldficando louco na minha máquina. É uma caixa de 8 núcleos com muita memória. Tem ~ 50% de carga da CPU.

O iotop não parece apontar para nenhum processo específico - algumas explosões de gravações aqui e ali (principalmente cron iniciando, algumas estatísticas de monitoramento geradas etc.) Quando eu costumava sys/vm/block_dumpreunir as estatísticas de gravação, obtinha listas como esta:

kjournald(1352): 1909
sendmail(28934): 13
cron(28910): 12
cron(28912): 11
munin-node(29015): 3
cron(28913): 3
check_asterisk_(28917): 3
sh(28917): 2
munin-node(29022): 2
munin-node(29021): 2

Onde as kjournaldações são apenas WRITEs.

Por que isso está acontecendo? O que mais devo olhar para limitar um pouco a atividade do kjournald? Parece desproporcional ao que realmente está sendo escrito.

viraptor
fonte
Qual sistema operacional você está usando. Você pode postar as informações uname.
Soham Chakraborty
Eu tinha exatamente o mesmo problema
Sharen Eayrs

Respostas:

15

kjournaldé responsável pelo diário do ext3 (sistema de arquivos de registro no diário). É conhecido por usar muita CPU sob certas cargas. Não há muito o que fazer, exceto usar outro sistema de arquivos ou desativar o registro no diário (criando efetivamente o ext2 do fs).

Teoricamente, você pode usar um dos outros modos de registro ext3 no diário e verificar se o uso da CPU diminui, mas lembre-se de que cada método compromete a segurança dos dados que estão sendo gravados no disco. Você encomendou o modo, o modo write-back e o modo 'tudo'.

  1. Encomenda: apenas metadados do diário, mas garante que os dados relacionados a um metadado sejam salvos antes de confirmar as alterações de metadados no diário.
  2. Escreva de volta: apenas metadados do diário, mas não garante que os dados sejam salvos antes do registro do diário.
  3. journal: tudo é registrado em diário, dados e metadados. Pode ser lento, mas YMMV.

Você define o modo usando a opção data=ao montar o sistema, como data=ordered.

coredump
fonte
Não há sentido em mudar o modo de diário, ao contrário de desativá-lo completamente, mas também tem menos sentido. Portanto, descrever quais opções de diário são inúteis.
poige 17/02
3
Diferentes modos de diário exibem diferentes comportamentos da CPU. Alguns testes aqui .
Coredump
1
@coredump, ainda sem sentido . Não há gráficos mostrando o uso da CPU para diferentes modos de registro no diário, apenas taxa de transferência. Na verdade, o gráfico de uso da CPU mostra diferenças apenas entre FSes. Além disso, levando em consideração uma diferença notável entre EXT3 e Reiser3 nesse gráfico, fica claro que a pegada geral e média da CPU é analisada, pelo que o @viraptor tem picos de atividade no kjournald.
poige
Nós concordaremos em discordar então. Somente testes em seu ambiente mostrarão que há uma diferença ou não no uso da CPU. Também não recomendaria o ReiserFS, já que o governo tem um bloqueio permanente no autor do FS :).
Coredump
8
Aqui, pegue esta xícara de humor: \
coredump
4

Por padrão, seu sistema de arquivos ext3 será montado com as vezes ativadas. Cada vez que um arquivo ou diretório é lido / acessado, o sistema de arquivos terá que gravar de volta nos discos para atualizar esse registro atime. Isso significa que, mesmo que sua carga de trabalho seja baseada principalmente na leitura, você ainda precisará acessar os discos para atualizar os tempos de acesso de cada arquivo e diretório, e esse é meu palpite sobre o motivo pelo qualkjournald processo estava gravando tantos blocos.

Desativar o atime's trará um grande impulso ao desempenho, mas quebrará a conformidade com o POSIX. Confira este artigo da Wikipedia para algumas discussões sobre as críticas do atime.

Para desativar as vezes, basta adicionar noatimeàs opções de montagem do seu sistema de arquivos ou remontar conforme sugerido por poige. Aqui está um exemplo para o seu sistema de arquivos raiz:

mount -o remount,noatime /
Evan Borgstrom
fonte
3
Observe que os kernels mais recentes assumem como padrão relatimeum compromisso aceitável entre noatimee atime.
266 Oliver Oliver
1

Se a perfeição dos dados não for importante: faça isso

iostat -o -a

Certifique-se de que é realmente kjournald. É o que causa o travamento do meu servidor.

Mudar o disco rígido para SSD funcionaria.

Quando você vê o kjournald escrevendo 5 a 10 MB de dados,

http://ubuntuforums.org/showthread.php?t=56621

sudo tune2fs -O ^has_journal /dev/sda1
sudo e2fsck /dev/sda1

onde sda1 é o nome da sua partição

Relatar o resultado no comentário para que eu possa verificar melhor.

Sharen Eayrs
fonte
3
Você quer dizer iotop, não iostat, certo?
precisa
0

Não na ordem de fazer, apenas para mencionar:

  1. mount -oremount,noatime /fs/being_over/journaled - como um palpite rápido (você não nos mostrou qual é a sua mount aparência)
  2. Tente reduzir o tamanho do diário (tune2fs -J … )
  3. Mude para o Reiser3 (robusto por um longo tempo, sim. E nunca houve um diário tão desagradável).
poige
fonte