V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
qemu32
V2EX  ›  Linux

x86 架构的多 cpu 服务器是否就是 NUMA 架构?

  •  
  •   qemu32 · 114 天前 · 2761 次点击
    这是一个创建于 114 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如华硕的 WS C621E SAGE 这跨型号的主板就支持 2 个 cpu ,那么这款主板是否就是使用了 NUMA 架构?

    我最近想研究 linux 内核 NUMA 相关的代码,但是我没有一个真正支持 NUMA 的设备,不知道怎么测试验证。

    使用 qemu 并且指定 smp 参数时设置 cpu 为 2 个是否就可以模拟 2 CPU 且支持 NUMA 的机器?

    20 条回复    2022-10-08 17:16:31 +08:00
    ea3ba5c0
        1
    ea3ba5c0  
       114 天前 via iPhone   ❤️ 1
    qemu 有--numa 来配置 numa 呀
    qemu32
        2
    qemu32  
    OP
       114 天前
    @ea3ba5c0 感谢回复,如果我要组一台真实的硬件来研究 NUMA ,那么是否市面上只要是双路的主板都是 NUMA 的?

    比如这款: https://item.jd.com/10049115951870.html
    主板加 2 颗 cpu 价格就 1200 不到,是否是 NUMA 架构的?
    liyafe1997
        3
    liyafe1997  
       114 天前   ❤️ 2
    @qemu32 目前 x86 基本上可以说双路就是 NUMA ,因为内存都是直接挂 CPU 上的,既然不同的内存挂不同的 CPU 上,访问不同内存就可能要借道别的 CPU 家里,就会有性能差别,那么就是 NUMA 。

    目前印象中好像还没有 x86 多 CPU 统一内存的产品吧?不确定老至强( 10 多年前)有没有内存控制器在 CPU 之外的情况,有没有多 CPU 共享同一内存控制器的主板产品?
    ch2
        4
    ch2  
       114 天前
    Ryzen 就是 NUMA
    qemu32
        5
    qemu32  
    OP
       114 天前
    @ch2 我的家用台式机只有一个 cpu ,比如 5600x ,单个 cpu 也能用来模拟 NUMA 吗?
    liyafe1997
        6
    liyafe1997  
       114 天前 via Android
    @qemu32 Linux 或许可以加些什么参数强开 NUMA 优化(不太确定)?硬件感觉不需要模拟,除非你想做实验对比有无 NUMA 优化的情况的性能情况。
    heiher
        7
    heiher  
       114 天前 via Android
    龙芯多路也是 NUMA 结构,感受比较明显,适合研究学习 :P
    ch2
        8
    ch2  
       114 天前
    @qemu32 #5 5600X 内部有两个 die ,本来就是 NUMA 设计
    qemu32
        9
    qemu32  
    OP
       114 天前
    @ch2 2 个 die 就是 NUMA 吗?这 2 个 die 明明是通过同一个 io die 来访问内存的,你搞错了!

    ?t=140
    qemu32
        10
    qemu32  
    OP
       114 天前
    @qemu32 #9 看 2 分 20 秒
    matolv
        11
    matolv  
       114 天前
    双路算 numa ,cpu0 访问 cpu1 imc 的内存就需要通过 QPI ( intel xeon )或者 PCIe 总线( amd epyc )跨节点访问

    amd ryzen 构架其实可以算 numa ,也可以不算,定义并不重要,只是像 epyc 64c/96c 跨 CCD 的访问延时也是非常高的
    qemu32
        12
    qemu32  
    OP
       114 天前
    @matolv 那 epyc 32c 的情况呢?

    可以举一些具体的例子吗?
    比如单 cpu 的 epyc 7343 ,7763 ,7373X ,7773X 这 4 款 cpu 装 linux 系统,linux 实际会启用 numa 的功能吗,内存管理,进程调度会认为系统中有多个 NUMA NODE 吗?
    JohnBull
        13
    JohnBull  
       114 天前
    SMP 不一定是 NUMA

    用 numactl 看一下
    shika
        14
    shika  
       113 天前 via Android
    我知道很多服务器可以在 bios 里关闭 numa ,所以答案应该是“否”
    msg7086
        15
    msg7086  
       113 天前   ❤️ 2
    NUMA 是指内存访问非一致。如果任意两个核心访问任意内存条的花费相同,就是 UMA ,否则就是 NUMA 。
    现在的桌面 Ryzen 走 IO die 访问内存,不管哪个核心都是从同一个 IO die 访问,所以不会产生 NUMA 问题。
    以前的多路 CPU 走北桥内存控制器访问内存,同样不会产生 NUMA 问题。

    现在的 EPYC 也同理,单插槽上是 UMA 的,多插槽会变成多节点 NUMA 。
    adadada
        16
    adadada  
       113 天前
    @msg7086 #15 EYPC 上 NPS 配置大于 1 的时候,也是单 socket 多 numa domain ,memory interleave 也会被限定在每个 numa domain 的 memory channel 上进行,而不是在单 socket 的所有 memory channel 上做 interleave
    mepwang
        17
    mepwang  
       113 天前
    从硬件架构上来说,现在的双路基本上都是 NUMA 架构了,现在处理器的核心数比较多,SMP 共享存储总线,对性能影响太大了。
    硬件 NUMA 架构不一定需要 linux 内核的 numa 支持,因为跨处理器内存访问由硬件自动完成,与运行在其上的操作系统没有关系,但会影响软件性能。
    GrayXu
        18
    GrayXu  
       113 天前
    @qemu32 多 socket 肯定是 NUMA 。然后,你这视频说的不是一回事吧。。epyc 的 die 的内存控制器是独立的吧,所以也有远近之分,所以也能说得上是 NUMA 吧。
    msg7086
        19
    msg7086  
       113 天前
    @adadada 我知道可以配,我的意思是他结构上就是 UMA 的。
    yanqiyu
        20
    yanqiyu  
       112 天前
    @msg7086 epyc Naples 结构上是 NUMA 的,对于 Rome 开始我印象中是有两个内存控制器在 IoD 里面,die 内也有 IF 总线沟通这些内存控制器。所以还是有亲和性的问题(不过没 Naples 那么明显)。因此 rome 提供了 NPS 设置,让用户在延迟和吞吐之间取舍。

    当然消费级的 ryzen 不会那么复杂,肯定只有一个 MC 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   521 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 17:52 · PVG 01:52 · LAX 09:52 · JFK 12:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.