O (estatísticos) profilers livre, baixa sobrecarga pode-se usar no Linux?
-
21-08-2019 - |
Pergunta
De preferência, a partir de repositórios do Ubuntu.
Solução
Outros mencionaram OProfile ; para perfilamento estatística de todo o sistema em instalações modernas do Linux, é, de fato, o rock.
A ferramenta mais venerável (que não requer suporte do kernel e, portanto, irá funcionar em versões mais antigas do Linux ou mesmo sistemas operacionais não-Linux) é GNU gprof , incluído no binutils (e, portanto, sem dúvida, já instalado em seu ambiente de desenvolvimento).
Para usar gprof
, apenas compilar o seu pedido com o argumento -pg
para gcc
; um arquivo chamado gmon.out
será criado depois da saída do programa, e gprof
pode então ser usada para analisar esse arquivo.
Outras dicas
Um simples, mas técnica eficaz é executar o programa sob GDB e manipular o sinal SIGINT. Enquanto o programa está sendo executado, gera SIGINT manualmente, digitando control-c ou o que quer, e enquanto ela é interrompida, gravar a pilha de chamadas. Fazer este número um de vezes, como 10 ou 20, enquanto o programa está sendo subjetivamente lento. Isto lhe dará uma boa idéia de onde o tempo passa.
Este método não lhe dá tempo preciso, mas não localizar com precisão as instruções, incluindo instruções de chamada, esse custo a mais tempo.
Sysprof é um bom profiler, semelhante ao OProfile (também tem um GTK GUI). que está disponível no repositório do Ubuntu. É um profiler nível do kernel, o que requer um módulo do kernel ao contrário gprof, no entanto, também ao contrário gprof, é possível determinar o perfil de aplicativos multithreaded.
Há OProfile . Não é tão difícil de usar, mas é um pouco buggy.
Eu tive um bom sucesso com oprofile ( http://oprofile.sourceforge.net/news/ ), que está disponível nos repositórios do Ubuntu também. Ele não requer recompilação, e não tem quaisquer limitações sobre objetos compartilhados ou similares.