Go Academy · Oppitunti

Suorituksen jäljitys

go tool trace goroutine-tason analyysiin

Oppitunti 4/413 vaihetta

Suorituksen jäljitys on ilmainen Go Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Go Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Go Academy-kurssilla on yhteensä 4 oppituntia.

Mitä suoritusjäljitys on?

Go-suoritusjäljitin tallentaa aikajanan goroutinejen ajoituksesta, roskienkeräystapahtumista, järjestelmäkutsuista ja keon kasvusta. Se tarjoaa visuaalisen näkymän rinnakkaisuuteen ja viiveisiin, joita CPU- tai kekoprofiilit eivät näytä.

Jäljityksen kerääminen

Kerätkää jäljitys HTTP-päätepisteen kautta:

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

Tiedostopohjainen jäljitys

Käyttäkää runtime/trace-pakettia jäljityksen ohjelmalliseen tallentamiseen:

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

go test -trace

Kerätkää jäljitys testien tai benchmarkien suorittamisen aikana:

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

Jäljityksen katselin

Jäljityksen katselin (go tool trace) avautuu selaimessa ja näyttää goroutinejen aikajanat, roskienkeräystapahtumat, keon koon sekä kunkin goroutinen pinojäljet millä tahansa ajanhetkellä.

Goroutinejen analysointi

Goroutine Analysis -näkymä ryhmittelee goroutinet funktion mukaan ja näyttää, kuinka kauan kukin goroutine viettää eri tiloissa: käynnissä, ajettavissa (odottaa P:tä), estyneenä (kanavan, mutexin tai järjestelmäkutsun vuoksi) ja lepotilassa.

Ajoittimen viiveen löytäminen

Pitkä "runnable"-aika tarkoittaa, että goroutinet ovat valmiita suoritettaviksi mutta niitä ei ajoiteta. Tämä osoittaa, että liian monet goroutinet kilpailevat GOMAXPROCS P -konteksteista tai että prosessilla ei ole riittävästi CPU-aikaa.

Roskienkeräyksen vaikutus

Roskienkeräyksen stop-the-world-keskeytykset näkyvät harmaina palkkeina kaikkien goroutinejen kohdalla. Pitkät keskeytykset tai usein toistuva roskienkeräys viittaavat liialliseen allokointiin — yhdistäkää tulokset kekoprofilointiin allokointien vähentämiseksi.

Käyttäjän merkinnät

Lisätkää jäljitykseen mukautettuja alueita käyttämällä trace.WithRegion- ja trace.Log-toimintoja, jotta omat koodiosionne on helpompi analysoida.

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

task ja region

trace.NewTask ryhmittelee toisiinsa liittyvät alueet nimetyn tehtävän alle, joten voitte mitata loogisen toiminnon päästä päähän ulottuvan viiveen useiden goroutinejen yli.

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

Jäljitys ja profiili

CPU-profiili: mitkä funktiot käyttävät CPU:ta ajan kuluessa. Kekoprofiili: mitkä funktiot allokoivat muistia. Jäljitys: milloin goroutinet suoritetaan ja estyvät sekä miten roskienkeräys limittyy suoritukseen — eri työkalut eri kysymyksiä varten.

Pikatarkistus

Mitä "runnable"-goroutinen tila tarkoittaa suoritusjäljityksessä?

Kertaus: suoritusjäljitys

Tärkeimmät kohdat:

  • go tool trace näyttää goroutinejen aikajanat, roskienkeräystapahtumat ja ajoituksen
  • Kerätkää jäljitys HTTP-päätepisteen tai runtime/trace-paketin kautta
  • Runnable-aika → ajoittimen kilpailu; roskienkeräyksen keskeytykset → liialliset allokoinnit
  • Käyttäjän merkinnät (WithRegion, NewTask) merkitsevät omat koodiosiot
Aloita maksutta

Opi Go tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Suorituksen jäljitys” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Go Academy-oppimispolun 3 oppituntia, myös oppitunnin “Suorituksen jäljitys”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Go Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Suorituksen jäljitys”?

go tool trace goroutine-tason analyysiin Harjoittelet Go Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Go Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Go Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Suorituksen jäljitys”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Go Academy-oppitunnilla?

Kyllä. Jokainen Go Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Benchmarkien kirjoittaminen testing.B:llä
  2. Suorittimen profilointi pprofilla
  3. Keon ja varausten profilointi
  4. Suorituksen jäljitys
← Takaisin: Go Academy