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

Gla*_*ins 34 performance vps performance-tuning batch-processing centos6

我写了一个多线程软件,每天做一堆模拟。这是一个非常占用 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:
Run Code Online (Sandbox Code Playgroud)

随着汇率的上涨,我的 VPS 开始变得更加昂贵,而且我在使用过的裸机服务器上“划算”。

我购买了四台HP DL580 G5,每台配备四台英特尔至强 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:
Run Code Online (Sandbox Code Playgroud)

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

  1. 在 VPS 上,我一直在每个核心上运行 1.25 个线程,就像我在裸机上所做的一样。(额外的0.25线程是为了补偿网络使用造成的空闲时间。)
  2. 在我的 VPS 上,总共使用 44 个 2.5GHz 内核,每分钟进行近 900 次模拟。
  3. 在我的 DL580 上,总共使用 64 个 2.93GHz 内核,每分钟只能进行 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
Run Code Online (Sandbox Code Playgroud)

Jim*_*m B 44

处理器的进步、时钟速度和 IPC 计算几乎不可能将十年前的 CPU 与现代 CPU 进行合理的比较。不仅每个周期的指令会有所不同,而且较新的处理器具有专用于复杂计算的指令集(例如,英特尔添加了 AES-NI),由于这些因素,时钟速度不再是合理的比较器(我有没有提到多核与超线程......)。有足够的时间和耐心,你当然可以算出有多少旧的 proc 等于 1 个新的 proc,但计算最终会表明购买新 CPU 更便宜、更快。

  • 不准确,但这里是 [Intel Xeon E5-2680 @ 2.70GHz] 的 Passmark 基准测试(http://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5-2680+%40+2.70GHz) vs [英特尔至强 X7350 @ 2.93GHz](https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+X7350+%40+2.93GHz&id=2156&cpuCount=4) (4认同)
  • 通过比较每个处理器的 CPU 基准,有很多网站已经这样做了。 (2认同)

eww*_*ite 32

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

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

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

此外,您购买的服务器在功耗方面非常低效,因此它们的运行成本会很高。


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

在此处输入图片说明

  • @GlaucoCattaliniLins X7350 基于 Core 2 微架构。事实上,它可以与 _Core 2 Quad_ 相媲美(距离你上次听说过有多久了?)。它太老了,不支持 SSE4+、AVX(2)、FMA 或 AES 指令,所以如果你的模拟是数值模拟,它们会在那里受到 >2x 的惩罚,而 AES 加密速度会受到更大的影响。最后,英特尔自 Core 2 以来发布了 6 项微架构改进,每一项改进都提高了 CPU 并行或无序运行更多指令的能力,即内存带宽。 (11认同)
  • @GlaucoCattaliniLins 相比之下,您的 VPS 服务器支持 FMA,因此它至少与 Haswell 微架构一样新。FMA 指令允许进行二合一的乘法和加法,并且 Haswell 中的所有内容(指令解码器、重排序缓冲区、分支预测器、内存带宽、ALU)都已经过调整,以便可以保持对双向量 FMA 的馈送. 因此,Haswell 可以在单个时钟周期内维持 **:** 1) 两个 8 元素向量运算,形式为 `float d = a + b*c`,2) 两个 32 字节加载(`a` 和`b`) 和 3) 一个 32 字节的存储(`d`)。它的调整非常好。 (10认同)
  • @GlaucoCattaliniLins 没有。 (7认同)
  • @IwillnotexistIdonotexist:他几乎肯定没有用`-march=native` 为每台机器单独编译,所以我猜他的代码只在任一系统上使用 SSE2。我猜内存带宽可能是一个瓶颈,尤其是。如果他的内核没有 NUMA 支持,或者他的 SIM 卡的分配模式对 NUMA 不友好。这是什么,四插槽四核,每个插槽上都有双通道内存控制器? (2认同)