有时我们会发现开发的利用在CPU核数1样的虚拟服务器上性能表现出较大的差异,这是为何呢?上次有童鞋问到我这样1个问题,所以我根据自己的理解给大家简说下!
CPU生产商为了提高CPU的性能,通常做法是提高CPU的时钟频率和增加缓存容量。不过目前CPU的频率愈来愈快,如果再通过提升CPU频率和增加缓存的方法来提高性能,常常会遭到制造工艺上的限制和本钱太高的制约。因而出现了超线程技术。
超线程技术:将1颗具Hyper-Threading功能的“实体”处理器变成两个“逻辑”处理器。
Linux命令:
cat /proc/cpuinfo
参数解释:
processor 逻辑处理器的id
physical id 物理封装的处理器的id
core id 每一个核心的id
cpu cores 位于相同物理封装的处理器中的内核数量
siblings 位于相同物理封装的处理器中的逻辑处理器的数量
cpu MHz 主频
cache size 缓存大小(KB)
我们先看来虚拟服务器1的CPU配置信息:
说明:该服务器主机有2个物理封装的处理器(physical id),每一个处理器有1个处理核心(cpu cores),每一个处理核心划分成2个逻辑处理器(processor),可以看出此处使用了超线程技术,以下所示:
再看来虚拟服务器2的CPU配置信息:
说明:该服务器主机有1个物理封装的处理器(physical id),每一个处理器有4个处理核心(cpu cores),每一个处理核心划分成1个逻辑处理器(processor),可以看出此处未使用超线程技术,以下所示:
上述2台虚拟机,从CPU的角度讲哪台性能会发挥地更好呢?
答:从逻辑处理器数量来看,2台虚拟机都是4个,但从主频和缓存大小可以看出,虚拟机2的性能应当比虚拟机1好。
如果2台虚拟机的主频和缓存大小1样呢,从CPU的角度看哪台性能更好呢?
答:从逻辑处理器数量来看,2台虚拟机1样,而虚拟机1使用了超线程技术,理论上讲虚拟机1的性能比较靠近虚拟机2的性能,条件的是我们开发利用要支持超线程技术,否则也没法发挥出良好的性能!这里面其实还有1个误区:
比如说,我们的利用使用多线程技术开发的,那末在CPU层面开启了超线程技术,1定会提高性能吗?答案是不是定的!只有当利用程序使用的线程数大于CPU的核数,性能才能提高上去!
PS~~今天就总结到这里,欢迎大家来讨论和交换!
版权声明:本文为博主原创文章,未经博主允许不得转载。