Question

Je veux estimer les frais généraux de performance en raison de manque de TLB sur une machine x86-64 (Intel Nehalem) sous Linux. Je souhaite obtenir cette estimation en utilisant des compteurs de performance. Est-ce que quelqu'un a quelques conseils sur ce qui est la meilleure façon d'estimer cela?

Merci Arka

Était-ce utile?

La solution

Si vous pouvez obtenir l'accès à un système « Westmere » les caractéristiques de performance de votre code devrait être assez semblable à ce que vous avez sur le « Nehalem », mais vous aurez accès à un nouvel événement de compteur de performance matériel que les mesures presque exactement ce que vous voulez.

Sur Westmere, la meilleure estimation de la performance perdue en attendant TLB à traiter est probablement de la performance matériel 08H de l'événement, Masque 04H « DTLB_LOAD_MISSES.WALK_CYCLES », qui est décrit comme comptage « Cycles page Mlle gestionnaire est occupé avec une promenade de page en raison d'un manque de charge dans le deuxième niveau TLB ». Ceci est décrit dans « Intel® 64 et IA-32 Architectures Logicielles Manuel du développeur Volume 3B: système Guide de programmation, partie 2" (numéro de document: 253669), disponible en ligne à http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3b- partie-2-manual.html

La raison pour laquelle cet événement est nécessaire est que le temps de traitement TLB est dominé par le temps nécessaire pour lire la ligne de cache contenant l'entrée de table de page. Si cette ligne de cache est dans le cache L2, puis les frais généraux d'un manque TLB sera très faible (de l'ordre de 10 cycles). Si la ligne est dans le cache L3, alors peut-être 25 cycles. Si la ligne est en mémoire, puis ~ 200 cycles.

  • S'il y a aussi un manque dans les caches de traduction de la page de niveau supérieur, il faudra plusieurs voyages en mémoire pour trouver et récupérer l'entrée de table de page désirée (par exemple, https://stackoverflow.com/a/9674980/1264917 ).
  • Sur certains processeurs les compteurs de cache L2 peuvent vous dire combien de table de promenades a frappé et manqués dans la L2, mais pas sur Nehalem. (Il ne serait pas aider beaucoup dans ce cas puisque TLB marche qui a frappé dans la L3 sont également assez rapide et ce que vous voulez vraiment sont les promenades TLB qui doivent aller à la mémoire.)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top