私が (Win/nix で) 指定したスレッドでない限り、アプリケーションのすべてのスレッドに対して特定の CPU コアでの実行を禁止する方法は?
スレッドまたはプロセスを特定の CPU コアにバインドするには、OS-API 関数 (POSIX の sched_setaffinity() および WINAPI の SetProcessAffinityMask()、SetThreadAffinityMask()) を使用できます。
しかし、必要に応じて、オペレーティング システムで現在実行されている多くのサードパーティ製アプリケーションの他のスレッドがこれらの核で開始されないようにするには、どうすればよいでしょうか?
UPDATE : リアルタイム システムが必要です - スレッドがコンテキストの切り替えや一時的な中断を起こさないように指定する必要があります。
可能な解決策:
- QNX などのリアルタイム OS を使用する
- プロセッサコアへのバインドに加えて、リアルタイムの優先度を設定します
- XEN 仮想化を使用して、オペレーティング システム全体にプロセッサ コアを分散
ページ フォールトは、固定メモリを使用して簡単に解決できます: (POSIX) mlock() または (WINAPI) VirtualLock()