我编写了一个多线程软件,每天进行大量模拟。这是一项非常占用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来执行这些批处理工作。现在这很奇怪...
- 在VPS上,我一直在每个内核上运行1.25线程,就像在裸机上一样。(额外的0.25线程用于补偿由网络使用引起的空闲时间。)
- 在我的VPS上,总共使用44个2.5GHz内核,每分钟可以进行近900次仿真。
- 在总共使用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