基准测试处理器亲和力影响

Cha*_*net 5 performance benchmarking affinity numa

我正在研究NUMA架构,其中每个计算节点有 2 个插槽,每个插槽有 4 个核心,计算节点总共有 8 个核心,每个节点有 24GB RAM。我必须证明设置处理器关联性会对性能产生重大影响。

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

Pau*_*l R 0

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

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

  1. 在没有 CPU 关联的情况下运行该进程的 8 个实例

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

  2. 运行 8 个具有 CPU 关联性的进程实例

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