スレッドがどのコアで実行されているかを確認するには?

スレッドがどのコアで実行されているかを確認するには?

multi-threaded-application.outPID 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について

上記はpsmacOS / BSDではなくLinuxにのみ適用されます。

答え2

ヘルプメニューを表示するtopためにクリックして説明します。h

  • Fフィールド用
  • マーク付きのコンテンツは、*表示用にマークされたコンテンツです。
  • Pどちらを探す最後に使用したCPU(SMP)
    • キーボードの下矢印キーを使用してハイライトを下に移動し、スペースバーを押してハイライトを追加しますP*
  • Escをクリックして実行中のトップディスプレイに戻り、PCPUコア番号に対応する新しい列を確認します。
  • Hスイッチスイッチ
  • s表示遅延を更新するには、デフォルトの3秒ではなく1秒を好みます。必要に応じて0.1を選択できます。
  • iuアイドルプロセスをオンまたはオフにしますo
  • WPこれからtopを実行したときにこの列が表示されるように、このtop設定を保存してください。

関連情報