我已经写了一个multithreading软件,每天做一堆模拟。 这是一个非常耗费CPU资源的任务,我一直在云服务上运行这个程序,通常是每个核心1GB的configuration。
我正在运行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。 基本上,每台机器都有16x 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来执行这些批处理作品。 现在这是奇怪的东西…
我了解DL580有一个较旧的处理器。 但是,如果我为每个内核运行一个线程,而裸机服务器的核心速度更快,为什么它比我的VPS差呢?
我没有在任何服务器上发生内存交换。
TOP说我的处理器运行在100%。 我的平均负载为18(VPS为5)。
这会是这样,还是我错过了什么?
运行lscpu给我1.6GHz的裸机服务器。 这也出现在/proc/cpuinfo
。
这些信息是否正确?或者是否与某些不正确的电源pipe理有关?
[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
处理器的进步,时钟速度和IPC的计算可能使得几乎不可能尝试合理比较十年前的CPU和现代的CPU。 不仅每个周期的指令会有所不同,而且更新的处理器具有专用于复杂计算的指令集(英特尔已经添加了AES-NI作为示例),由于这些因素,时钟速度不再是合理的比较器多核心与超线程…)。 有了足够的时间和耐心,你一定能弄清楚有多less旧的proc等于一个新的proc,但计算最终会说它更便宜,更快地购买一个新的CPU。
Iwillnotexist Idonotexist
评论扩展了这个答案:
@GlaucoCattaliniLins X7350基于Core 2微架构。 事实上,它可以与Core 2 Quad相媲美(自从你上次听说这些以来,它已经有多久了?)。 它太老了,它不支持SSE4 +,AVX(2),FMA或AES指令,所以如果你的模拟是数值的话,那么它就会受到> 2倍的惩罚,并且AESencryption速度会受到更多的影响。 最后,英特尔从Core 2开始发布了6个微架构改进,并且每个都增加了CPU并行或不按顺序运行更多指令的能力,即内存带宽。 – Iwillnotexist Idonotexist
@GlaucoCattaliniLins相比之下,您的VPS服务器支持FMA,所以它至less与Haswell微架构一样新。 FMA指令允许我们进行乘法和加法二合一,并且Haswell中的所有内容(指令解码器,重sorting缓冲器,分支预测器,内存带宽,ALU)都已经被调整,以便双向vectorFMA可以保持馈送。 Haswell可以在一个时钟周期内维持:1)两个8元素的vector运算,forms为float d = a + b * c,2)两个32字节的加载(a和b)和3)字节存储(d)。 这是惊人的调整。 – Iwillnotexist Idonotexist
我不想听起来很糟糕,强调一些在这里应该是显而易见的东西,但是你比较了从2014年 的高端服务器处理器到2007年的高端服务器处理器 。
我不认为这需要更多的解释。
HP ProLiant DL580 G5现在价格便宜,这是有原因的。 它们庞大,速度慢,缺乏许多在现代服务器中所需要的function。 我在2009年卖掉了我的最后一个 。 这是一个不好的购买,如果你被迫购买二手设备,你最好用Nehalem或Westmere CPU系列的CPU。
另外,您购买的服务器在功耗方面效率非常低,所以它们的操作成本很高。
看起来好像您的物理服务器正在节能模式下运行,缩减了您的CPU时钟速度。 你会想要进入BIOS(在启动时按F9),并将服务器重置为出厂默认设置( 谁知道还有什么修改默认? )