0Pricing
Go Academy · Lekcja

Ś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 workload

go test -trace

Proszę przechwycić ślad podczas uruchamiania testów lub benchmarków:

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

Przeglą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

  1. Pisanie benchmarków za pomocą testing.B
  2. Profilowanie procesora za pomocą pprof
  3. Profilowanie sterty i alokacji
  4. Śledzenie wykonania
← Powrót do Go Academy