Rastreamento de execução
Use go tool trace para análises no nível das goroutines
Rastreamento de execução é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
O que é rastreamento de execução?
O rastreador de execução do Go registra uma linha do tempo do agendamento das rotinas Go, dos eventos do GC, das chamadas ao sistema e do crescimento da memória dinâmica. Ele oferece uma visão visual do paralelismo e da latência que não está disponível nos perfis de CPU ou de memória dinâmica.
Capturando um rastreamento
Capture um rastreamento pelo ponto de acesso HTTP:
curl http://localhost:6060/debug/pprof/trace?seconds=5 -o trace.out
go tool trace trace.outRastreamento baseado em arquivo
Utilize runtime/trace para registrar um rastreamento programaticamente:
f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()
// run workloadgo test -trace
Capture um rastreamento durante as execuções de testes e avaliações de desempenho:
go test -trace trace.out -bench=. ./...
go tool trace trace.outVisualizador de rastreamentos
O visualizador de rastreamentos (go tool trace) é aberto em um navegador e mostra linhas do tempo das rotinas Go, eventos do GC, tamanho da memória dinâmica e rastreamentos de pilha por rotina Go em qualquer momento.
Análise de rotinas Go
A visualização Análise de rotinas Go agrupa as rotinas Go por função e mostra quanto tempo cada uma passa nos estados: em execução, pronta para execução (aguardando um P), bloqueada (canal/mutex/chamada ao sistema) e dormindo.
Encontrando a latência do agendador
Um tempo alto no estado "runnable" significa que as rotinas Go estão prontas, mas não foram agendadas. Isso indica que há rotinas Go demais competindo pelos Ps de GOMAXPROCS ou que o processo está com a CPU limitada.
Impacto do GC
As pausas do GC que interrompem o mundo aparecem como barras cinzas em todas as rotinas Go. Pausas longas ou um GC frequente indicam alocação excessiva — combine essa informação com o perfilamento da memória dinâmica para reduzir as alocações.
Anotações do usuário
Adicione intervalos personalizados ao rastreamento utilizando trace.WithRegion e trace.Log para anotar suas próprias seções do código e facilitar a análise.
trace.WithRegion(ctx, "parse request", func() {
parseRequest(req)
})tarefa e região
trace.NewTask agrupa regiões relacionadas sob uma tarefa nomeada, permitindo medir a latência de ponta a ponta de uma operação lógica que abrange várias rotinas Go.
ctx, task := trace.NewTask(ctx, "handle request")
defer task.End()Rastreamento versus perfil
Perfil de CPU: quais funções consomem CPU ao longo do tempo. Perfil da memória dinâmica: quais funções alocam memória. Rastreamento: quando as rotinas Go executam, bloqueiam e como o GC se intercala — ferramentas diferentes para perguntas diferentes.
Verificação rápida
O que significa o estado "runnable" de uma rotina Go no rastreamento de execução?
Recapitulação: rastreamento de execução
Pontos principais:
- go tool trace mostra linhas do tempo das rotinas Go, eventos do GC e agendamento
- Capture por meio de um ponto de acesso HTTP ou do pacote runtime/trace
- Tempo no estado pronto para execução → contenção do agendador; pausas do GC → alocações excessivas
- Anotações do usuário (WithRegion, NewTask) marcam suas próprias seções
Perguntas Frequentes
A aula “Rastreamento de execução” é grátis?
Sim — o texto completo de “Rastreamento de execução” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Rastreamento de execução”?
Use go tool trace para análises no nível das goroutines Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Rastreamento de execução”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Escrevendo benchmarks com testing.B
- Criação de perfis de CPU com pprof
- Criação de perfis de heap e alocações
- Rastreamento de execução