0Pricing
Go Academy · Lezione

Tracciamento dell'esecuzione

go tool trace per l'analisi a livello di goroutine

Tracciamento dell'esecuzione è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Che cos'è il tracing dell'esecuzione

Il tracer di esecuzione di Go registra una sequenza temporale della schedulazione delle goroutine, degli eventi del GC, delle syscall e della crescita dell'heap. Fornisce una visualizzazione del parallelismo e della latenza non disponibile nei profili CPU o dell'heap.

Acquisire una traccia

Acquisisca una traccia tramite l'endpoint HTTP:

curl http://localhost:6060/debug/pprof/trace?seconds=5 -o trace.out
go tool trace trace.out

Traccia basata su file

Usi runtime/trace per registrare programmaticamente una traccia:

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

go test -trace

Acquisisca una traccia durante l'esecuzione di test o benchmark:

go test -trace trace.out -bench=. ./...
go tool trace trace.out

Visualizzatore delle tracce

Il visualizzatore delle tracce (go tool trace) si apre in un browser e mostra le sequenze temporali delle goroutine, gli eventi del GC, le dimensioni dell'heap e le tracce dello stack di ogni goroutine in qualsiasi momento.

Analisi delle goroutine

La vista Goroutine Analysis raggruppa le goroutine per funzione e mostra quanto tempo ciascuna trascorre nei vari stati: in esecuzione, eseguibile (in attesa di una P), bloccata (canale/mutex/syscall) e in sospensione.

Individuare la latenza dello scheduler

Un tempo elevato nello stato "runnable" indica che le goroutine sono pronte ma non vengono schedulate. Questo segnala che troppe goroutine competono per le P di GOMAXPROCS oppure che il processo è a corto di CPU.

Impatto del GC

Le pause stop-the-world del GC compaiono come barre grigie su tutte le goroutine. Pause lunghe o un GC frequente indicano allocazioni eccessive: combini il tracing con il profiling dell'heap per ridurre le allocazioni.

Annotazioni dell'utente

Aggiunga span personalizzati alla traccia usando trace.WithRegion e trace.Log per annotare le proprie sezioni di codice e facilitarne l'analisi.

trace.WithRegion(ctx, "parse request", func() {
    parseRequest(req)
})

task e region

trace.NewTask raggruppa le regioni correlate all'interno di un task denominato, consentendo di misurare la latenza end-to-end di un'operazione logica distribuita su più goroutine.

ctx, task := trace.NewTask(ctx, "handle request")
defer task.End()

Traccia e profilo

Profilo CPU: quali funzioni consumano CPU nel tempo. Profilo heap: quali funzioni allocano memoria. Traccia: quando le goroutine vengono eseguite o bloccate e come il GC si intreccia con esse; strumenti diversi per domande diverse.

Verifica rapida

Che cosa significa lo stato "runnable" di una goroutine nella traccia dell'esecuzione?

Riepilogo: tracing dell'esecuzione

Punti chiave:

  • go tool trace mostra le sequenze temporali delle goroutine, gli eventi del GC e la schedulazione
  • Acquisisca la traccia tramite l'endpoint HTTP o il package runtime/trace
  • Tempo nello stato runnable → contesa dello scheduler; pause del GC → allocazioni eccessive
  • Le annotazioni dell'utente (WithRegion, NewTask) contrassegnano le proprie sezioni

Domande Frequenti

La lezione «Tracciamento dell'esecuzione» è gratuita?

Sì — il testo completo di «Tracciamento dell'esecuzione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Tracciamento dell'esecuzione»?

go tool trace per l'analisi a livello di goroutine Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Tracciamento dell'esecuzione»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Scrivere benchmark con testing.B
  2. Profilazione della CPU con pprof
  3. Profilazione dell'heap e delle allocazioni
  4. Tracciamento dell'esecuzione
← Torna a Go Academy