Performance 基准测试处理器相关性影响
我正在研究一种体系结构,其中每个计算节点有2个套接字,每个套接字有4个内核,每个计算节点总共有8个内核,每个节点有24GB的RAM。我必须证明环境可以对表演产生重大影响Performance 基准测试处理器相关性影响,performance,benchmarking,affinity,numa,Performance,Benchmarking,Affinity,Numa,我正在研究一种体系结构,其中每个计算节点有2个套接字,每个套接字有4个内核,每个计算节点总共有8个内核,每个节点有24GB的RAM。我必须证明环境可以对表演产生重大影响 您是否有任何程序建议我将其用作基准,以显示使用处理器亲和力与不使用处理器亲和力之间的影响差异?我也可以使用MPI、OpenMP或pthreads编写一个简单的C测试程序,但是什么操作最适合做这个测试呢?它必须能够利用缓存局部性,但也会触发上下文切换(阻塞操作),所以进程可能会迁移到另一个核心,或者更糟的是,迁移到另一个套接字。它
您是否有任何程序建议我将其用作基准,以显示使用处理器亲和力与不使用处理器亲和力之间的影响差异?我也可以使用MPI、OpenMP或pthreads编写一个简单的C测试程序,但是什么操作最适合做这个测试呢?它必须能够利用缓存局部性,但也会触发上下文切换(阻塞操作),所以进程可能会迁移到另一个核心,或者更糟的是,迁移到另一个套接字。它必须在8个核的倍数上运行。您只需使用一个简单的单线程进程,即写入然后重复读取一个适度的数据集。显然,该进程需要比单个时间片运行更长的时间,并且足够长,以便进程从一个核心迁移到另一个核心,例如100秒 然后可以运行两个测试用例:
0 1 2 3 4 5 6 7中的p为$;做时间。/我的过程&;完成
0 1 2 3 4 5 6 7中的p为$;do time任务集-c$p./my_进程&;完成
我试图编写一个程序,在NUMA体系结构上测试内存延迟的不对称性,在StackOverflow社区的帮助下,我成功了。你可以从我的StackOverflow帖子上得到这个程序
当我在与您非常相似的硬件上运行我的基准测试程序时,当一个内核正在读/写不在内核的NUMA节点(关联区域)中的内存时,我看到大约30%的性能损失。程序必须以一种故意破坏缓存和预取的模式进行读写,否则就不会出现明显的不对称现象。Try--CLOMP--专为测量线程开销而设计 但在这种情况下,什么会导致进程迁移到另一个核心?如果操作系统控制了一个内核,那么当进程重新获得控制时,即使没有设置关联,也有合理的机会继续执行同一个内核。@Charles:这只是基于经验观察-我做了simlar测试,发现了有无CPU关联的显著差异。我只能猜测,在一个典型系统上运行的各种后台进程负责触发从一个内核到另一个内核的迁移。鉴于您的规格(2个插座,24 GB),听起来您的系统类型与问题中的系统类型相同。