Enregistrer les valeurs des compteurs du moniteur de performances (événements PM) sous OS X sans instruments

Dans les instruments de Xcode, il existe un outil appelé Counters qui expose les informations de compteur de bas niveau fournies par le processeur, telles que le nombre d’instructions exécutées ou le nombre d’échecs de cache:

capture d'écran de l'outil Compteurs dans Instruments

Ceci est similaire au syscall Linux perf_event_open introduit dans Linux 2.6.32. Sous Linux, je peux utiliser perf_event_open puis démarrer / arrêter le profilage autour de la section de mon code qui m’intéresse. J’aimerais enregistrer le même type de statistiques sur OS X: compter les instructions (etc.) du code prend, et obtenir le résultat d’une manière automatisée. (Je ne veux pas utiliser l’interface graphique des instruments pour parsingr les données.)

Existe-t-il des API qui permettent cela (ex: en utilisant dtrace ou similaire)? À partir de certaines recherches, il semble que le privé AppleProfileFamily.framework puisse avoir les crochets nécessaires, mais il est difficile de savoir comment s’y prendre pour le connecter ou l’utiliser.

Dans GNU / Linux, j’utilise le PCM d’Intel pour surveiller l’utilisation du processeur. Je ne suis pas sûr que cela fonctionne correctement sur OSX, mais pour autant que je sache, le code source inclut le répertoire MacMSRDriver. Je n’ai aucun appareil OSX, ne le testez jamais de toute façon.

Si cette source est compilée sur votre appareil, exécutez simplement:

pcm.x -r -- your_program your_program_parameter

ou si vous voulez un profilage avancé, utilisez plutôt pcm-core.x ou vous pouvez créer votre propre code basé sur pcm-core.cpp