問題タブ [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.
c - Linux で C または C++ からプロセスの CPU アフィニティを設定する方法は?
Linux オペレーティング システムの c/c++ でプロセスの CPU アフィニティを設定するプログラムによる方法はありますか?
winapi - 論理プロセッサを物理プロセッサにマッピングする
デュアル クアッド コアのGetProcessAffinityMask (または taskman.exe の [アフィニティの設定] ダイアログ) では、8 つの論理プロセッサが報告されます。どの論理プロセッサがどの物理プロセッサ上にあるかを確認するにはどうすればよいですか? 特に、どの論理プロセッサが同じ物理プロセッサ上にあるか?
編集:これをプログラムで行うことができない場合、通常のマッピングが何であるかを知っている人はいますか? 最初のプロセッサの最初の 4 つと 2 番目のプロセッサの次の 4 つですか、それとも最初のプロセッサが奇数番号で 2 番目のプロセッサが偶数番号ですか?
windows-xp - Windows XP で実行可能ファイルにプロセッサ アフィニティを設定する方法は?
私は時々いくつかのプロセス (常に同じ実行可能ファイルですが、その複数のインスタンス) をスピンし、CPU 時間を 100% 消費するサードパーティ アプリケーションを備えたクアッド コア システムを使用しています。また、同じボックス (IIS およびサードパーティ) で実行されている Web サービスもいくつかあります。
すべてのコアがビジーであるという問題は、このサード パーティの Web サーバーがタイムアウトになることです (IIS は正常に動作しますが、通常よりも遅くなります)。サード パーティの Web サーバーを制御することはできません。これはより大きな製品の一部であり、動作する必要があります。そこで、(SysInternals Process Explorer を介して) プロセッサ アフィニティを操作し、これらの厄介なプロセスを 4 コアのうち 3 コアに制限し、4 番目のコアをサード パーティの Web サーバー専用にしようとしましたが、非常にうまく機能しているようです。
問題は、実行中のプロセスにのみアフィニティを設定し、実行可能レベルには設定しないことです。そのため、これらのプロセスが終了し、後で新しいプロセスとして再生成された後、すべて同じになります-4つのコアすべてを使用します. そこで、Microsoft のこの ImageCfg.exe ユーティリティについてググってみましたが、Microsoft の Web サイトでダウンロードできるものが見つかりませんでした。試してみたところ、実際には機能しないと不満を漏らす人もいるようです。
アフィニティを実行可能ファイルに固定する方法はありますか?
windows-xp - Windows XP のバッチ ファイルからプロセッサ アフィニティを設定する方法
デュアル プロセッサ マシンを使用しており、両方のプロセッサでバッチ ファイルを介して実行可能ファイルを起動したいと考えています。
例: (1) プロセッサ 1 で Notepad.exe を起動し、(2) 同時にプロセッサ 2 で Notepad.exe を起動します。
現在、実行可能ファイルの起動が「困難」で、起動時に実行するにはリターンが必要だったため、バッチ ファイルで次を使用しています: echo.|DoStuff.exe
したがって、それを起動して、各プロセッサで実行したいと思います。
フィードバックをお寄せいただきありがとうございます。
PS上記のように実行可能ファイルにリターン文字をエコーで送信する必要があるため、「開始」が機能するとは思わない。
PSS これは Windows XP ソリューション用です。ありがとう。
benchmarking - ある CPU コアの実行速度が他のコアよりも遅いのはなぜですか?
私は大規模な科学アプリケーションのベンチマークを行っていましたが、同じ入力でも実行速度が 10% 遅くなることがありました。よく調べた結果、私のクアッド コア CPU (具体的には、2.4 GHz で動作する Intel Q6600) のコア #2 で実行されている場合にのみスローダウンが発生することがわかりました。アプリケーションはシングル スレッドであり、ほとんどの時間を CPU 集中型の行列演算ルーチンに費やしています。
1 つのコアが他のコアよりも遅いことがわかったので、すべての実行でプロセッサ アフィニティを同じコアに設定することで、正確なベンチマーク結果を得ることができます。ただし、1つのコアが遅い理由を知りたいです。
CPU の遅い部分を判断するためにいくつかの簡単なテスト ケースを試しましたが、テスト ケースは遅いコア #2 でも同じ時間で実行されました。複雑なアプリケーションのみがスローダウンを示しました。私が試したテストケースは次のとおりです。
浮動小数点の乗算と加算:
/li>三角関数:
/li>整数加算:
/li>L2 キャッシュをミスさせようとしている間のメモリ コピー:
/li>
質問:ある CPU コアが他のコアよりも遅いのはなぜですか?また、CPU のどの部分がその速度低下を引き起こしているのでしょうか?
編集:より多くのテストで、いくつかのHeisenbugの動作が示されました。プロセッサ アフィニティを明示的に設定すると、コア #2 でアプリケーションの速度が低下しません。ただし、プロセッサ アフィニティを明示的に設定せずにコア #2 で実行することを選択した場合、アプリケーションの実行速度は約 10% 遅くなります。私の単純なテスト ケースでは、プロセッサ アフィニティが明示的に設定されているため、同じ速度低下が見られなかった理由がこれで説明できます。そのため、コア #2 に住みたいプロセスがあるように見えますが、プロセッサ アフィニティが設定されていると邪魔になりません。
結論:マルチコア マシン上のシングル スレッド プログラムの正確なベンチマークが必要な場合は、必ずプロセッサ アフィニティを設定してください。
assembly - マルチコア x86 プロセッサでのアフィニティの設定
(私が OS を勉強したのは本格的な SMP とマルチコアの前だったので、質問します。コードがどのように実行されているかについてのビジョンを持つのが好きです。)
プログラムに直接起動するマルチコア x86 CPU がある場合。アフィニティを制御するために必要なアセンブラ コマンドについて説明している Web サイトを誰かが推奨できますか?
c# - プログラムの CPU アフィニティを設定するには?
C# で記述されたプログラムがあり、VSTS 2008 + .Net 3.5 + Windows Vista Enterprise x86 を使用して Windows フォーム アプリケーションを開発しています。
私の現在のコンピューターはデュアルコア CPU です。プログラムの CPU アフィニティを特定の CPU で実行するように設定し、別の CPU を解放して他の仕事を実行したいと考えています。これを行う方法はありますか?コーディングまたは構成のいずれかで問題ありません。
もう少し背景として、私のプログラムは CPU を集中的に使用するため、コンピューターの 2 つの CPU リソースすべてを占有させたくないので、同時にネットワークをすばやくブラウズできるように 1 つの CPU を解放したいと考えています。:-)
前もって感謝します、ジョージ
c# - 親ウィンドウとスレッドアフィニティ
WinFormsアプリケーションを使用していて、長時間実行される操作を実行したいと考えています。たとえば、Explorerが2つの大きなファイルを並行してコピーすることを想像してみてください。これらの長時間実行される操作ごとに、IProgressDialogのインスタンスを作成する個別のUIスレッド(メッセージ/Application.Run/Application.ExitThreadのポンピングを含む)を開始しています。
Windowsのスレッドアフィニティのために、メインフォームのハンドルをHandleRefにパッケージ化して、別のUIスレッドにある進行状況ダイアログの所有者/親として渡すことは合法ですか?セカンダリUIスレッドからメインウィンドウのハンドルにアクセスしておらず(デバッグモードではクロススレッド例外はありません)、ネイティブ関数に渡すだけです。
ありがとう。
linux - Linux カーネル モードからプロセスのアフィニティを設定する方法は?
カーネルモジュールでプロセスのCPUアフィニティを設定するにはどうすればよいですか? ユーザーモードには syscall がありますがsched_setaffinity
、同等のカーネルモードを探しています。
Linux カーネル コードには、 という関数もありますsched_setaffinity
。sys_sched_setaffinity
によって呼び出される関数から呼び出されsystem_call
ます。どうやら、これは私が使いたい機能です。システムコールと同じ名前なのがちょっと不安なんですけどね。
しかし、誰もが知っているように、最善の方法は試してみることです。それで私はそうしました、そして私のモジュールはコンパイルされました。ただし、モジュールをロードしようとすると、名前sched_setaffinity
が未定義であると不平を言います。
multithreading - 特定のpthreadのCPUアフィニティを設定する方法は?
特定のpthreadのCPUアフィニティを指定したいと思います。私がこれまでに見つけたすべてのリファレンスは、スレッド(pthread_t)ではなくプロセス(pid_t)のCPUアフィニティの設定を扱っています。pthread_tを渡していくつかの実験を試みましたが、予想どおり失敗しました。私は不可能なことをしようとしていますか?そうでない場合は、ポインタを送っていただけますか?どうもありがとう。