0

高度にマルチスレッド化されたアプリケーションを実行しようとしており、さまざまなコア (0、1、2、3、4、5、6 ... 12) でそのパフォーマンスを測定したいと考えています。グーグルでタスクセットを見たのですが、

taskset 0x00000003 ./my_app

しかし、Fedora のシステム モニターを見ると、100% を実行している 1 つのコアのみが表示され、他のコアは 12%、0% などしか表示されません。プロセスを特定のコアで実行するように指示する方法はありますか。-t #no of cores のようなオプションも聞いた。お気に入り

./my_app -t2 

0および1コアの場合..しかし、これも効果がありません。何が間違っているのでしょうか。誰かが私を正しい方向に導いてください。

4

1 に答える 1

2

taskset 0x00000003 ./my_appmy_app プロセスのアフィニティーをコア 1 と 2 に設定します。アプリケーションがマルチスレッド化されている場合、スレッドはアフィニティーを継承しますが、コア 1 と 2 の間の分散は設定されません。

プロセス内の各スレッドのアフィニティを設定するには、プロセスの実行後に taskset を使用する (つまり、myapp を実行し、スレッド ID を調べてそれぞれを呼び出す) か、 pthreads などを使用している場合は、taskset -pc <core> <tid>スレッド作成時にアフィニティを設定します。 )。sched_setaffinitypthread_setaffinity_np

./myapp -t2をするかは、アプリケーションに固有のものです。

于 2013-02-03T07:25:20.020 に答える