gpt4 book ai didi

linux - 将进程固定到 CPU 内核或 SMP 节点是否有助于减少缓存一致性流量?

转载 作者:IT王子 更新时间:2023-10-29 00:39:49 26 4
gpt4 key购买 nike

可以使用 sched_setaffinity() 将进程固定到一组特定的 CPU 内核称呼。手册页说:

   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 不应修改其私有(private)内存,因此只有属于同一 SMP 节点的 CPU 才应保持缓存一致。

最佳答案

对于您描述的固定进程情况,应该没有 CPU 套接字到套接字的一致性流量。现代 Xeon 平台在芯片组中实现监听过滤。探听过滤器指示远程套接字何时无法拥有相关缓存行,从而避免向该套接字发送缓存无效消息的需要。

您可以自己衡量一下。 Xeon 处理器实现了多种高速缓存统计计数器。您可以使用 rdpmc 指令在您自己的代码中读取计数器,或者只使用像 VTune 这样的产品。仅供引用,使用 rdpmc 非常精确,但有点棘手,因为您必须首先在 CR4 中设置一些位以允许在用户模式下使用此指令。

-- 编辑--

我上面的回答对于使用 QPI 链接的 55xx 系列 CPU 来说已经过时了。这些链接直接互连 CPU 插槽,无需干预芯片组,如: http://ark.intel.com/products/37111/Intel-Xeon-Processor-X5570-%288M-Cache-2_93-GHz-6_40-GTs-Intel-QPI%29

然而,由于每个 CPU 中的 L3 缓存都是包容性的,因此仅当本地 L3 缓存指示该行在本地套接字中不存在时,才会对 QPI 链接进行监听。同样,远程套接字的 L3 可以在不打扰内核的情况下快速响应交叉监听,假设线路也不在那里。

因此,包含的 L3 缓存应该最大限度地减少套接字间的一致性开销,这在您的情况下并不是因为芯片组监听过滤器。

关于linux - 将进程固定到 CPU 内核或 SMP 节点是否有助于减少缓存一致性流量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com