比如华硕的 WS C621E SAGE 这跨型号的主板就支持 2 个 cpu ,那么这款主板是否就是使用了 NUMA 架构?
我最近想研究 linux 内核 NUMA 相关的代码,但是我没有一个真正支持 NUMA 的设备,不知道怎么测试验证。
使用 qemu 并且指定 smp 参数时设置 cpu 为 2 个是否就可以模拟 2 CPU 且支持 NUMA 的机器?
1
ea3ba5c0 2022-10-06 17:42:46 +08:00 via iPhone 1
qemu 有--numa 来配置 numa 呀
|
2
qemu32 OP @ea3ba5c0 感谢回复,如果我要组一台真实的硬件来研究 NUMA ,那么是否市面上只要是双路的主板都是 NUMA 的?
比如这款: https://item.jd.com/10049115951870.html 主板加 2 颗 cpu 价格就 1200 不到,是否是 NUMA 架构的? |
3
liyafe1997 2022-10-06 18:09:24 +08:00 2
@qemu32 目前 x86 基本上可以说双路就是 NUMA ,因为内存都是直接挂 CPU 上的,既然不同的内存挂不同的 CPU 上,访问不同内存就可能要借道别的 CPU 家里,就会有性能差别,那么就是 NUMA 。
目前印象中好像还没有 x86 多 CPU 统一内存的产品吧?不确定老至强( 10 多年前)有没有内存控制器在 CPU 之外的情况,有没有多 CPU 共享同一内存控制器的主板产品? |
4
ch2 2022-10-06 18:26:39 +08:00
Ryzen 就是 NUMA
|
6
liyafe1997 2022-10-06 19:03:41 +08:00 via Android
@qemu32 Linux 或许可以加些什么参数强开 NUMA 优化(不太确定)?硬件感觉不需要模拟,除非你想做实验对比有无 NUMA 优化的情况的性能情况。
|
7
heiher 2022-10-06 19:34:50 +08:00 via Android
龙芯多路也是 NUMA 结构,感受比较明显,适合研究学习 :P
|
9
qemu32 OP |
11
matolv 2022-10-06 21:16:47 +08:00
双路算 numa ,cpu0 访问 cpu1 imc 的内存就需要通过 QPI ( intel xeon )或者 PCIe 总线( amd epyc )跨节点访问
amd ryzen 构架其实可以算 numa ,也可以不算,定义并不重要,只是像 epyc 64c/96c 跨 CCD 的访问延时也是非常高的 |
12
qemu32 OP @matolv 那 epyc 32c 的情况呢?
可以举一些具体的例子吗? 比如单 cpu 的 epyc 7343 ,7763 ,7373X ,7773X 这 4 款 cpu 装 linux 系统,linux 实际会启用 numa 的功能吗,内存管理,进程调度会认为系统中有多个 NUMA NODE 吗? |
13
JohnBull 2022-10-06 23:25:37 +08:00
SMP 不一定是 NUMA
用 numactl 看一下 |
14
shika 2022-10-07 07:15:18 +08:00 via Android
我知道很多服务器可以在 bios 里关闭 numa ,所以答案应该是“否”
|
15
msg7086 2022-10-07 08:35:36 +08:00 2
NUMA 是指内存访问非一致。如果任意两个核心访问任意内存条的花费相同,就是 UMA ,否则就是 NUMA 。
现在的桌面 Ryzen 走 IO die 访问内存,不管哪个核心都是从同一个 IO die 访问,所以不会产生 NUMA 问题。 以前的多路 CPU 走北桥内存控制器访问内存,同样不会产生 NUMA 问题。 现在的 EPYC 也同理,单插槽上是 UMA 的,多插槽会变成多节点 NUMA 。 |
16
adadada 2022-10-07 10:02:16 +08:00
@msg7086 #15 EYPC 上 NPS 配置大于 1 的时候,也是单 socket 多 numa domain ,memory interleave 也会被限定在每个 numa domain 的 memory channel 上进行,而不是在单 socket 的所有 memory channel 上做 interleave
|
17
mepwang 2022-10-07 11:01:57 +08:00
从硬件架构上来说,现在的双路基本上都是 NUMA 架构了,现在处理器的核心数比较多,SMP 共享存储总线,对性能影响太大了。
硬件 NUMA 架构不一定需要 linux 内核的 numa 支持,因为跨处理器内存访问由硬件自动完成,与运行在其上的操作系统没有关系,但会影响软件性能。 |