Как измерить конкуренцию за блокировку?

Я читаю 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 кажется хорошим, но поскольку имя указывает, я боюсь, что это может только проследить взаимоисключающие исключения.

Так есть ли какой-либо другой инструмент, или как использовать инструменты, которые я упомянул выше, для получения статистики конкуренции за блокировку?

Спасибо за Ваш ответ.

6
задан ZelluX 26 December 2009 в 18:14
поделиться

2 ответа

Наконец, я нахожу инструмент для измерения производительности, используемый в статье, который должен заплатить ядро .

Вступительную страницу можно найти по адресу http://oss.sgi.com/projects/lockmeter/, а последний патч ядра соответствует версии ядра 2.6.16, которую вы можете скачать здесь.

.
4
ответ дан 17 December 2019 в 02:29
поделиться

Один из способов сказать - просто запустить его, поставить на паузу и сделать случайный стековый снимок из всех потоков. Затем повторите, несколько раз. Тогда доля примеров стека, которые заканчиваются в коде блокировки, примерно равна проценту времени, которое вам нужно. Она также подскажет, в каких местах выполняется блокировка. Если вам нужна точность, возьмите больше образцов. Это работает на любом языке или в любой операционной системе.

2
ответ дан 17 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: