“perf top -g” pendure o linux no arm64

0

Eu uso uma placa xilinx chamada xilinx_zynq_zcu102. E eu uso o yocto para gerar o sistema para isso. Hoje, quando eu tento executar "perf top -g", a porta serial de saída da seguinte mensagem e, em seguida, eu não posso introduzir nada através dele, também nada de saída.

perf: interrupt took too long (6152 > 6136), lowering 
kernel.perf_event_max_sample_rate to 32500
perf: interrupt took too long (7728 > 7690), lowering 
kernel.perf_event_max_sample_rate to 25750
perf: interrupt took too long (9678 > 9660), lowering 
kernel.perf_event_max_sample_rate to 20500

versão do kernel: Linux xilinx-zynqmp 4.12.24-yocto-standard #1 SMP PREEMPT Mon Jul 2 13:00:38 CST 2018 aarch64 aarch64 aarch64 GNU/Linux

Após a interrupção, a conexão ssh também é interrompida e a nova conexão não pode ser estabelecida. Mas eu descobri que ainda posso pingar, e isso existia na lista de clientes do roteador.

O mais estranho é que, se eu executo o "perf top", que não tem a opção "-g", ele funciona bem. E eu compilei o sistema para uma placa de braço de 32 bits e placa intel x86-64 com a mesma versão do yocto, ambos funcionam bem. Então eu acho que só arm64 sofre isso.

Eu primeiro suspeitei que o kernel pode estar bloqueado em algum loop, então eu abri Detect Hard and Soft Lockups e Detect Hung Tasks em Kernel hacking . Esperei por muito tempo após o sistema desligar, mas nada foi emitido.

Então eu encontrei algo . Alguém diz que reduzir a taxa de amostragem pode ajudar. Então eu corro o seguinte comando.

echo 10 > /proc/sys/kernel/perf_event_max_sample_rate

Funcionou. O sistema não travou depois de executar "perf top -g". Mas isso obviamente não é uma solução. Porque perf deve ter reduzido a taxa de amostragem automaticamente. Mas de alguma forma desligou.

Gostaria de saber se existe algum outro método para depurá-lo. Porque eu não consigo obter nenhuma informação de log sobre o problema. Qualquer sugestão seria útil.

Obrigado.

    
por colorfulshark 02.07.2018 / 09:37

0 respostas