Profilage sur macOS avec Instruments et xctrace



Variables d’environnement

L’environnement est transmis à la commande xctrace1 au moyen des options --env. À partir d’un fichier env.dat contenant les valeurs des variables d’environnement (par exemple issues d’export), la commande suivante, sur une seule ligne, permet d’obtenir les options à passer à xctrace :

xcrun --find xctrace
 awk '{print "--env "$0" \\"}' env.dat


Modèles

Le modèle le plus couramment utilisé pour le profilage est Time Profiler, qui permet de profiler l’utilisation du CPU.

Pour lister tous les modèles disponibles, utilisez :

xcrun xctrace list templates

L’option --template permet de sélectionner un modèle. Par exemple :

 --template 'Time Profiler'  


Autres options


Exemple

La commande ci-dessous a été utilisée pour profiler gemc avec le modèle Time Profiler :


 rm -rf cpu.trace ; xcrun xctrace record \
  --template 'Time Profiler' \
  --output cpu.trace \
  --target-stdout gemc.log \
  --env C12BFIELDS=/opt/projects/ceInstall/macosx15-clang17/clas12_cmag/1.1 \
  --env CLAS12_CMAG=/opt/projects/ceInstall/macosx15-clang17/clas12_cmag/1.1 \
  --env DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH \
  --env FIELD_DIR=/opt/projects/ceInstall/noarch/data/magfield  \
  --env G4ABLADATA=$G4ABLADATA \
  --env G4DATA_DIR=$G4DATA_DIR \
  --env G4ENSDFSTATEDATA=$G4ENSDFSTATEDATA \
  --env G4INCLDATA=$G4INCLDATA \
  --env G4LEDATA=$G4LEDATA \
  --env G4LEVELGAMMADATA=$G4LEVELGAMMADATA \
  --env G4LIB=$G4LIB \
  --env G4NEUTRONHPDATA=$G4NEUTRONHPDATA \
  --env G4PARTICLEXSDATA=$G4PARTICLEXSDATA \
  --env G4PIIDATA=$G4PIIDATA \
  --env G4RADIOACTIVEDATA=$G4RADIOACTIVEDATA \
  --env G4REALSURFACEDATA=$G4REALSURFACEDATA \
  --env G4SAIDXSDATA=$G4SAIDXSDATA \
  --env G4TENDLDATA=$G4TENDLDATA \
  --env GEMC_DATA_DIR=$GEMC_DATA_DIR \
  --launch -- /opt/projects/gemc/clas12Tags/source/gemc \
    /Users/ungaro/rga_spring2019.gcard \
    -USE_GUI=0 -N=100 -PRINT_EVENT=1 -BEAM_P="e-, 4*GeV, 20*deg, 20*deg"





Profilage sur Linux avec valgrind




Prérequis

Assurez-vous que l’exécutable est compilé avec les options suivantes afin d’activer le profilage :




Utilisation de Valgrind

Valgrind peut être utilisé pour profiler des applications C++ sous Linux :

valgrind --tool=callgrind --callgrind-out-file=callgrind.out.%p \
  --dump-instr=yes --skip-plt=yes \
  /path/to/your/application options

Explication des options




Visualisation des résultats

qcachegrind callgrind.out.<PID>

Les actions suivantes peuvent rendre l’affichage plus lisible :




  1. assurez-vous que xctrace pointe bien vers celui de Xcode : ↩