2015-12-17 2 views
4

J'ai un programme C++ et je voudrais quantifier ses performances en vérifiant le nombre de hits et d'échecs par rapport au cache CPU.Comment mesurer les hits et les échecs de cache L1, L2, L3 dans OSX

Quelle est la meilleure façon de le faire?

J'ai essayé d'utiliser Intel's Performance Counter Monitor mais il utilise une extension de noyau non signée qui est désactivée sur Yosemite. Je peux évidemment désactiver la vérification pour ne pas charger les kexts non signés mais je ne voudrais pas aller dans ce sens.

Y at-il un autre moyen que je ne connais pas?

+0

Il existe une version de Cachegrind apparemment disponible pour OSX. Il peut mesurer à la fois les échecs de cache et les erreurs de branchement. –

Répondre

2

Vous pouvez activer les extensions de noyau non signés avec OS X (redémarrage après requis):

sudo nvram boot-args=kext-dev-mode=1 

Cela permet le mode développeur sur votre machine et vous pouvez exécuter Intel compteur de performance moniteur tant à elle prend en charge Mac OS X 10.10 (Yosemite) en général.

Ne pas oublier de le désactiver à nouveau après avoir terminé avec les tests (sécurité problème autrement):

sudo nvram boot-args=kext-dev-mode=0 

Pour autant que je sais l'outil d'Intel est beaucoup mieux que mouture du cache car il utilise les compteurs réels du matériel au lieu de simuler un cpu et ses caractéristiques de cache dans le logiciel.

0

Vous pouvez, en principe, demander un certificat de signature kext, si vous êtes un membre du programme de développement Apple, et signer le kext vous-même. Mais ils ne les distribuent généralement pas pour un usage interne, et vous recommandons d'activer kext-dev-mode ou de désactiver SIP (selon la version). Un autre bon chemin serait de demander à Intel de fournir une version signée de leur kext!