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

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

小编点评

本文介绍了关闭SMT对CPU数量的影响,并通过改变关闭方法来降低性能。 **关闭方法一:** * 复制 `sudo &sh -c 'echo off >/sys/devices/system/cpu/smt/control'` **关闭方法二:** * 复制 `sudo &sh -c 'echo on >/sys/devices/system/cpu/smt/control'` **结论:** * 关闭SMT后,只留下10个CPU,编译内核耗时为2分51秒,与全关10个CPU时的耗时相接近。 * 即使只保留5个CORE,仍能有效降低性能。 * 改变关闭方法可以降低性能,因为关闭方法会对每个CPU分配不同的thread sibling。 * 5个core的性能提升比10个core的性能提升更快,因为5个core拥有更多线程可以并发执行内核操作。

正文

https://www.51cto.com/article/686171.html

 

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

 

默认情况下是Intel I9,10核,每个核2个threads,共20个CPUs:

下面编译内核:

需要2分钟30秒左右。

再来一遍:

这说明make clean, drop_caches后时间也差不多。

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

具体的关闭方法就是:

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

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

时间2分51秒,相对于2分30秒,速度下降仅仅14%。

这说明超线程SMT对性能的提升绝对没有达到100%,甚至都没有达到20%。

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

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

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

看起来CPU0和CPU10是一对,CPU1和CPU11是一对,依次类推。

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

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

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

现在我们换一种关法,一对对关,只留下五对:

指令如下:

实现效果如下:

再重新编译内核:

现在耗时是3分10秒,想对于所有CPU全开,下降27%。相对于每个core里面只关一个线程,下降12%。

这就比较神奇了?为什么我关了5个core,性能没有下降100%呢?这至少说明一个问题,从5core到10core,Intel I9编译内核性能并没有线性地scale。只是从3分10秒,提升到2分30秒。

这到底是为什么?「元芳,你怎么看?」

本文转载自微信公众号「Linux阅码场」,可以通过以下二维码关注。转载本文请联系Linux阅码场公众号。

与[转帖]超线程 Smt 究竟可以快多少?相似的内容:

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

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

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

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