Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

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
Vastaavasti seuraava komento käyttää 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
Tuloksia voidaan tarkastella komennolla 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
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 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.

Lisätietoja

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta