为什么我的裸机16x 2.93GHz内核计算机的性能比具有4x 2.5GHz内核的VPS差?


34

我编写了一个多线程软件,每天进行大量模拟。这是一项非常占用CPU的任务,我一直在云服务上运行此程序,通常在每个内核1GB之类的配置上运行。

我正在运行CentOS 6.7,/proc/cpuinfo这使我的四个VPS内核为2.5GHz。

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
stepping        : 2
microcode       : 1
cpu MHz         : 2499.992
cache size      : 30720 KB
physical id     : 3
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 3
initial apicid  : 3
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm arat xsaveopt fsgsbase bmi1 avx2 smep bmi2 erms invpcid
bogomips        : 4999.98
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

随着汇率的上升,我的VPS开始变得更加昂贵,并且我在二手裸机服务器上达成了“一笔大买卖”。

我购买了四台HP DL580 G5,每台都有四台Intel Xeon X7350。基本上,每台机器都具有16个2.93GHz内核和16GB,以保留VPS云之类的功能。

processor       : 15
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Xeon(R) CPU           X7350 @ 2.93GHz
stepping        : 11
microcode       : 187
cpu MHz         : 1600.002
cache size      : 4096 KB
physical id     : 6
siblings        : 4
core id         : 3
cpu cores       : 4
apicid          : 27
initial apicid  : 27
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca lahf_lm dts tpr_shadow vnmi flexpriority
bogomips        : 5866.96
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

从本质上讲,这似乎很重要,因为我可以停止使用VPS来执行这些批处理工作。现在这很奇怪...

  1. 在VPS上,我一直在每个内核上运行1.25线程,就像在裸机上一样。(额外的0.25线程用于补偿由网络使用引起的空闲时间。)
  2. 在我的VPS上,总共使用44个2.5GHz内核,每分钟可以进行近900次仿真。
  3. 在总共使用64个2.93GHz内核的DL580上,我每分钟只能得到300个仿真。

我了解DL580的处理器较旧。但是,如果我每个内核运行一个线程,并且裸机服务器的内核速度更快,为什么它的性能比我的VPS差?

我在任何服务器上都没有发生内存交换。

TOP说我的处理器以100%运行。我的平均负载为18(VPS为5)。

这是这样吗,还是我错过了什么?

运行lscpu可使我在裸机服务器上达到1.6GHz。在上也看到了/proc/cpuinfo这一点。

此信息正确无误,还是与某些不正确的电源管理有关?

[BARE METAL] $ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                16
On-line CPU(s) list:   0-15
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             4
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 15
Stepping:              11
**CPU MHz:               1600.002**
BogoMIPS:              5984.30
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K
NUMA node0 CPU(s):     0-15


[VPS] $ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             4
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 63
Stepping:              2
**CPU MHz:               2499.992**
BogoMIPS:              4999.98
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0-3

32
因为已有八年历史的处理器在每个时钟周期内的工作量远远少于当前处理器。
迈克尔·汉普顿

3
您需要将BIOS设置重置为默认设置。这些服务器听起来好像它们也具有非最佳配置。请参阅下面的编辑。
ewwhite

您应该尝试每个内核仅运行1个线程。如果内核速度很慢,那么高负载可能意味着CPU花费大量时间切换任务,而完成的工作却很少。
Nemo

您可以在Internet上搜索“ CPU基准”以查找性能比较。我最喜欢的资源是CPUBenchmark.net

6
还要看看缓存大小的差异。高速缓存未命中可能会很糟糕。
2015年

Answers:


44

处理器的进步,时钟速度和IPC计算使几乎不可能试图将十年历史的CPU与现代CPU进行合理比较。不仅每个周期的指令会发生变化,而且较新的处理器具有专用于复杂计算的指令集(英特尔已添加AES-NI作为示例),由于这些因素,时钟速度不再是合理的比较器(我提到过)多核与超线程...)。只要有足够的时间和耐心,您当然可以算出有多少旧版本的进程等于1个新版本的proc,但是计算结果最终表明,购买新CPU的成本更低,速度更快。


2
通过比较每个处理器的CPU基准,已经有很多网站可以做到这一点。
迈克尔·汉普顿


基准测试的问题在于,就其本质而言,它并未针对该特定处理器进行优化。对于粗略的估计来说还不错,但是您必须重写并重新编译每个指令的最佳指令集。极少数的工具是书面的不是“多少次‘X’来计算其他任何事。
吉姆乙

1
@JimB,是的,但是OP仿真可能也未针对特定CPU进行优化。(如果是,我错过了,对不起)
DavidBalažic15年

1
可能不是,在这种情况下,除非重新编译程序,否则模拟实际上是基准。第三方基准将不太准确。
Jim B

32

我不想听起来强调的东西,可怕的应该是显而易见的在这里,但你是一个比较2014年高端服务器处理器高端服务器处理器将从2007年

我认为这不需要更多解释。

HP ProLiant DL580 G5 如此便宜的价格是有原因的。它们很大,很慢并且缺少许多现代服务器所需的功能。我在2009年卖掉了我的最后一个。这是一个很糟糕的购买,如果您被迫购买二手设备,最好使用Nehalem或Westmere CPU系列的CPU。

此外,您购买的服务器在功耗方面效率很低,因此操作成本很高。


看来您的物理服务器正在以节能模式运行,从而降低了CPU时钟速度。您将要进入BIOS(在启动时按F9键)并将服务器重置为出厂默认设置(谁知道从默认设置还进行了哪些修改?

在此处输入图片说明


7
@GlaucoCattaliniLins号
ewwhite

1
您能详细说明一下吗?我在消化它时遇到了麻烦。我可以选择更改其他型号,因此在这种情况下我想正确处理。-起初我坚信这可能是E5的缓存大小(30MB),但随后它将在其他VPS之间共享。
Glauco Cattalini Lins

11
@GlaucoCattaliniLins X7350基于Core 2微体系结构。实际上,它可以与Core 2 Quad相提并论(自您上次听说以来已有多长时间了?)。它太老了,不支持SSE4 +,AVX(2),FMA或AES指令,因此,如果您的仿真是数值模拟,则那里的代价是> 2倍,而AES加密速度的损失甚至更大。最后,英特尔从内核2开始发布了6项微体系结构改进,每一项改进都提高了CPU并行运行或无序运行更多指令(内存带宽)的能力。
Iwillnotexist Idonotexist

10
@GlaucoCattaliniLins相比之下,您的VPS服务器支持FMA,因此它至少与Haswell微体系结构一样新。FMA指令允许一个人进行乘法和加法二合一,并且Haswell中的所有内容(指令解码器,重排序缓冲区,分支预测变量,内存带宽,ALU)都已经过调整,因此可以保持双矢量FMA的馈送。 。因此,Haswell可以在一个时钟周期内维持 1)形式为float d = a + b*c2的两个8元素向量运算,2)两个32字节的加载(the ab),以及3)一个32字节的存储(the d)。调整得非常好。
Iwillnotexist Idonotexist 2015年

2
@IwillnotexistIdonotexist:他几乎可以肯定没有使用分别为每台机器编译-march=native,因此我猜他的代码在两个系统上都仅使用SSE2。我猜想内存带宽可能是一个瓶颈,尤其是。如果他的内核不支持NUMA,或者他的sim的分配模式对NUMA不友好。这是什么,四路插槽四核,每个插槽上都有双通道内存控制器?
彼得·科德斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.