服务器性能之CPU

有时我们会发现开发的应用在CPU核数一样的虚拟服务器上性能表现出较大的差异,这是为什么呢?上次有童鞋问到我这样一个问题,所以我根据自己的理解给大家简说下!

CPU生产商为了提高CPU的性能,通常做法是提高CPU的时钟频率和增加缓存容量。不过目前CPU的频率越来越快,如果再通过提升CPU频率和增加缓存的方法来提高性能,往往会受到制造工艺上的限制以及成本过高的制约。于是出现了超线程技术。

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

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

原文地址:https://www.cnblogs.com/qwop/p/6637367.html