2016-06-21 2 views
0

Я пытаюсь найти конфликт блокировок в своем коде, и я нашел futexes.stp в стандартной версии systemtap. Но у меня есть несколько вопросов с выходом:Как интерпретировать вывод из foutxes.stp Systemtap

stap -d /usr/local/bin/cruncher ~/futexes.stp 
(and then I run cruncher application in another term) 

auditd[1803] lock 0x564dd507f228 contended 2 times, 119 avg us 
auditd[1803] lock 0x564dd507f254 contended 28 times, 458040 avg us 
rs:main Q:Reg[1837] lock 0x5563b67c2044 contended 7 times, 2352067 avg us 
... 
cruncher[17021] lock 0x7f6c9c57914c contended 2 times, 46 avg us 
cruncher[17021] lock 0x7eff50 contended 82 times, 16 avg us 
cruncher[17021] lock 0x7f6c40901f24 contended 20 times, 109 avg us 
cruncher[17021] lock 0x7f6f38e0633c contended 4471 times, 2106 avg us 
cruncher[17021] lock 0x7dae7c0 contended 8861 times, 26 avg us 
cruncher[17021] lock 0x7f6cc2f14560 contended 2 times, 9 avg us 
cruncher[17021] lock 0x7f6c8685d024 contended 5 times, 95 avg us 
cruncher[17021] lock 0x7f6cd9e2ded4 contended 6 times, 428 avg us 
cruncher[17021] lock 0x7f6c5196937c contended 44 times, 484 avg us 
cruncher[17021] lock 0x7f6ba20c0290 contended 4 times, 8 avg us 
... 

Так вот вопросы:

  • что все эти конструкции с 0x7F .......... стек адресов? Я уверен, что это не из моего заявления. Являются ли эти библиотеки или явные мьютексы (или condvars) от имени моего приложения? Как это проверить?

  • Эти «замки» с короткими адресами - мои. Я могу проверить их с помощью команды «info symbol» gdb, но что будет хорошим способом от stap, чтобы автоматически декодировать ее в символ?

Я использую основное ядро ​​Linux 4.6.2, построенное на одном и том же поле, с последней версией системы из своего репозитория git. Приложение cruncher было построено с -g, и символы не были разделены.

Большое спасибо!

ответ

0

Адресами lock 0x7f... являются указатели пользовательского пространства, переданные в системные вызовы futex(2). Сценарий просто хранит их дословно. Вероятно, они будут отображаться внутри объекта типа glibc pthreads-mutex.

Что касается объекта ... необходимо будет добавить этап поиска адреса к символу. Вероятно, это возможно, перехватывая инициализацию мьютекса pthread другим зондом для сборки таблицы блокировок pthread. Или добавив usymdata(...) к входящим адресам futex. См. Сценарий примера mutex-contention.stp для использования обоих методов.

 Смежные вопросы

  • Нет связанных вопросов^_^