13.1.18. O profiler de código

Window → Show Code Profiler abre um profiler em nível de função para o firmware em execução na câmera conectada: quais funções C executaram, com que frequência e para onde foram os microssegundos, transmitido ao vivo enquanto um script executa. Ele responde à pergunta que o contador de FPS levanta – por que esse pipeline está lento – no nível do próprio código da câmera.

O suporte a profiling é compilado no firmware, não está sempre presente: a câmera deve estar executando um firmware construído com PROFILE_ENABLE=1, e a entrada de menu permanece desabilitada caso contrário. Construir tal firmware faz parte do fluxo de construção personalizada abordado em Compilando o firmware.

A janela Code Profiler: a tabela de funções preenchida com contagens de chamadas, colunas de tempo, percentuais e duas colunas de contadores de eventos de hardware, com os controles Flat/Tree e Inclusive/Exclusive no topo e a linha de totais na parte inferior

O profiler observando a execução de um script: chamadas por função, tempo e percentual do tempo total, com dois contadores de eventos de hardware nas colunas mais à direita e a linha de totais embaixo.

A janela é uma tabela ordenável de funções com suas contagens de chamadas, microssegundos mínimos, máximos, totais e médios, ciclos médios e percentual do tempo total, com uma linha de totais embaixo e uma caixa de filtro para encontrar funções pelo nome. Os nomes das funções vêm do arquivo ELF do firmware – aponte o campo de caminho do firmware da janela para o .elf produzido pela construção, e os endereços são resolvidos em nomes.

Dois controles de visualização organizam os dados. Flat classifica cada função independentemente – a visualização para “qual é a única função mais cara.” Tree aninha os chamados sob os chamadores, mostrando como o tempo se decompõe ao longo da cadeia de chamadas. Independentemente, Inclusive atribui a uma função o tempo gasto em tudo o que ela chamou, enquanto Exclusive conta apenas o corpo da própria função – inclusive encontra o subsistema caro, exclusive encontra o laço caro. Reset zera os contadores, que é como você mede um estágio de um pipeline isoladamente: reinicie, deixe executar, leia.

O profiler também pode exibir contadores de eventos de hardware – falhas de cache, predições de desvio erradas e os demais eventos que o processador pode contar – junto às colunas de tempo; selecione-os na mesma janela em firmware construído com o suporte.

Ver também

A CLI do pacote openmv pode sobrepor os mesmos dados de profiling sobre um fluxo ao vivo a partir da linha de comando – veja A CLI openmv.