欢迎各位阅读本篇文章,超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。本次课课家教育平台为大家带来了全面剖析超线程技术优点与缺点,大家一定要认真阅读哦~

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

超线程和hypervisor之间并没有直接的关联。Hypervisor能够工作在不支持超线程技术的物理处理器上,而支持超线程的处理器也可以使用非虚拟化系统。但是这两种方案可以相互补充,而像Vmware vSphere这样的现代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”)”技术。

小结:相信大家阅读完毕本篇文章后,学到了不少知识吧?其实大家私下还得多多自学,如果您还想了解更多相关方面内容,课课家教育平台欢迎大家,在这个学习知识的天堂里,您肯定会有意想不到的收获的~

服务器大线程有什么作用,全面剖析超线程技术优点与缺点相关推荐

  1. 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul

    本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...

  2. 多方面,全访问的剖析Tomcat十大线程和四大通道

    tomcat服务器在JavaEE项目中使用率非常高,所以在生产环境对tomcat的优化也变得非常重要了. 本专题课在调优压测时我们选择tomcat9,那我们为什么选择9版本呢?因为9的性能更高,更稳定 ...

  3. 性能追击:30+图详解8大主流服务器程序线程模型展示

    看大佬如何用30+图片揭秘8大主流服务器程序线程模型: 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让大家见笑了. 本文我们来探索一下主流的各种应用服务器的网络处理模型,看看大家 ...

  4. 性能追击:万字长文 30+ 图 8 大主流服务器程序线程模型展示

    看大佬如何用 30+图片揭秘 8 大主流服务器程序线程模型: 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让大家见笑了. 本文我们来探索一下主流的各种应用服务器的网络处理模型,看 ...

  5. 一个大尺度超文本网络搜索引擎的剖析

    [原题]一个大尺度超文本网络搜索引擎的剖析 [译题]The anatomy of a large-scale hypertextual Web search engine [作者]Sergey Bri ...

  6. 线程池和并行处理 、线程池的作用

    目录 线程池的作用: 为什么要用线程池: 线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的 使用线程池对线程进行统一分配.调优和监控,有以下好处: 1.降低资源消耗 ...

  7. 浅谈线程池(中):独立线程池的作用及IO线程池

    在上一篇文章中,我们简单讨论了线程池的作用,以及CLR线程池的一些特性.不过关于线程池的基本概念还没有结束,这次我们再来补充一些必要的信息,有助于我们在程序中选择合适的使用方式. 独立线程池 上次我们 ...

  8. 浅谈线程池(上):线程池的作用及CLR线程池

    线程池是一个重要的概念.不过我发现,关于这个话题的讨论似乎还缺少了点什么.作为资料的补充,以及今后文章所需要的引用,我在这里再完整而又简单地谈一下有关线程池,还有.NET中各种线程池的基础.更详细的内 ...

  9. 网络 http服务器-v1-多线程版本

    http服务器-v1-多线程版本 一.http协议分析         来源:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html ...

  10. mysql服务器的线程数查看方法_MySQL服务器线程数的查看方法详解

    本文实例讲述了MySQL服务器线程数的查看方法.,具体如下: mysql重启命令: /etc/init.d/mysql restart MySQL服务器的线程数需要在一个合理的范围之内,这样才能保证M ...

最新文章

  1. 欢迎使用Markdown编辑器写博客
  2. SharePoint Calendar Webparts
  3. php 制造异常,php 异常
  4. C++小型公司管理系统
  5. 2021年Java开发者应该学习的技术
  6. Android 项目之电话拨号器
  7. 咸鱼3D打印—3D打印的基本流程
  8. DNS域名解析中添加的各项记录详解
  9. 品牌制造商做电子商务的成本结构分析
  10. 电源完整性之仿真设计原理
  11. python logging动态变更输出日志文件名
  12. sqlserver数据库限制用户登录失败次数
  13. Python机器学习笔记之pandas绘图
  14. 简单聊一聊UseCompressedOops UseCompressedClassPointers这两个JVM参数
  15. Win7系统下文件或程序无法选择默认打开方式如何解决
  16. Linux中超级用户root的密码破解与防止破解方法
  17. 百度脱壳的一点尝试--人肉修复
  18. 基于stm32单片机的WIFI智能联网天气预报自动校时系统(源码+原理图+全套资料)
  19. com.alibaba.fastjson.JSONException: illegal identifier : pos 2, json : [{quot;idquot;:1,quot;}]
  20. vue调用微信qpi

热门文章

  1. 研究生学习生活日记——第五次组会
  2. YouTube热门视频的分析
  3. BZOJ4011: [HNOI2015]落忆枫音
  4. 几何分布(一种离散分布)
  5. 关于Word插入图片闪退
  6. 如何卸载deepfreeze(冰点还原)
  7. 计算机过热保护,CPU过热 保护电脑关机的解决办法有哪些
  8. swagger导出接口文档
  9. veu +Apipost下拉框选项绑定数据库
  10. git-commit-amend踩坑