我想理解numactl --hardware
中的node distances
是什么意思?
在我们的集群上,它输出以下内容
numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 12 13 14 15 16 17
node 0 size: 32143 MB
node 0 free: 188 MB
node 1 cpus: 6 7 8 9 10 11 18 19 20 21 22 23
node 1 size: 32254 MB
node 1 free: 69 MB
node distances:
node 0 1
0: 10 21
1: 21 10
这是我到目前为止的理解:
- 我们有 24 个虚拟 CPU,每个节点都有 32Gb 的 DRAM。
- 在
numa
集群上,我们将不得不"跳跃"到下一个集群才能访问其他节点上的内存,这会导致更高的延迟。 - 在这种情况下,数字
10
和21
是否指示"跃点"的延迟?如何找到ns
中的延迟?这是在某处指定的吗?
和这个对我没有多大帮助。
编辑:此链接说距离不是ns
,而是相对距离。 如何获得以 ns 为单位的绝对延迟?
任何帮助将不胜感激。
要获得绝对延迟数字,如果您使用的是英特尔系统,则可以将其内存延迟检查器工具用于任何特定系统。 https://software.intel.com/en-us/articles/intel-memory-latency-checker
它更喜欢使用 root/admin 权限来禁用硬件预取,否则会扭曲数字,但如果您没有,文档还指出您可以要求它从其他节点获取随机元素以非常接近真实数字,例如:
./mlc --latency_matrix -e -l128 -r
Intel(R) Memory Latency Checker - v3.5
Command line parameters: --latency_matrix -e -l128 -r
Using buffer size of 200.000MB
Measuring idle latencies (in ns)...
Numa node
Numa node 0 1
0 112.5 180.3
1 180.8 112.4
numactl --hardware
为您提供有关硬件架构的统计信息,而不是其性能统计信息。
如果你想要硬件的性能特征,你必须自己测量它,要么在网上找到现有的一个,要么编写自己的基准测试。https://stackoverflow.com/a/47815885/1411628 会让你了解如何开始编写自己的长凳。