基准处理器亲和力影响

问题描述:

我正在研究一个NUMA架构,其中每个计算节点有2个插座和4个插槽核心,计算节点共计8个内核,节点内存为24GB RAM。我必须证明,设置processor affinity可以对性能产生重大影响。基准处理器亲和力影响

您是否有任何程序建议我可以用作基准来显示使用处理器关联性与否之间的差异?我也可以编写一个简单的C测试程序,使用MPI或OpenMP或pthread,但是哪种操作最适合做这种测试?它必须是可以利用缓存局部性的东西,但也会触发上下文切换(阻塞操作),因此进程可能会迁移到另一个内核,或者更糟糕的情况下迁移到其他套接字。它必须运行在8个内核的倍数上。

您可以使用一个简单的单线程进程,该进程写入并重复读取适度的数据集。该过程显然需要比单个时间片运行更长的时间,并且足够长以便过程从一个核心迁移到另一个核心,例如, 100秒。

然后,可以运行两个测试用例:

  1. 运行,而无需CPU的亲和性的处理的8个实例

    $ for p in 0 1 2 3 4 5 6 7 ; do time ./my_process & ; done

  2. 运行与CPU关联的处理的8个实例

    $ for p in 0 1 2 3 4 5 6 7 ; do time taskset -c $p ./my_process & ; done

+0

但是在那种情况下,会导致进程迁移到另一个核心的是什么?有合理的可能性,如果操作系统接管了一个核心,那么当它重新获得控制权时,即使没有设置亲和力,进程也会继续执行同一核心。 – 2011-04-08 14:12:20

+0

@Charles:这只是基于经验观察 - 我已经做过类似测试,并且发现有/没有CPU亲和力的显着差异。我只能猜测,在典型系统上运行的各种后台进程负责触发从一个核心向另一个核心的迁移。 – 2011-04-08 14:46:34

我试着编写一个程序,在NUMA体系结构上测试内存延迟的非对称性,并且在*社区的帮助下,我成功了。您可以从我的*帖子中获取该程序。

Measuring NUMA (Non-Uniform Memory Access). No observable asymmetry. Why?

当我在硬件上运行我的基准测试程序非常相似,你的,我看到,当一个核心正在读取/写入内存,是不是在核心的NUMA节点(地区有30%的性能损失亲和力)。程序必须以一种有意破坏缓存和预取的模式进行读写,否则就不会有明显的不对称。

+0

+1。根据你的规格(2个插槽,24 GB),听起来你的系统与该问题中的系统类型相同。 – Mysticial 2011-09-02 13:45:22

尝试ASC Sequoia benchmark - CLOMP - 设计用于测量线程开销。