2016-06-21 4 views
0

私のコードでロック競合を見つけようとしていて、標準のsystemtapリリースでfutexes.stpが見つかりました。だからここSystemtapのfutexes.stpからの出力を解釈する方法

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とは何これらすべての構造..........アドレスをスタック?私はそれが私のアプリケーションからではないと確信しています。アプリケーションの代わりにライブラリやカーネルミューテックス(またはコンデバー)がありますか?それをどのように確認するのですか?

  • 短いアドレスのこれらの「ロック」は私のものです。私はgdbの "info symbol"コマンドでそれらを検証できますが、stapからシンボルに自動的にデコードするにはどうすればよいでしょうか?

Linux 4.6.2メインラインカーネルを使用しています。同じボックスにビルドされていて、gitリポジトリの最新のシステムタップがあります。私のcruncherアプリケーションは-gで構築され、シンボルは削除されません。

ありがとうございます!

答えて

0

lock 0x7f...アドレスがfutex(2)システムコールに渡されたユーザ空間のポインタです。スクリプトはそれらをそのままそのまま保存します。それらは、glibc pthreads-mutex型オブジェクトの内部を指し示す可能性があります。

としてその目的に...住所・ツー・シンボルルックアップステージが追加されなければならないでしょう。それはおそらくのpthreadロックのテーブルを組み立てるために、別のプローブでのpthreadミューテックスの初期化を遮断することで仕事ができます。または、着信フュテックスアドレスにusymdata(...)ルックアップを追加します。両方のテクニックの使用については、mutex-contention.stpサンプルスクリプトを参照してください。

関連する問題