[转帖]超线程SMT究竟可以快多少?(AMD Ryzen版 )

超线程,smt,究竟,可以,多少,amd,ryzen · 浏览次数 : 0

小编点评

## 编译内核的性能提升分析 **对比:** * **Intel I9 (10核 20线程):** * 编译内核需要2分钟30秒左右 * SMT开启后,性能提升不到10% * **AMD Ryzen (16核 2个线程):** * 编译内核需要57秒左右 * SMT关闭后,性能下降不到10%,接近Intel I9 **关键因素:** * SMT开启后的性能提升有限 * 16核相对于8核的性能提升更明显 * SMT对编译内核的影响小于10%,而Intel I9的影响有14% **结论:** AMD Ryzen 的16核相对于8核的性能提升更明显,并且SMT关闭后性能下降不到10%,接近Intel I9。这说明,对于编译内核,AMD 的性能优势更明显。

正文

https://www.modb.pro/db/139224

 

昨天我们用Intel I9的10核,每个核2个threads的机器跑了内核的编译:

超线程SMT究竟可以快多少?

今天,我换一台机器,采用AMD Ryzen。 

默认情况16核,每个核2个threads,共32个CPUs:

下面编译内核:

大约需要53秒。记得昨天用Intel I9 10核20线程需要2分钟30秒左右。

 

再来一遍:

这说明make clean, drop_caches后时间也差不多。51秒,53秒左右的正常抖动范围。

 

现在我们关闭smt,只保留16个CPU:

具体的关闭方法就是:

sudo sh -c 'echo off > /sys/devices/system/cpu/smt/control'

这样只剩下16个CPU,下面来编译:

时间57秒,相对于51、53秒,速度下降不到10%。

 

这说明超线程SMT对编译内核这个workload的性能的提升绝对没有达到100%,甚至都没有达到10%。

 

我们现在重新开启超线程:

 sudo sh -c 'echo on > /sys/devices/system/cpu/smt/control

看一下哪个CPU和哪个CPU是thread sibling:

看起来CPU0和CPU16是一对,CPU1和CPU17是一对,依次类推。

 

刚才我们关闭SMT是把CPU16-CPU31全关了,只留下每对里面的1个CPU,也就是留下了CPU0-CPU15。

 

在开启SMT的时候(假设蓝色和红色是一个CORE里面的两个CPU):

在关闭SMT的时候,等于每对里面只留1个CPU:

现在我们换一种关法,一对对关,只留下8对,也就是8个core:

指令如下:

实现效果如下:

再重新编译内核:

现在耗时是1分21秒,相对于所有CPU全开,下降了很多,时间增大了59%,当然没有达到2倍

再想想昨天的Intel I9,关闭5个完整核耗时是3分10秒,全开10核是2分30秒,Intel一半核工作和所有核同时工作的差距远不如AMD那么明显

 

所以可以看出,就内核编译这个workload而言,AMD的16core相对于8core,性能的scale会更加成正比。当然AMD开关SMT,对内核编译这个workload而言,影响小于10%,而Intel I9的影响有14%。

 

很多童鞋昨天留言,说编译内核有一定的IO bound,另外提到link阶段是单线程,还有的童鞋说是Intel Turbo的影响,这些我们都认为是有一定道理的。但是,我始终坚信,profiling是检验猜想的唯一标准,后面有空再写一篇文章来profiling一些究竟是为什么。

与[转帖]超线程SMT究竟可以快多少?(AMD Ryzen版 )相似的内容:

[转帖]超线程SMT究竟可以快多少?(AMD Ryzen版 )

https://www.modb.pro/db/139224 昨天我们用Intel I9的10核,每个核2个threads的机器跑了内核的编译: 超线程SMT究竟可以快多少? 今天,我换一台机器,采用AMD Ryzen。 默认情况16核,每个核2个threads,共32个CPUs: 下面编译内核:

[转帖]超线程 Smt 究竟可以快多少?

https://www.51cto.com/article/686171.html 刚才我们关闭SMT是把CPU10-CPU19全关了,只留下每对里面的1个CPU,也就是留下了CPU0-CPU9。 默认情况下是Intel I9,10核,每个核2个threads,共20个CPUs: 下面编译内核: 需

[转帖]探讨超线程CPU对游戏的影响和最佳游戏CPU

https://zhuanlan.zhihu.com/p/217826075超线程技术并不能提升物理能力,通过优化CPU处理流程提升总体处理能力,大概15-20%。一般而言单线程处理能力下降大概在5-15%之间。 这遍文章是针对游戏发烧友的,如果是普通玩家或者是普通办公者,直接建议购买支持超线程CP

[转帖]被误解的CPU利用率、超线程、动态调频 —— CPU 性能之迷 Part 1

https://www.modb.pro/db/555820 引 TL;DR 这“引”部分写得有点多了,不喜直接跳到下一节。 性能测试、压力测试、业务系统性能容量评估。这 3 件事,可以认为是大部分程序员/软件开发从业者都需要面对的事。但,奇怪的是,很多人花了很多时间去做完成这些工作任务,却很少有人

[转帖]Perf IPC以及CPU性能

https://plantegg.github.io/2021/05/16/Perf_IPC%E4%BB%A5%E5%8F%8ACPU%E5%88%A9%E7%94%A8%E7%8E%87/ 为了让程序能快点,特意了解了CPU的各种原理,比如多核、超线程、NUMA、睿频、功耗、GPU、大小核再到分支

[转帖]Linux查看物理CPU个数、核数、逻辑CPU个数

https://www.cnblogs.com/bugutian/p/6138880.html CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 查看CPU信息(型号) [root@AAA ~]# cat /pro

[转帖]上下文切换的代价

https://plantegg.github.io/2022/06/05/%E4%B8%8A%E4%B8%8B%E6%96%87%E5%88%87%E6%8D%A2%E5%BC%80%E9%94%80/ 概念 进程切换、软中断、内核态用户态切换、CPU超线程切换 内核态用户态切换:还是在一个线程中

[转帖]Perf IPC以及CPU性能

https://plantegg.github.io/2021/05/16/Perf%20IPC%E4%BB%A5%E5%8F%8ACPU%E5%88%A9%E7%94%A8%E7%8E%87/ Perf IPC以及CPU性能 为了让程序能快点,特意了解了CPU的各种原理,比如多核、超线程、NUMA

[转帖]CPU的制造和概念

https://plantegg.github.io/2021/06/01/CPU%E7%9A%84%E5%88%B6%E9%80%A0%E5%92%8C%E6%A6%82%E5%BF%B5/ 为了让程序能快点,特意了解了CPU的各种原理,比如多核、超线程、NUMA、睿频、功耗、GPU、大小核再到分

[转帖]线程池使用的10个坑

https://juejin.cn/post/7132263894801711117 前言 大家好,我是捡田螺的小男孩。 日常开发中,为了更好管理线程资源,减少创建线程和销毁线程的资源损耗,我们会使用线程池来执行一些异步任务。但是线程池使用不当,就可能会引发生产事故。今天田螺哥跟大家聊聊线程池的10