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.outTraccia basata su file
Usi runtime/trace per registrare programmaticamente una traccia:
f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()
// run workloadgo test -trace
Acquisisca una traccia durante l'esecuzione di test o benchmark:
go test -trace trace.out -bench=. ./...
go tool trace trace.outVisualizzatore 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
- Scrivere benchmark con testing.B
- Profilazione della CPU con pprof
- Profilazione dell'heap e delle allocazioni
- Tracciamento dell'esecuzione