呼び出しを使用して、プロセスを特定のCPUコアのセットに固定することができsched_setaffinity()
ます。マニュアルページには次のように書かれています。
Restricting a process to run on a single CPU also avoids the
performance cost caused by the cache invalidation that occurs when a process
ceases to execute on one CPU and then recommences execution on a different
CPU.
これはほとんど明白なことです(またはそうではありませんか?)。私にはそれほど明白ではないのはこれです-
LWPを特定のCPUまたはSMPノードに固定すると、キャッシュコヒーレンシバストラフィックが減少しますか?たとえば、プロセスは固定されて実行されているため、他のCPUはそのプライベートメモリを変更しないでください。したがって、同じSMPノードの一部であるCPUのみがキャッシュコヒーレントを維持する必要があります。