超线程之分析

本文章来源于:https://github.com/Zeb-D/my-review ,请star 强力支持,你的支持,就是我的动力。

背景

最近研究openjdk源码的时候,也就是Thread 从java到c语言实现的探索,发现有个超线程 这个词吸引了我,其实我们的机房机器都带支持这种技术,超线程技术;

比如:我们服务使用的是一款单CPU,4物理核,8逻辑核(超线程,HTT)的服务器,主频3.4G。这次替换的新机型是双CPU,每个CPU20物理核,40逻辑核(HTT),一共是80核的服务器,但是主频只有2.5G。这个服务是一个时延敏感的服务,看到主频这里,我看网络上有很多说法表明(主要是Intel的官方宣传文章),在更小制程更新架构的情况下,较低主频的新版CPU也可以取得打平甚至超过旧版高主频CPU的性能表现。

​ 至于为什么多核CPU反而主频更低呢?这主要是功耗上的考虑。40个物理核密集布在一块板上,高主频会带来高功耗,散热就是一个大问题了。因此,目前市面上的这种几十核的CPU,主频基本都在2.xG左右。

​ 第二个担忧是为了充分利用多核CPU的性能,程序的线程数需要大大提高,那这里会不会带来锁的争用从而导致性能下降?现在的服务基本是一个无锁的计算密集型程序。

问题出现

这个服务

请求量变大,新机器上的时延直接飙到原来的两倍还多。

请教了经常配置使用这种新机型的运维同学,告诉我可以尝试关闭超线程试试。果然,关闭超线程后,时延只比原来的8核机高不到10%,且随着负载增加没有明显变化,符合上游服务的时延要求。

那为什么关闭超线程有效呢?

概念

首先,我们要了解什么是超线程。

超线程:
是一种用于提升CPU计算并行度的处理器技术,用一个物理核模拟两个逻辑核。
这两个逻辑核拥有自己的中断、状态,但是共用物理核的计算资源。
超线程技术旨在提高CPU计算资源的使用率,从而提高计算并行度。 

解释下:

超线程技术基于这样一个现实,那就是大多数程序运行时,CPU资源并没有得到充分的利用。

​ 比如CPU缓存未命中、分支预测错误或者等待数据时,CPU中的计算资源其实是闲置的。超线程技术,可以通过硬件指令,将这些闲置的CPU资源,调度给其他的指令,从而整体上提高CPU的资源利用率。

分析

那么为什么我们程序关闭了超线程,反而时延性能提升了呢?

可能有以下几个方面的原因:

  • 超线程带来的效率提升绝对赶不上新增一个独立的物理核,因为超线程没有增加任何的计算资源,而是允许两个任务共享同一个物理核的现有计算资源。所以如果处理器有充足的计算资源未被充分利用时,超线程可以带来比较大的提升,另一个线程可以在某些计算资源空闲时,插入执行。这样在同一个时钟周期内,可以计算更多的任务。这里带来的性能提升,更大的是吞吐量的提升,而非单任务计算时延的提升。如果应用程序前后依赖少,可以编译成独立的指令执行,CPU层面的吞吐量提升也可以带来应用程序层面的计算时延下降;但是,满足这样要求的业务太少,大部分应用程序都是有前后依赖的。
  • 超线程的利用率是否高,和操作系统有关。如果操作系统不理解超线程(如Linux2.6之前,windows server2003等),那么就有可能将本来可以分发给两个物理核的计算任务,分发给了同一个物理核上的两个超线程。这样的话,反而会带来性能损失。
  • 有研究表明,超线程依赖于操作系统对CPU的调度。但是如果应用程序开启了CPU绑定功能,则有可能破坏这种调度的完整性,反而带来性能损失。不幸的是,由于我们应用程序内部逻辑需要,必须要开启CPU绑定功能。这里可能是个比较主要的问题。
  • 为了实现超线程技术,物理核中需要多加一个逻辑处理单元。即使没有指令给超线程出来的那个逻辑核计算时,这个新增的逻辑处理单元,也会占据一定的物理核资源,带来性能影响。

另外,超线程程序会带来耗电量的大幅提升。这在服务器程序来说,可能带来功耗的提升导致散热问题从而降频,而对于目前智能手机来说,电池续航也会是一个严重的问题。

总结

超线程技术,目前基本上是服务器CPU的标配了。

但是具体能够带来多大的性能提升,还是要取决于具体的应用程序与操作系统。

如果你发现服务器性能不达标,不妨将超线程关掉试试。说白了,换了个好机器,服务性能却没什么变化,那么可以往这方面想想,争取榨干机器资源达到最大化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值