2

Linux および Darwin 用の低レベル システム API はありますか?

たとえば、Ubuntu の「システム モニター」には、プロセスの「待機チャネル」列があります。プロセス内のすべてのスレッドに対して同様の出力を取得する方法はありますか?

ジョブがスレッドにディスパッチされるマルチスレッド キューイング システムがあり、ジョブがいつ開始/終了したかを示す視覚的なタイムラインがあります。それを最適化するために、ジョブが実際に実行されているとき (たとえば、1 つのプロセッサ コア上) と、ジョブがプリエンプトされているときの視覚的な表示を追加したいと考えています。

4

1 に答える 1

1

top -Hスレッドとその状態を示します。そのソースで -H スイッチをたどることは、見つけるための 1 つの方法です。ざっと見ると、の機能int cmd_threads(globalstate *gstate)commands.c設定を切り替えているようです。

更新: Procfs はその情報をユーザー空間に提供します。/proc/<pid>/task/<thread-id>/status必要なものを正確に提供します。それtopも使うものです。私のシステムからのサンプル出力は次のとおりです。

$ cat /proc/418/task/448/status | grep State
State:  S (sleeping)

そのディレクトリの下には、さらに役立つ詳細がたくさんあります。

于 2016-09-30T08:21:55.127 に答える