全面剖析超线程技术优点与缺点

2018-6-26

超线程技术并不能应用在所有环境中,对于不同的情况来说,其有可能帮助提升虚拟服务器的性能表现,但是反过来也有可能造成负面影响,而获得良好性能表现的关键就在于判断应该何时使用这种技术。

超线程是一种计算机处理器技术,能够将一个物理处理器变成两个虚拟处理器。这种方式能够提升处理器核心的指令队列工作效率,从而提高处理器的整体性能表现,此外虚拟化技术也能够受益于这种技术。这种技术允许hypervisor为虚拟机提供之前两倍的虚拟处理器数量——但是超线程技术并不是完美的。如果使用超线程技术,那么效率低下、质量不佳的代码甚至是分配不当的负载都有可能对系统性能造成负面影响。

问题:超线程技术是什么?其能够为hypervisor带来哪些好处?

超线程是英特尔的私有技术,其能够帮助提升物理处理器的资源使用效率,保证处理器一直处于繁忙状态,以便完成更多工作。

超线程技术——也被称为HTT或HT——的出现是由于传统物理服务器核心在同一时间只能处理一项任务。所有负载都需要使用处理器的指令通道,但是通常指令通道的使用率并不会达到100%或者一直处于繁忙状态。造成这种现象的部分原因在于应用程序的编码和运行方式不同,此外,由于现代处理器的运行速度越来越快,已经完全超出许多应用程序的需求,因此被浪费的处理器周期越来越多。

超线程技术在处理器核心中添加了新的电路,能够提供额外的指令通道来共享物理处理器的执行资源,比如内存总线、处理器缓存以及处理器的执行引擎。

增加的超线程电路能够将物理核心分割成两个逻辑核心。在启用超线程技术之后,每个逻辑处理器都相互独立,中断、停止和操作都独立于另外一个共享相同物理核心的虚拟处理器。

当某个逻辑核心空闲时,另外一个逻辑核心将会得到更多的执行资源。

关于超线程技术需要记住的重要一点是在相同物理核心上启用第二个逻辑处理器并不会使得处理器的性能提升一倍。

这是因为处理器的执行资源是共享的,并没有翻倍。HTT技术允许处理器在特定时间内处理更多的任务或者指令线程,但是仍然需要使用原有的物理资源完成这些任务。这是超线程架构和多核处理器——比如双核或者四核——的最大区别,多核技术拥有多个物理处理器。

而虚拟处理器的性能提升幅度取决于负载对于处理器的资源需求以及操作系统管理和规划逻辑处理器的能力。

如果超线程技术不能识别操作系统,就会使用同样的方式管理所有逻辑处理器,可能会将资源需求很大的负载放在相同核心的逻辑处理器上——这样会对应用程序的性能表现造成负面影响——而同时其他核心并没有得到充分利用。

与此形成对比的是,能够识别操作系统的超线程技术可以将线程分配到不同的处理器上,最大程度上提升负载的性能表现。

比如,如果某个应用程序需要使用大量处理器资源,就会一直占用指令队列,那么即便同一个物理处理器核心提供额外的逻辑处理器也无济于事——因为物理处理器已经没有额外的资源可以共享。操作系统可以将第二个线程加入到处理队列中,但是通常其性能表现会非常差,此外,由于其会占用当前运行线程的处理器周期,因此还会导致现有应用程序性能受到影响。

Hypervisor或者操作系统应该能够识别HTT,并且最大程度上提升负载对于物理处理器的使用效率,这些都是分配逻辑处理器的前提。如果这个前提不能实现,那么超线程(并非虚拟化)功能应该被禁用。

从hypervisor系统角度来看,超线程并不是虚拟化技术——HTT只是一种位于处理器硬件层、以硬件为基础的虚拟化技术。而虚拟化和hypervisor能够带来哪些好处?

超线程和hypervisor之间并没有直接的关联。Hypervisor能够工作在不支持超线程技术的物理处理器上,而支持超线程的处理器也可以使用非虚拟化系统。但是这两种方案可以相互补充,而像VmwarevSphere这样的现代hypervisor在创建资源池并且将虚拟CPU分配给虚拟机时已经能够识别并且使用超线程技术。这种方式能够在组织和计划任务方面为hypervisor提供更多的灵活性,因此能够提升虚拟服务器的工作效率。

一般很多人都会认为,采用超线程技术,就能使得系统效能大幅提升,但是事实真是如此么?不要忘了我们前面说到的超线程技术实现的必要条件,这可是超线程技术发挥应有效能的前提条件。除了操作系统支持之外,还必须要软件的支持。从这点我们就可以看出,就软件现状来说,支持双

超线程技术处理器技术的软件毕竟还在少数。对于大多数软件来说,由于设计的原理不同,还并不能从超线程技术上得到直接的好处。

因为超线程技术是在线程级别上并行处理命令,按线程动态分配处理器等资源。该技术的核心理念是“并行度(Parallelism)”,也就是提高命令执行的并行度、提高每个时钟的效率。

这就需要软件在设计上线程化,提高并行处理的能力。而PC上的应用程序几乎没有为此作出相应的优化,采用超线程技术并没不能获得效能的大幅提升。上面说的只是软件支持的现状,操作系统在这个方面则没有太大的问题,毕竟Windows的某些版本、Linux都是支持多处理器的操作系统。

并且随着Intel支持超线程技术的处理器面世之后,凭借Intel处理器的号召力,必然会引起应用程序设计上的改变,必然会有更多的支持并行线程处理的软件面世,届时,当然是支持超线程处理器大显身手的时候了。那时候,普通用户才能够从超线程技术中得到最直接的好处。

提升CPU性能需要:

尽管提高CPU的时钟频率和增加缓存容量后的确可以改善CPU性能,但这样的CPU性能提高在技术上存在较大的难度。

实际上在应用中基于很多原因,CPU的执行单元都没有被充分使用。如果CPU不能正常读取数据(总线/内存的瓶颈),其执行单元利用率会明显下降。另外就是大多数执行线程缺乏ILP(Instruction-Level Parallelism,多种指令同时执行)支持。这些都造成了CPU的性能没有得到全部的发挥。

因此,Intel则采用另一个思路去提高CPU的性能,让CPU可以同时执行多重线程,就能够让CPU发挥更大效率,即所谓“超线程(Hyper-Threading,简称“HT”)”技术。






暗色背景
手机扫码阅读本页