访问内存时,访问中央内存访问与通过非本地访问(NUMA - 互连 NUMA)相比是更慢还是更快?

var*_*ble -3 sql-server numa sql-server-2019

链接: https: //www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/solutions/sql-server-on-vmware-best-practices-guide.pdf

\n
\n

这种具有最终优势的架构也带来了一些需要考虑的权衡,其中最重要的是\xe2\x80\x94访问内存中数据的时间根据相应内存缓存线的本地或远程放置而变化。执行请求的 CPU 核心,远程访问速度比本地速度慢29倍。

\n
\n

29根据实现和处理器系列,这种差异可能高达 3 倍(来源:pdf,第 6 页)

\n
\n

以下是互连的示例(https://www.sqlskills.com/blogs/jonathan/understanding-non-uniform-memory-accessarchitectures-numa/ ):

\n

在此输入图像描述

\n

根据上面的引用 - 访问远程内存中的数据(通过互连)的时间比本地慢 X 倍。

\n

如果没有 NUMA,并且 CPU 访问内存(从中央位置),那么与互连访问相比,它会更慢还是更快?

\n

Sea*_*ser 5

根据上面的引用 - 访问远程内存中的数据(通过互连)的时间比本地慢 3 倍。

这应该是有道理的,那就是进一步检索非套接字本地的内存将花费更长的时间。我认为这对于理解来说相当微不足道,但可能只是我。如果你必须走得更远,那就需要更长的时间,就像生活中的大多数事情一样。

如果没有 NUMA,并且 CPU 访问内存(从中央位置),那么与互连访问相比,它会更慢还是更快?

最好的情况下,它会更快(单车道上没有交通,想走多快就走多快)。在最坏的情况下,它可能会更慢(由于单车道道路上发生事故,交通堵塞,即使更远,走“长”路可能会更快)。

NUMA 之所以成为现实,是因为 SMP 无法扩展到在同一内存总线上拥有 10 个处理器。同一频道上的信息太多,导致了僵局。NUMA 只是采用 SMP(我的水平非常高,并掩盖了很多),并且本质上将每个套接字削减为本地 SMP,并远程访问非本地的其他内存(外部)。