程序员人生 网站导航

透过CPU看应用程序的性能

栏目:框架设计时间:2016-03-01 09:07:57

有时我们会发现开发的利用在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),可以看出此处未使用超线程技术,以下所示:

这里写图片描述

  1. 上述2台虚拟机,从CPU的角度讲哪台性能会发挥地更好呢?
    答:从逻辑处理器数量来看,2台虚拟机都是4个,但从主频和缓存大小可以看出,虚拟机2的性能应当比虚拟机1好。

  2. 如果2台虚拟机的主频和缓存大小1样呢,从CPU的角度看哪台性能更好呢?
    答:从逻辑处理器数量来看,2台虚拟机1样,而虚拟机1使用了超线程技术,理论上讲虚拟机1的性能比较靠近虚拟机2的性能,条件的是我们开发利用要支持超线程技术,否则也没法发挥出良好的性能!这里面其实还有1个误区:
    比如说,我们的利用使用多线程技术开发的,那末在CPU层面开启了超线程技术,1定会提高性能吗?答案是不是定的!只有当利用程序使用的线程数大于CPU的核数,性能才能提高上去!

PS~~今天就总结到这里,欢迎大家来讨论和交换!

版权声明:本文为博主原创文章,未经博主允许不得转载。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐