PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

Ryzen和其他各种CPU线程调度实测

[复制链接]
跳转到指定楼层
1#
Mufasa 发表于 2017-3-8 13:26 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
点击数:18249|回复数:34
最近讨论比较热门的话题,Win10没有正确识别Ryzen的SMT设计,导致问题。

今天专门实测了一下,并且和其他CPU加以对比。

首先是Ryzen在Win10下的测试,FritzChess
8线程,15321
2线程,4545
线程分配无任何规律,16个核心胡乱分配。
我准备截图保存,但是死机了。。。。跑测试不死机,开个画图竟然死了。

Ryzen在Win7下的表现
首先说明,Win7把Ryzen识别为普通超线程CPU,使用SMT调度
SMT调度下,不能手动把Fritz的线程强行分配到同一个核心的两个超线程单元,会得到极端异常的结果(只有几百分)。
下面的测试都是2线程物理核心,恩,两个线程,方便分析。
自动,4919
手动分配到第一个CCX,4930
手动分配到第二个CCX,4945
手动把两个线程分别放在各自CCX,4895
反复测试多次,排除误差影响,数据可信。
第一个CCX成绩偏低是因为Win7系统自身的一些小任务会占用核心0 1 2 3,消耗少量内存带宽。
即使我手动分配在 4 5 6 7 ,也会影响性能。
跨CCX成绩最低,可见互联带宽确实不足,也可以说单个CCX内存带宽已经足够FritzChess使用。

双路Opteron 6276
Opteron 6276本身是胶水设计,每个封装内部有两个芯片。
两颗6276组成的系统,实际上是4颗Opteron MP通过HyperTransport互联,每个节点双通道内存,4节点,8通道内存,16模块,32核心。
Win7没有识别MP节点(4节点NUMA),但正确识别了模块化设计,按照SMT调度执行,避免同一个模块的两个核心同时加载。
自动,3424
手动分配在一个节点,3224
手动跨CPU封装,3439
我的分析是,单个节点内存带宽不足,影响了性能发挥,所以Win7不开启NUMA也是对的。
跨节点使用,虽然HyperTransport会造成延迟,但内存带宽提升带来的优势更大。

双路Xeon X5650
Win7针对这样的配置完全优化,同时开启NUMA和SMT调度,2节点,12核心,24线程。
有相关性的线程会被优先安排在同一个NUMA节点,避免QPI互联传输。
自动,4419
手动同NUMA节点,4514
手动异NUMA节点,4427
可见核心数量非常多以后,系统的自动调度并不能实现最佳性能,即使系统完全识别CPU并开启了对应策略,依旧不如手动固定核心运行。
自动调度会让线程频繁在核心之间切换,损失性能。

双路Xeon E5430
E5430是771时代的胶水CPU,系统结构非常复杂。
5100北桥芯片有两根1333MHz FSB分别连接到两个CPU封装。
每个CPU封装内部是两颗酷睿2芯片共享FSB,同芯片两个核心共享6MB二级缓存,每个封装2芯片4核心12MB二级缓存,整个系统8核心24MB二级缓存。
Win7对于这样的系统不会开启任何优化,因为它是UMA统一内存结构,也没有SMT。
自动,3895
手动分配在同芯片,3915
手动分配在同封装异芯片,3868
手动分配在异封装异芯片,3856
可见异封装异芯片的性能最低,这也很容易理解,因为互联数据需要绕道北桥芯片,延迟最高。

希望能够对各位分析Ryzen的线程分配与互联提供参考。

评分

参与人数 2代金券 +100 绝对值 +1 收起 理由
Y6-0785 + 1 很给力!
石头 + 100 2精

查看全部评分

2#
Mufasa  楼主| 发表于 2017-3-8 20:14 | 显示全部楼层
nighttob 发表于 2017-3-8 14:14
涉及NUMA的话还得有NUMA调优的问题
这方面反而是咱们这种折腾DIY的比较讲究
见过不少买了4路E7的反而就只配 ...

以我的观察,大部分双路E5的服务器,实际也只插了2-4根内存。

2根就是每个CPU一根,4根就是每个CPU两根,都没有达到处理器内存带宽最优状态。

然而这些服务器都被用在了生产环境中。。。。

所以,内存带宽究竟能有多大实际影响,值得考虑。
3#
Mufasa  楼主| 发表于 2017-3-8 20:27 | 显示全部楼层
E5 2670,同样两个线程

自动,4384
同NUMA节点,4576
异NUMA节点,4079

2670的成绩变动比预期的大,可能是我同时开了窗口在看网页的原因。
4#
Mufasa  楼主| 发表于 2017-3-8 20:35 | 显示全部楼层
暴疯狂笑 发表于 2017-3-8 16:55
目前只是表明Win7比Win10“正常”,不代表Win7就是完美支持。

感觉又回到以前AMD打双核补丁的时代了,也许 ...

Win7这个算是运气好,没有特别优化,反而正好合适。

Win10,就看4月版本了。
如果优化得力,Ryzen性能可以大幅提升。
如果依旧优化不到位,参考当年推土机的待遇。。。。到最终也没真正优化。

Win7把推土机当作SMT调度,模块资源争抢问题倒是解决了。
但推土机当时设计的设想,高相关性线程共享L2,却被废弃了。

后来AMD给Win10弄的优化,又变成了全部当作物理核心对待。
然后给自己家的Ryzen挖了个坑。。。。
5#
Mufasa  楼主| 发表于 2017-3-8 21:30 | 显示全部楼层
bigww 发表于 2017-3-8 21:27
说白了就是,现在用ZEN的还是考虑WIN7咯。。。不过现在也没免费的WIN10升级了吧。。。看来我换电脑又要用回 ...

等4月新补丁啊,据说解决问题,性能提升。
6#
Mufasa  楼主| 发表于 2017-3-8 22:47 | 显示全部楼层
Apache 发表于 2017-3-8 22:37
AMD的两个ccx之间交换设计没硬伤吗?

我觉得没问题,满足正常的需要即可。

带宽做高了必然面临功耗增加一类的问题,得不偿失。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部