我们一直在测试使用 2 个 Xeon Gold 6154 CPU 和 Supermicro X11DPH-I 主板和 96GB RAM 的服务器,并发现与仅使用 1 个 CPU(一个插槽空),类似的双核运行相比,内存存在一些非常奇怪的性能问题CPU Haswell Xeon E5-2687Wv3(用于本系列测试,但其他 Broadwell 性能类似)、Broadwell-E i7s 和 Skylake-X i9s(用于比较)。
当涉及到各种 memcpy 功能甚至内存分配时,预计具有更快内存的 Skylake Xeon 处理器的性能将比 Haswell 更快(在下面的测试中未涵盖,因为我们找到了一种解决方法),而是安装了两个 CPU ,Skylake Xeon 的速度几乎是 Haswell Xeon 的一半,与 i7-6800k 相比甚至更低。更奇怪的是,当使用 Windows VirtualAllocExNuma 分配 NUMA 节点进行内存分配时,虽然普通内存复制功能在远程节点上的性能预计比本地节点差,但使用 SSE、MMX 和 AVX 寄存器的内存复制功能性能更佳在远程 NUMA 节点上比在本地节点上更快(什么?)。如上所述,使用 Skylake Xeons,
我不确定这是主板或 CPU 上的错误,还是 UPI 与 QPI 的错误,或者以上都不是,但是 BIOS 设置的组合似乎对此没有用。在 bios 中禁用 NUMA(未包含在测试结果中)确实提高了所有使用 SSE、MMX 和 AVX 寄存器的复制功能的性能,但所有其他普通内存复制功能也会遭受很大损失。
对于我们的测试程序,我们使用内联汇编函数和_mm内部函数进行测试,除了汇编函数之外,我们使用 Windows 10 和 Visual Studio …