Я читаю http://lse.sourceforge.net/locking/dcache/dcache_lock.html,, в котором измеряется время спин-блокировки для каждой функции:
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
Я хотел бы знать, откуда эта статистика. Я пробовал oprofile, но кажется, что oprofile не может измерить удержание блокировки и время ожидания для конкретной блокировки. А drd от valgrind слишком сильно замедляет работу приложений, что делает результат менее точным, а также отнимает слишком много времени. mutrace кажется хорошим, но, как следует из названия, я боюсь, что он может отслеживать только исключения мьютекса.
Так есть ли какой-либо другой инструмент или как использовать инструменты, которые я упомянул выше, для получения статистики конфликтов блокировки?
Спасибо за ваш ответ.