0Pricing
Go Academy · Aula

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.out

Rastreamento baseado em arquivo

Utilize runtime/trace para registrar um rastreamento programaticamente:

f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()
// run workload

go 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.out

Visualizador 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

  1. Escrevendo benchmarks com testing.B
  2. Criação de perfis de CPU com pprof
  3. Criação de perfis de heap e alocações
  4. Rastreamento de execução
← Voltar para Go Academy