2

次のような本番環境の問題をデバッグできるように、大規模な Python プロジェクトを計測したいと考えています。

23321 07:49:57.925037 futex(0x23b2c20, FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
23321 07:50:12.435793 <... futex resumed> ) = 0

ここで、スレッドは何らかのロック (または条件変数) で 14.4 秒待機しました。

そのロックが Python コードで作成されたものなのか、サードパーティの C 拡張機能で作成されたものなのかはわかりませんが、統計的には Python が適切な推測です。

を添付した時点でstrace、この futex は既に作成されていました。アプリケーションの起動時に作成されたと思われます。

threading.Lock()オブジェクトを突き刺してthreading.Condition()、それらの基になる futex ID を見つけたいと思います。

少なくとも、これらの ID をログに記録しておけば、後で実行中のアプリケーションを strace する必要がある場合に、見た futex 呼び出しを論理的なものに解決できます。

4

2 に答える 2