-
perf
perf
perf on suorituskyvyn seurantatyökalu Linux-järjestelmille.
Se tarjoaa pääsyn Performance Monitor Unitin (PMU) laitteistolaskureihin ja mahdollistaa kevyen suorituskykyprofiloinnin.
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 halutuilla 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, jota voidaan myöhemmin tarkastella komennolla perf report.
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-ohjelman yleisiä CPU-tilastoja.
Oletuksena perf stat seuraa esimerkiksi käskyjen ja kellosyklien määriä, ja valitsimella -d saadaan lisäksi
laskurit välimuistilatauksille ja ohilyönneille.
Huomaa, että suorituskykymittaukset perf-työkalulla tulee tehdä laskentasolmuilla käyttäen Slurmin työnajastusjärjestelmää.
Kirjautumissolmuilla kerätty perf-data ei yleensä ole luotettavaa. Tässä on esimerkki yhdestä komentorivistä, jolla yllä oleva perf stat
-komento suoritetaan Mahdin 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
perf record -toimintoa 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
perf report -i perf.data. Varmista parhaiden tulosten saamiseksi, että ohjelmasi on käännetty -g-lipulla.
Tiettyjen tapahtumien seuranta
Muiden laitteisto- tai ohjelmistotapahtumien laskenta voidaan ottaa käyttöön -e-valitsimella komennoissa perf stat tai perf record.
Luettelo käytettävissä olevista tapahtumista saadaan suorittamalla 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
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 turvallisuussyistä.
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 turvallisuustasoista Linux-ytimen dokumentaatiosta.