Śledzenie wykonania
go tool trace do analizy na poziomie goroutines
Śledzenie wykonania to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Czym jest śledzenie wykonania?
Tracer wykonania Go rejestruje oś czasu planowania goroutines, zdarzeń GC, wywołań systemowych i wzrostu sterty. Zapewnia wizualny obraz równoległości i opóźnień, którego nie dają profile CPU ani sterty.
Przechwytywanie śladu
Proszę przechwycić ślad za pośrednictwem punktu końcowego HTTP:
curl http://localhost:6060/debug/pprof/trace?seconds=5 -o trace.out
go tool trace trace.outŚlad oparty na pliku
Proszę użyć runtime/trace do programowego rejestrowania śladu:
f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()
// run workloadgo test -trace
Proszę przechwycić ślad podczas uruchamiania testów lub benchmarków:
go test -trace trace.out -bench=. ./...
go tool trace trace.outPrzeglądarka śladów
Przeglądarka śladów (go tool trace) otwiera się w przeglądarce i pokazuje osie czasu goroutines, zdarzenia GC, rozmiar sterty oraz ślady stosu poszczególnych goroutines w dowolnym momencie.
Analiza goroutines
Widok Goroutine Analysis grupuje goroutines według funkcji i pokazuje, ile czasu każda z nich spędza w poszczególnych stanach: running (uruchomiona), runnable (oczekująca na P), blocked (zablokowana na kanale, muteksie lub wywołaniu systemowym) oraz sleeping (uśpiona).
Wykrywanie opóźnień planisty
Długi czas w stanie "runnable" oznacza, że goroutines są gotowe do uruchomienia, ale nie zostały zaplanowane. Wskazuje to na zbyt wiele goroutines konkurujących o jednostki P określone przez GOMAXPROCS albo na proces pozbawiony wystarczającej ilości czasu procesora.
Wpływ GC
Wstrzymania stop-the-world podczas GC pojawiają się jako szare paski obejmujące wszystkie goroutines. Długie lub częste wstrzymania GC wskazują na nadmierną liczbę alokacji — warto połączyć tę analizę z profilowaniem sterty, aby ograniczyć alokacje.
Adnotacje użytkownika
Proszę dodawać niestandardowe odcinki do śladu za pomocą trace.WithRegion i trace.Log, aby oznaczać własne sekcje kodu i ułatwić analizę.
trace.WithRegion(ctx, "parse request", func() {
parseRequest(req)
})task i region
trace.NewTask grupuje powiązane regiony w ramach nazwanego zadania, umożliwiając pomiar opóźnienia kompleksowego logicznej operacji wykonywanej przez wiele goroutines.
ctx, task := trace.NewTask(ctx, "handle request")
defer task.End()Ślad a profil
Profil CPU: które funkcje zużywają procesor w czasie. Profil sterty: które funkcje alokują pamięć. Ślad: kiedy goroutines działają, blokują się oraz jak przeplata się GC — różne narzędzia do różnych pytań.
Szybkie sprawdzenie
Co oznacza stan goroutine "runnable" w śladzie wykonania?
Podsumowanie: śledzenie wykonania
Najważniejsze informacje:
- go tool trace pokazuje osie czasu goroutines, zdarzenia GC i planowanie
- Ślad można przechwycić za pośrednictwem punktu końcowego HTTP lub pakietu runtime/trace
- Czas w stanie runnable → rywalizacja o czas planisty; wstrzymania GC → nadmierna liczba alokacji
- Adnotacje użytkownika (WithRegion, NewTask) oznaczają własne sekcje kodu
Często zadawane pytania
Czy lekcja „Śledzenie wykonania” jest bezpłatna?
Tak — pełny tekst „Śledzenie wykonania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Śledzenie wykonania”?
go tool trace do analizy na poziomie goroutines Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Śledzenie wykonania”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Pisanie benchmarków za pomocą testing.B
- Profilowanie procesora za pomocą pprof
- Profilowanie sterty i alokacji
- Śledzenie wykonania