実行中のスレッドのeventpollについてどのような情報を見つけることができますか?

実行中のスレッドのeventpollについてどのような情報を見つけることができますか?

次へ」ps出力にないプロセスにstraceをどのように接続しますか?

半停止プロセスをデバッグしようとしています。

strace -f親プロセスを使用して、複数のスレッドが表示されることを確認できました。

# strace -p 26334
Process 26334 attached - interrupt to quit
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, ^C <unfinished ...>
Process 26334 detached

さらなる調査:

# readlink /proc/26334/fd/607
anon_inode:[eventpoll]

私の直感では、いくつかのスレッドをデッドロックに陥ることができましたが、epollこれから進むのに十分な知識がないと言います。これらのスレッドが何をポーリングするのか、またはこのepoll記述子がどのファイル記述子にマップされているのかについての洞察を提供できるコマンドはありますか?

ベストアンサー1

この行を実行すると、straceシステム機能が返されます。明確でない場合は、epoll_wait()次のことができます。man epoll_wait次のように実装の詳細を学びます。

   epoll_wait, epoll_pwait - wait for an I/O event on an epoll file descriptor

説明epoll:

epoll API は poll(2) と同様の操作を行います。つまり、複数のファイル記述子を監視して、I/O に使用できるファイルがあるかどうかを確認します。 epoll API はエッジトリガまたはレベルトリガインターフェイスとして使用でき、監視される多数のファイル記述子に拡張されます。

したがって、プロセスがファイル記述子をブロックし、そのうちの1つでI / Oが実行されるのを待っているようです。

私は戦略を少し変更してlsof -p <pid>これらのファイルの実際の範囲を絞り込むことができるかどうかを見てみましょう。

おすすめ記事