Hyppää sisältöön

perf

Page undergoing cleanup after Puhti and Mahti retirement

This page contains outdated references to Puhti and/or Mahti, which have now been decommissioned. The page is undergoing changes to reflect CSC's new supercomputer Roihu.

Learn more about Roihu.

perf on suorituskyvyn seurantatyökalu Linux-järjestelmille. Se tarjoaa pääsyn Performance Monitor Unitin (PMU) laitteistolaskureihin ja mahdollistaa kevyen suorituskyvyn profiloinnin. Tyypillisiä käyttötapauksia ovat laitteistotapahtumien, kuten välimuisti- tai haarautumishutien, seuranta tai tietyn tyyppisten käskyjen laskeminen.

Saatavuus

perf on saatavilla kaikilla CSC:n supertietokoneilla.

Lisenssi

Käyttö on mahdollista sekä akateemisiin että kaupallisiin tarkoituksiin.

Käyttö

Profilointi perf-työkalulla tehdään käynnistämällä ja ajamalla sovellus perf-komennon kautta haluamillasi valinnoilla. Yleisimmissä käyttötapauksissa käytetään komentoja perf stat, jolla kerätään tilastoja suorituskykylaskureista, sekä perf record, joka tallentaa ohjelmastasi yksityiskohtaisen suorituskykyprofiilin myöhemmin perf report -komennolla tarkasteltavaksi. Täydellinen luettelo käytettävissä olevista perf-komennoista voidaan tulostaa komennolla perf help.

Esimerkiksi komento perf stat -d ./my_application kerää ja tulostaa my_application-sovelluksen yleisiä CPU-tilastoja. Oletuksena perf stat seuraa esimerkiksi käskyjen ja kellosyklien määriä, ja valitsimella -d saadaan lisäksi välimuistin latausten ja ohilyöntien laskurit.

Huomaa, että suorituskykymittaukset perf-työkalulla tulee tehdä laskentasolmuilla Slurmin työnhallintajärjestelmää käyttäen. Kirjautumissolmuilla kerätty perf-data ei yleensä ole luotettavaa. Tässä on esimerkki yksirivisestä komennosta yllä olevan perf stat -komennon suorittamiseen laskentasolmulla:

srun --account=<project_name> --partition=small --nodes=1 --ntasks-per-node=1 --cpus-per-task=1 --time=0:10:00 perf stat -d ./my_application
Vastaavasti seuraava komento käyttää perf record -komentoa suorituskykyprofiilin tallentamiseen tiedostoon nimeltä perf.data:
srun --account=<project_name> --partition=small --nodes=1 --ntasks-per-node=1 --cpus-per-task=1 --time=0:10:00 perf record -o perf.data ./my_application
Tuloksia voidaan tarkastella komennolla perf report -i perf.data. Varmista parhaiden tulosten saamiseksi, että ohjelmasi on käännetty valitsimella -g.

Tiettyjen tapahtumien seuranta

Muiden laitteisto- tai ohjelmistotapahtumien laskenta voidaan ottaa käyttöön perf stat- tai perf record -komennon valitsimella -e. Luettelo käytettävissä olevista tapahtumista saadaan komennolla perf list. Huomaa, että tapahtumakoodit ovat yleensä erilaisia eri järjestelmissä. Esimerkiksi Mahdissa ja LUMIssa liukulukutoimintojen (FLOPs) määrän laskemiseen käytettävä tapahtumakoodi on fp_ret_sse_avx_ops.all, ja sitä voidaan käyttää seuraavasti:

srun --account=<project_name> --partition=small --nodes=1 --ntasks-per-node=1 --cpus-per-task=1 --time=0:10:00 perf stat -e fp_ret_sse_avx_ops.all ./my_application
Puhdissa vastaava tapahtumakoodi on fp_arith_inst_retired.scalar_double kaksinkertaisen tarkkuuden FLOPeille ja fp_arith_inst_retired.scalar_single yksinkertaisen tarkkuuden FLOPeille.

Rajoitukset CSC:n supertietokoneilla

Huomaa, että jotkin perf-työkalun ominaisuudet on poistettu käytöstä CSC:n supertietokoneilla tietoturvasyistä. Erityisesti asetus perf_event_paranoid on asetettu arvoon 2, mikä estää järjestelmänlaajuisen ja ytimen tason profiloinnin muilta kuin ylläpitokäyttäjiltä. Käytännössä tämä tarkoittaa, että perf-valitsimia, kuten -a (seuraa kaikkia CPU:ita), tai ytimen tracepoint-tapahtumien seurantaa ei ole mahdollista käyttää.

Voit lukea lisää perf-työkalun tietoturvatasoista Linux-ytimen dokumentaatiosta.

Lisätietoja

Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

Kerro meille miten voisimme parantaa tätä sivua ottamalla meihin yhteyttä .