2009-12-26 8 views
5

Je lis http://lse.sourceforge.net/locking/dcache/dcache_lock.html, dans lequel le temps spinlock pour chaque fonction est mesurée:Comment mesurer les conflits de verrouillage?

SPINLOCKS   HOLD   WAIT 
    UTIL CON MEAN( MAX) MEAN( MAX)(% CPU)  TOTAL NOWAIT SPIN RJECT NAME 
    5.3% 16.5% 0.6us(2787us) 5.0us(3094us)(0.89%) 15069563 83.5% 16.5% 0% dcache_lock 
0.01% 10.9% 0.2us(7.5us) 5.3us(116us)(0.00%) 119448 89.1% 10.9% 0% d_alloc+0x128 
0.04% 14.2% 0.3us( 42us) 6.3us(925us)(0.02%) 233290 85.8% 14.2% 0% d_delete+0x10 
0.00% 3.5% 0.2us(3.1us) 5.6us( 41us)(0.00%)  5050 96.5% 3.5% 0% d_delete+0x94 

Je voudrais savoir où ces statistiques proviennent. J'ai essayé oprofile, mais il semble que l'oprofile ne puisse pas mesurer la tenue du verrou et le temps d'attente pour un verrou spécifique. Et drd de valgrind ralentit trop les applications, ce qui rendra le résultat moins précis et consommera trop de temps. mutrace semble bon, mais comme son nom l'indique, je crains qu'il ne puisse que tracer des exclusions de mutex.

Y a-t-il un autre outil, ou comment utiliser les outils que j'ai mentionnés plus haut, pour obtenir des statistiques sur les conflits de verrous?

Merci pour votre réponse.

Répondre

3

Enfin je trouve l'outil de mesure de la performance utilisé dans l'article, qui a besoin de patcher le noyau.

La page d'introduction peut être trouvée à http://oss.sgi.com/projects/lockmeter/, et le dernier patch du noyau correspond à la version du noyau 2.6.16, que vous pouvez télécharger here.

2

Une façon de dire est juste de le faire fonctionner, le mettre en pause, et prendre un random stackshot de tous les threads. Puis recommencez, plusieurs fois. Ensuite, la fraction d'échantillons de pile qui se termine par le code de verrouillage est le pourcentage de temps que vous recherchez, à peu près. Il vous dira également à quels endroits le verrouillage est effectué. Si vous êtes après la précision, prenez plus d'échantillons. Cela fonctionne dans n'importe quelle langue ou système d'exploitation.

Questions connexes