ベアメタル16x 2.93GHzコアコンピューターのパフォーマンスが、4x 2.5GHzコアのVPSよりも劣るのはなぜですか?


34

私は、1日に大量のシミュレーションを実行するマルチスレッドソフトウェアを作成しました。これは非常にCPUを集中的に使用するタスクであり、このプログラムをクラウドサービス(通常はコアあたり1GBの構成)で実行しています。

CentOS 6.7を実行し/proc/cpuinfoていますが、4つの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はより高価になり始め、使用済みのベアメタルサーバーで「大いに」なりました。

それぞれ4つのIntel Xeon X7350を備えた4 つのHP DL580 G5を購入しました。基本的に、各マシンには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コアを使用して、1分あたり約900のシミュレーションを取得しています。
  3. 合計64個の2.93GHzコアを使用するDL580では、1分あたり300のシミュレーションしか得られません。

DL580には古いプロセッサが搭載されていることを理解しています。しかし、コアごとに1つのスレッドを実行しており、ベアメタルサーバーのコアが高速の場合、なぜVPSよりパフォーマンスが低いのですか?

どのサーバーでもメモリスワップが発生していません。

TOPは、プロセッサが100%で実行されていると言います。平均負荷は18です(VPSで5)。

これはこうなるのでしょうか、それとも何か不足していますか?

lscpuを実行すると、ベアメタルサーバーで1.6 GHzが得られます。これは/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
8年前のプロセッサは、現在のプロセッサよりもクロックサイクルごとにはるかに少ないためです。
マイケルハンプトン

3
BIOS設定をデフォルトにリセットすることをお勧めします。これらのサーバーも、最適でない構成を持っているように聞こえます。以下の私の編集を参照してください。
ewwhite

コアごとに1つのスレッドのみを実行してみてください。コアが遅い場合、負荷が高いということは、CPUがタスクの切り替えに多くの時間を費やしており、処理が少なくなっていることを意味します。
ニモ

「CPUベンチマーク」をインターネットで検索して、パフォーマンスの比較を見つけることができます。私のお気に入りのリソースはCPUBenchmark.netです。

6
キャッシュサイズの違いも見てください。キャッシュミスはひどい場合があります。
acelent

回答:


44

プロセッサの進歩、クロック速度、IPC計算により、10年前のCPUと最新のCPUを合理的に比較することはほとんど不可能になります。サイクルごとの命令は変化するだけでなく、新しいプロセッサには複雑な計算専用の命令セットがあります(Intelは例としてAES-NIを追加しました)、これらの要因により、クロック速度はもはや妥当な比較器ではありませんマルチコアとハイパースレッディング...)。十分な時間と忍耐があれば、古いprocの数が新しいprocの数に等しいかどうかを確実に把握できますが、新しいCPUを購入する方が安くて速いと計算されます。


2
各プロセッサのCPUベンチマークを比較することで、すでにこれを実行しているWebサイトがたくさんあります。
マイケルハンプトン

4
ない正確なしかし、ここのためのPassMarkのベンチマークである2.70GHzのIntel Xeon E5-2680 @のIntel Xeon X7350は、@ 2.93GHz
chue X

ベンチマークの問題は、その性質上、その特定のプロセッサ向けに最適化されていないことです。大まかな見積もりには悪いことではありませんが、それぞれに最適な命令セットで書き直し、再コンパイルする必要があります。非常にいくつかのツールは、x 『を算出すること「できる回数』以外で書かれている。
ジム・B

1
@JimB、はい。ただし、OPシミュレーションは特定のCPU向けに最適化されていない場合があります。(もしそうなら、私はそれを逃した、申し訳ありません)
デビッドバラジック

1
おそらくいいえ。その場合、プログラムが再コンパイルされない限り、シミュレーションは事実上のベンチマークです。サードパーティのベンチマークは、それほど正確ではありません。
ジムB

32

私は何かを強調することによって、ひどい音にしたくないはずです、ここでは明らかであるが、しかし、あなたは比較している2014年からハイエンドのサーバプロセッサをするからハイエンドサーバプロセッサ2007

これにはこれ以上の説明は必要ないと思います。

HP ProLiant DL580 G5今日非常に安価に入手できるのには理由があります。それらは大きく、低速で、最新のサーバーに必要な多くの機能が欠けていました。私は2009年に私の最後の1つを売りました。それは悪い購入であり、使用済みの機器を購入せざるを得ない場合は、NehalemまたはWestmere CPUファミリーのCPUを使用したほうがよいでしょう。

さらに、購入したサーバーは消費電力の点で非常に非効率的であるため、運用コストが高くなります。


物理サーバーが、CPUクロック速度を縮小した省電力モードで実行されているように見えます。BIOSを起動し(ブート時にF9を押します)、サーバーを工場出荷時のデフォルトにリセットします(他に何がデフォルトから変更されたか知っていますか?

ここに画像の説明を入力してください


7
@GlaucoCattaliniLins番号
-ewwhite

1
それについて詳しく説明していただけますか?消化に問題があります。私は他のモデルのために変更するオプションがありますので、それに関してはそれを正しくしたいです。-最初は、E5のキャッシュサイズ(30MB)になると考えていましたが、他のVPSで共有されます。
グラウコカタタリーニリンズ

11
@GlaucoCattaliniLins X7350は、Core 2マイクロアーキテクチャに基づいています。実際、Core 2 Quadに匹敵します(最後にそれらを聞いてからどれくらい経ちますか?)。非常に古いため、SSE4 +、AVX(2)、FMA、またはAES命令をサポートしていません。そのため、シミュレーションが数値の場合は、2倍以上のペナルティがかかり、AES暗号化速度はさらに低下します。最後に、IntelはCore 2以降、6つのマイクロアーキテクチャの改善をリリースしました。それぞれが、より多くの命令を並列または順不同で実行するCPUのメモリ帯域幅の能力を向上させます。
Iwillnotexist Idonotexist

10
@GlaucoCattaliniLins対照的に、VPSサーバーはFMAをサポートしているため、少なくともHaswellマイクロアーキテクチャと同じくらい新しいものです。FMA命令により、乗算と加算を2対1で行うことができ、Haswellのすべて(命令デコーダー、リオーダーバッファー、分岐予測子、メモリ帯域幅、ALU)が調整され、デュアルベクトルFMAを供給し続けることができます。 。したがって、Haswellは、1クロックサイクルで 1)の形式の2つの8要素ベクトル演算float d = a + b*c、2)2つの32バイトロード(aおよびb)、3)1つの32バイトストア(d)を維持できます。驚くほどうまく調整されています。
Iwillnotexist Idonotexist

2
@IwillnotexistIdonotexist:彼はほぼ確実にで各マシンを個別にコンパイルしなかった-march=nativeので、彼のコードはどちらのシステムでもSSE2のみを使用していると思います。メモリ帯域幅はおそらくボトルネックだと思います。彼のカーネルがNUMAをサポートしていない場合、または彼のシムの割り当てパターンがNUMAに対応していない場合。これは、各ソケットにデュアルチャネルメモリコントローラーを備えたクアッドソケットクアッドコアですか?
ピーター・コーデス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.