2011-01-08 1 views
2

J'ai une application écrite en C++ que quelqu'un d'autre a écrite de manière à tirer le maximum des caches cpu. Cette application fonctionne sur un système d'exploitation Ubuntu invité qui utilise la paravirtualisation. J'ai couru le cachegrind et ai reçu des taux d'absence de cache très bas.Cachegrind sous Xen

Étant donné que mon système d'exploitation est virtualisé, puis-je être sûr que ces valeurs sont correctes en montrant que le cache de cpu est bien utilisé pour mon application?

+0

Le mot-clé ici est "supposé". Les programmeurs sont très bons pour se tromper sur ce qui se passe, du point de vue temporel, dans un programme. La première chose que je suggère est de goûter à la chose et de voir ce qu'elle fait vraiment. [Voici un exemple.] (Http://stackoverflow.com/questions/926266/performance-optimization-strategies-of-last-resort/927773#927773) –

+0

+1 Bonne question. Je travaille à travers cela maintenant, aussi. Des mises à jour depuis la question d'origine? – Iterator

+0

@Iterator Je n'ai jamais vraiment trouvé un bon moyen de tester cela et mon organisation a finalement déplacé l'application sur sa propre machine autonome plutôt que de la garder virtualisée. –

Répondre

-1

Cachegrind est un simulateur. Une CPU réelle peut réellement fonctionner différemment (par exemple, votre CPU réelle peut avoir une hiérarchie de cache différente de cachegrind, différentes tailles de cache, une politique de remplacement différente et ainsi de suite). Vous auriez besoin de regarder les compteurs de performance des processeurs réels pour savoir avec certitude à quel point votre programme fonctionnait vraiment sur du matériel réel en ce qui concerne le cache.

Questions connexes