Por que 'perf' precisa coincidir com a versão exata do kernel do Linux em execução?

1

Se você tentar executar um binário perf aleatório que não corresponda ao seu kernel Linux atualmente em execução, ele diz:

$ perf
WARNING: perf not found for kernel 4.13.0-45

Claro, se eu obtiver o perf para esta versão, funcionará.

Olhando para alguns recursos populares como Linux perf Examples e o Perf wiki Não encontrei a resposta para esta pergunta específica: por que perf estritamente precisa estar na mesma versão do kernel?

    
por Leandro N 16.08.2018 / 15:42

1 resposta

0

perf e o kernel estão muito próximos, de fato perf é parte do código-fonte do kernel. No fundo, você deve pensar nisso como uma ferramenta específica do kernel; mas a prática e os requisitos de empacotamento nas distribuições do Linux significam que os usuários acabam pensando nela como uma ferramenta "padrão".

Não há uma interface perf -private especial entre perf e o kernel, portanto, as partes perf -supporting do kernel precisam seguir as regras usuais de virada para o espaço do usuário - ie manter compatibilidade com versões anteriores; Portanto, em teoria, seria possível executar uma versão mais antiga do perf com um kernel mais novo, já que o kernel mais novo deve suportar qualquer interface que a versão antiga do perf use para se comunicar com ele. No entanto, na prática, se você precisar usar perf para investigar o desempenho de uma carga de trabalho em um determinado kernel, também será necessário investigar todos os recursos que afetam o desempenho desse kernel específico; uma versão mais antiga do perf não suporta recursos que foram adicionados depois que foi lançada, portanto, você normalmente precisaria da versão correspondente de perf mesmo assim. Como resultado de tudo isso, a opção pragmática é exigir uma versão do perf correspondente ao kernel em execução.

    
por 16.08.2018 / 15:54