2009-12-26 13 views
5

, burada her fonksiyonlar için spinlock süresi ölçülür:Kilit çekişimi nasıl ölçülür? Ben <a href="http://lse.sourceforge.net/locking/dcache/dcache_lock.html" rel="noreferrer">http://lse.sourceforge.net/locking/dcache/dcache_lock.html</a> okuyorum

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 

ben bu istatistikler nerede olduğumuzu bilmek istiyorum. Oprofile denedim, ancak oprofile belirli bir kilit için kilit tutma ve bekleme süresini ölçemez. Ve valgrind'in drd'si uygulamaları çok yavaşlatır, bu da sonucun daha az doğru olmasını sağlar ve ayrıca çok fazla zaman harcar. mutrace iyi görünüyor, ancak adından da anlaşılacağı gibi, ben sadece muteks dışlamalarını izleyebilir.

Kilit çekişme istatistikleri almak için başka bir araç veya yukarıda bahsettiğim araçları nasıl kullanacağım?

Cevabınız için teşekkür ederiz.

cevap

3

Son olarak, makalede kullanılan ve çekirdeğin çekilmesi gereken performans ölçme aracını buluyorum.

Giriş sayfası http://oss.sgi.com/projects/lockmeter/ adresinde bulunabilir ve en son çekirdek yaması, here karşıdan yükleyebileceğiniz çekirdek sürüm 2.6.16'ya karşılık gelir.

2

Anlatmanın bir yolu sadece koşturup, duraklatmak ve tüm iş parçacıklarının random stackshot numaralı kısmını almaktır. Sonra tekrar, birkaç kez yap. Ardından, kilitleme kodunda sona eren yığın örneklerinin kesirleri, kabaca, sonra olduğunuz sürenin yüzdesidir. Ayrıca, kilitlemenin hangi konumlarda gerçekleştirildiğini de söyleyecektir. Doğruluğunuz varsa, daha fazla örnek alın. Bu herhangi bir dilde veya işletim sisteminde çalışır.