問題タブ [affinity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
12474 参照

c# - 特定のコアでスレッドを開始する方法は?

私はクアッド コア CPU を使用しており、常にThread2 番目のコアで起動したいとします。

それはC#で可能ですか?

0 投票する
2 に答える
9547 参照

affinity - タスクセットを使用した CPU アフィニティの設定

タスクセット ツールを使用して、プログラムの 1 つに CPU アフィニティを設定しています。単一の CPU のみでアフィニティを設定するにはどうすればよいですか?

...他の CPU と同様の方法で、プログラムを CPU #2 のみで実行するようにスケジュールしていることを期待しています。私が正しいとしても、これは私が望むことを実行するための悪い方法です.IMO、助けを得ることができますか?

ありがとう、
サヤン

0 投票する
5 に答える
581 参照

multithreading - 最近では、スレッド アフィニティを OS に任せるのではなく設定する正当な理由は何ですか?

ここで「スレッドアフィニティ」の回答を検索すると、それを行うことに多くの関心が寄せられていますが、それを正当化する理由はほとんどなく、安定した QueryPerformanceTimer の結果が得られる可能性があります。

最新の OS と、最新の 4 から 6 コアの CPU を搭載した最新の 2 ソケットから 4 ソケットのワークステーション/サーバー クラスのマシンを想定すると、自分の OS のスケジューラよりも自分がよく知っていると考える正当な理由があるでしょうか? 広告アフィニティをより制御することが正しいことである現実の状況はありますか? どのような種類のパフォーマンス上の利点を実証できますか?

前回、どこかにスレッド アフィニティを設定するための本当に良いケースを見たとき (システム パフォーマンスの真の大幅な改善を示す具体的な結果によって裏付けられたように)、それは Win2K デバイス ドライバーとは関係のないものでした。しかし、私はそのようなものを何年も見ていないので、最近誰かがスレッドアフィニティを制御する必要があると言ったとき (ただし、理由ではない)、私は非常に懐疑的です... しかし、そうでないことが示されることに興味があります.

0 投票する
1 に答える
447 参照

java - Java マルチスレッド アフィニティの設定

ForkJoin フレームワークで IntelliJ を使用しており、コードの 2 つのバージョンのベンチマークを試みています。1 つは forkjoin を使用しており、もう 1 つはシーケンシャルです。残念ながら、JDK/Windows はシーケンシャルなものを 4 コアにわたってある程度自動配布するようです。シーケンシャル バージョンのアフィニティを 1 つのコアのみに強制するコンパイラ ディレクティブを与える方法はありますか?

0 投票する
1 に答える
954 参照

linux - アフィニティマスクを使用する以外に、Linuxでスレッドアフィニティを見つける方法は?

SMP Linux(2.6.18)を実行する組み込みMIPS2コアプロセッサがあります。

メインGUIスレッドのアフィニティを2つのコアの一方に割り当て、もう一方のコアをドライバー/データパス処理に使用することを計画しています。

ただし、どのスレッドがどのコアにあるかをどのように判断するのかという質問があります。

アフィニティマスクは問題なく取得できますが、どのスレッドがどのコアにあるかを判断する他の方法(/ procシステムなど)はありますか?

ありがとう。

0 投票する
6 に答える
20067 参照

linux - LinuxはハイパースレッディングコアIDを見つけます

私は今朝、どのプロセッサIDがハイパースレッドコアであるかを判断する方法を見つけようとして過ごしましたが、運がありませんでした。

set_affinity()この情報を見つけて、プロセスをハイパースレッドスレッドまたは非ハイパースレッドスレッドにバインドして、そのパフォーマンスのプロファイルを作成するために使用したいと思います。

0 投票する
2 に答える
7004 参照

linux - プロセスではなく、LinuxカーネルのCPUアフィニティを設定する

特定のプロセスではなく、Linuxカーネル(ロードされたすべてのモジュールを含む)のCPUアフィニティを設定する方法に関する情報を見つけるのに苦労しています。

これは、カーネルを常に CPU 0 で実行して I/O を処理し、L1 および L2 キャッシュを汚染する可能性があるため、他の 3 つの CPU で実行するように切り替えないためです。

前もって感謝します。

ヌリク

0 投票する
2 に答える
3523 参照

multithreading - アフィニティを設定してシングル コアでマルチスレッド プログラムを実行した場合のパフォーマンスは?

要するに:

シングル コアでマルチスレッド アプリを実行すると、どのようなシナリオでパフォーマンスが低下する可能性がありますか?

マルチスレッド アプリのアフィニティを 1 つのコアのみを使用するように設定するのはどうですか?

長文:

独自のスレッドで 2D エンジンの物理演算を実行しようとしています。それは機能し、最初はパフォーマンスが正常に見えましたが、ゲームを 10K FPS で実行し、物理を 120FPS で実行するように指示し、タスク マネージャーに移動して、プログラムが 1 つのコアのみを使用できるようにアフィニティを設定しました。

FPS は、アフィニティを 1 つのコアに設定する前は ~1700 でしたが、その後は ~70FPS になりました。こんなに減るとは思わなかった。私は、ゲームを 300 FPS で実行し、物理演算を 60 FPS で実行するように指示しました。

同じことが起こりました。

あまり考えていなかったので、エンジンの改造を続けました。描画コードの一部を 300 FPS、物理演算用に 60FPS に変更した後、後でもう一度テストしました。すべてのコアを許可すると、300 FPS を問題なく管理でき、シングル コア FPS との親和性は 4 に低下しました。シングル コアでマルチスレッド アプリを実行するのがそれほど悪いことではないことがわかりました。アフィニティを単一のコアに設定します。

これは、レンダリング/物理がどのように実行されるかについてです...

ループ開始

(1.0 / FPS) が経過するまで入力を収集します。

更新を呼び出します。

ゲーム内で物理データが使用されるため、物理スレッド ミューテックスをロックします。この更新呼び出しのすべてが完了するまで、エンジンは何も更新しないようにします。

Draw 関数オブジェクト (何を描画するか、どこに描画するか、どのように描画するかを保持する) を Render キューに送信するゲーム内のすべてを更新します。

ミューテックスのロックを解除します。

レンダラーは各関数オブジェクトで operator() を呼び出し、それらをキューから削除します。

画面を更新します。

ループを繰り返します。

物理スレッド ループ:

// 注: 自動ミューテックスは、コンストラクタでミューテックスをロックし、デストラクタでロックを解除するために作成した単純なオブジェクトです。Allegro 5 のスレッド機能を使用しています。

0 投票する
2 に答える
448 参照

c++ - しばらくすると、プログラムがすべてのコアを使用しなくなる原因は何ですか?

3 枚のビデオ カードからビデオをキャプチャして表示するプログラムを作成しました。フレームごとに、フレームを Jpeg に圧縮し、ディスクに書き込むためにキューに入れるスレッドを生成します。これらのファイルから読み取り、独自のスレッドでデコードする他のスレッドもあります。通常、これは問題なく動作します。これは、6 つの CPU コアすべての約 70 ~ 80% を使用する、かなり CPU を集中的に使用するプログラムです。しかし、しばらくすると、エンコーディングが突然遅くなり、プログラムはビデオを十分に速く処理できなくなり、フレームを落とし始めます。CPU 使用率を確認すると、1 つのコア (通常はコア 5) があまり機能していないことがわかります。

これが発生した場合、プログラムを終了して再起動しても問題ありません。CPU 5 の使用率は依然として低く、プログラムはすぐにフレームのドロップを開始します。保存したビデオをすべて削除しても効果はありません。コンピューターを再起動することが唯一の解決策です。ああ、プログラムのアフィニティをセミアイドリングコア以外のすべてを使用するように設定すると、別のコアで同じことが起こるまで機能します。これが私のセットアップです:

  • AMD X6 1055T (クール & 静音 OFF)
  • GA-790FX-UD5 マザーボード
  • 4Gig RAM アンギャングド 1333Mhz'
  • Blackmagic Decklink DUO キャプチャー カード (x2)
  • Linux - カーネル 2.6.32.29 を搭載した Ubuntu x64 10.10

私のアプリは以下を使用します:

  • libjpeg-ターボ
  • posix スレッド
  • デッキリンク API
  • Qt
  • C/C++ で書かれています
  • 動的にリンクされたすべてのライブラリ

Linux がコア上でスレッドをスケジュールする方法に何らかの問題があるように思えます。または、私のプログラムがひどく混乱して、プログラムを再起動するのに役立たない方法はありますか?

読んでくれてありがとう、どんな入力でも大歓迎です。私は立ち往生しています:)

0 投票する
2 に答える
2144 参照

multithreading - CPU ソケット アフィニティを強制する方法は?

スレッド/プロセス アフィニティを適用して、特定のスレッド/プロセスをさまざまな OS の CPU/コアにバインドする方法があることを知っています。CPU ソケット アフィニティを強制する方法があるかどうか疑問に思っています。つまり、スレッド/プロセスを、マルチプロセッサ チップを収容できる CPU ソケットにバインドするように強制します。

チップあたりのマルチプロセッサが日々増加しているという事実により、問題が生じます。