Profilointi dotnet tracen avulla
Joissain tilanteissa saattaa olla tarve profiloida ohjelmaa, jota ei ajeta paikallisella koneella. Tällöin ongelmaksi saattaa muodustua se, ettei oma rakas profilointiohjelma tue etäyhteyksiä, jolloin profilointidata pitää kerätä etäkoneella. .NET Coren kohdalla profilointidataa voi kerätä suoritettavasta ohjelmasta erillisen trace-työkalun avulla, ja alla neuvon lyhyesti kuinka homma onnistuu.
Asennus
Dotnet trace asentuu komentoriviltä seuraavalla komennolla
dotnet tool install --global dotnet-trace
tällöin trace asentuu globaaliksi työkaluksi, jolloin sitä voi käyttää mistä tahansa kansiosta. Asennuksen jälkeen terminaali/komentokehoite täytyy käynnistää uudelleen, jotta komento löytyy.
Suoritettavan prosessin löytäminen
Dotnet trace ei toistaiseksi osaa käynnistää profiloitavaa ohjelmaa, vaan ainoastaan kiinnittyä jo käynnissä olevaan ohjelmaan. Eli kun profiloitava ohjelma on käynnistetty, voi sen PID:in etsiä seuraavalla komennolla
dotnet-trace ps
alla olevassa kuvassa näkyy kaksi prosessia joihin dotnet trace voisi tarttua kiinni. Haluttu on jälkimmäinen, eli sen PID on 5322
Profiloinnin aloittaminen
Kun haluttu ohjelma on käynnistetty, käynnistetään profilointi seuraavalla komennolla
dotnet-trace collect --process-id NUMERO --format speedscope
jossa NUMERO-kohtaan tulee aiemmassa kohdassa etsitty prosessin PID (eli tässä tapauksessa 5322). --format speedscope
takaa puolestaan sen, että profilointidata tallennetaan speedscope-formaatissa, jolloin sitä voi helposti tarkastella selaimessa menemällä speedscope.app-osoitteeseen.
Profilointidatan kerääminen täytyy itse pysäyttää haluttujen operaatioiden jälkeen Ctrl+c -näppäinyhdistelmällä tai Enter:iä painamalla. Esimerkkiohjelman kohdalla seitsemässä sekunnissa saatiin aikaiseksi noin 800 kilotavua profilointidataa, joten kovin pitkiä profilointihetkiä ei kannata tehdä, jos dataa on tarkoitus tarkastella selaimessa.
Profilointidatan tarkastelu
Kun luodun trace.speedscope.json-tiedoston avaa speedscope.app-sivustolla, saa ulos graafisen esityksen siitä, mihin laskenta-aika ohjelman profiloinnin aikana on kulunut.
Oletuksena olevan Time Order -näkymän ohella kannattaa käyttää Left Heavy -näkymää, jonka avulla on helpompi hahmottaa aikoja.
⏲️