multi-threaded-application.out
PID 10000を使用してUbuntuで実行されるCPU集約型アプリケーションがあるとします。 Tidが10001、10002、10003、10004の4つのスレッドがあります。各スレッドが特定の時間にどのスレッドコアで予約されているかを知りたいです。
試しましたが、/proc/<pid>/tasks/<tid>/status
特定のスレッドの実行を担当するコアIDに関する情報が見つかりませんでした。
この質問はある程度関連しています。これで。
どんな助けでも大変感謝します。
答え1
次のコマンドはトリックを実行します。
ps -mo pid,tid,%cpu,psr -p <main process ID>
オプションの説明:
-m
- プロセス後のスレッドの表示-o
- プロセスID、「ディスパッチ可能なエンティティを表す一意の番号」(スレッドID)、CPU使用率、およびプロセスが存在するプロセッサを表示するカスタムフォーマット今割り当て-p
特定のプロセスIDについて
上記はps
macOS / BSDではなくLinuxにのみ適用されます。
答え2
ヘルプメニューを表示するtop
ためにクリックして説明します。h
F
フィールド用- マーク付きのコンテンツは、
*
表示用にマークされたコンテンツです。 P
どちらを探す最後に使用したCPU(SMP)- キーボードの下矢印キーを使用してハイライトを下に移動し、スペースバーを押してハイライトを追加します
P
。*
- キーボードの下矢印キーを使用してハイライトを下に移動し、スペースバーを押してハイライトを追加します
- Escをクリックして実行中のトップディスプレイに戻り、
P
CPUコア番号に対応する新しい列を確認します。 H
スイッチ糸スイッチs
表示遅延を更新するには、デフォルトの3秒ではなく1秒を好みます。必要に応じて0.1を選択できます。i
u
アイドルプロセスをオンまたはオフにしますo
。W
P
これからtopを実行したときにこの列が表示されるように、このtop設定を保存してください。