CPUコアのスレッドの分類機能
-
20-09-2019 - |
質問
私はプロセス間の超高容量のメッセージ配信のためのマルチスレッドの共有メモリメッセージングシステムを書くことにするつもりです。メッセージは、Webサーバーのワーカースレッドから発信されます。私は、同じCPUシェア上のコアCPUのキャッシュの局所性を利用したいと思います。私はこのIPCシステムの受信側のワーカースレッドを覚ますとき、私は同じCPU上でスレッドを覚ますようにします。
言ったスレッドのコンテキストから - - 使用して私は、Linux(genaralでprefferably POSIX)とWindows APIの呼び出しと私は、私は、実行中のスレッドIDを分類できるようになる情報を抽出するために必要bitmaskingのために必要次のstructます:
struct thread_core_id
{
uint16_t cpu_Id;
uint16_t core_Id;
};
両方のプラットフォームのための機能が大幅に理解されるであろう。私は、これはシステムコールなしで行うことができます願っています - 。すなわち、コンテキスト・スイッチを
- 編集 -
私は、現時点でのx86に焦点を当てたんだけど、他のアーキテクチャも同様に有用であろう。
解決
Linuxの場合、具体的には、あなた/proc/cpuinfo
と/sys/devices/system/cpu/cpu*/cache
のうち、必要な情報を取得し、sched_{s|g}etaffinity()
呼び出しでそれを使用することができるはずです。すべてのプログラマが知っておくべき何noreferrer">
所属していません StackOverflow