usa o trace-cmd / ftrace para obter o function_graph antes que o panic () aconteça

9

Estou tentando usar trace-cmd para reunir mais informações sobre uma falha no kernel que estou vendo. Infelizmente, o kernel trava com a mensagem "kernel panic - not syncing" (isto é, buffers de soquete e de arquivo não são liberados, então o que estava nos buffers no momento da falha é inevitavelmente perdido).

Existe uma maneira de :

  1. forçar trace-cmd process para liberar seus buffers para o sistema de arquivos ou soquetes? OU
  2. faz o trace-cmd / ftrace para evitar o buffer (ou seja, chamar printk () atrás das cenas e usar o netconsole)?

Como estou executando o comando trace-cmd no ambiente virtualizado, não me importo que o disco rígido possa ser corrompido ocasionalmente, porque posso simplesmente reverter para o último snapshot bom ou reimplantar a VM.

    
por Hans Solo 26.09.2017 в 20:53
fonte

1 resposta

2

Não posso garantir que minha receita ajude você, mas quem sabe:)

Primeiro, tente descomprimir todas as saídas de trace-cmd . Você pode encontrar algumas receitas para fazer isso no link

Segundo, o kernel trata de escrever FS no pânico é muito perigoso e tudo bem, mas você pode tentar armazenar as últimas informações antes da morte fora da máquina com falha. Tente redirecionar suas informações críticas para a porta serial ou conexão de rede e capturá-las no outro lado. Como

unbuffer trace-cmd >/dev/ttyS0

Outra maneira é tentar evitar pânico e deixar o kernel funcionar por mais tempo, mas com resultados imprevisíveis. Você pode desativar o pânico em vários casos. Veja as configurações de panic_on_* no diretório /proc/sys/kernel/ . Mais detalhes podem ser encontrados na " Documentação para / proc / sys / kernel / "

    
por MrCryo 30.09.2017 / 10:05
fonte