Linux 超线程
1. 定义
超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。 以前的单核心处理器,在同一时间内只可以处理一项工作(线程:Thread),如果同时要处理一项以上的任务是不可能,在这种需求的驱使下,Intel开发了超线程技术,以一个单核心去模拟双核心的环境,但是这并非能够把处理器的效能提高双倍,因为它的本质上还只是一个核心,效能大约有20%-30%的增加。
超线程技术拥有很高的功耗效能比,加入超线程技术所增加的晶体管数目并不多以及功耗并不多,但是相比于增加一个完整的核心更具有性价比,另外加上i7架构拥有高带宽及高容量三级高速缓存的优势,更能将超线程技术的功耗发挥到极致。
2.比较
超线程处理器
它并不是物理上的多核,是逻辑上的,将一个物理核通过超线程技术模拟成两个逻辑核,迷惑操作系统,使得操作系统将自己视为两个物理核。
多核处理器
它是直接提供了多个物理上的处理器,只是这些处理器被封装到同一个芯片里并只占用一个处理器槽而已。
多处理器
多个处理器插槽。
3.怎么看一个机器是否开启超线程
(1)看物理cpu的个数
$ cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
2
(2)看每个物理cpu中core的个数(即平时说的几核几核)
$ cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F ":" '{print $2}'
6
(3)看每个物理cpu中逻辑cpu的个数
$ cat /proc/cpuinfo | grep "siblings" | uniq | awk -F ":" '{print $2}'
12
(4)怎么看
很明显,如果(3)的数字是(2)两倍,即每个物理cpu中逻辑core数是物理core数的两倍,那个就是开启了超线程。如果相等则没有,本文例子中12 = 6 * 2,故开启了超线程。
如何打开和关闭超线程
在BIOS中修改,这里不详细给出。
参考
【1】 http://baike.baidu.com/view/2794151.htm
【2】http://www.cppblog.com/guogangj/archive/2010/03/29/110801.html
【3】http://www.ipcpu.com/2010/08/linux-cpu-info/
【4】http://www.richweb.com/cpu_info