Çıplak metal 16x 2.93GHz çekirdekli bilgisayarım neden 4x 2.5GHz çekirdekli bir VPS'den daha zayıf çalışıyor?


34

Günde bir sürü simülasyon yapan çok parçalı bir yazılıma sahibim. Bu oldukça yoğun bir işlemdir ve bu programı bulut servislerinde, genellikle çekirdek başına 1GB gibi yapılandırmalarda çalıştırıyorum.

Ben koşuyorum CentOS 6.7 ve /proc/cpuinfobenim dört VPS çekirdekler 2.5GHz olduğunu bana verir.

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:

Döviz kurlarındaki artışla birlikte, VPS'm daha pahalı olmaya başladı ve kullanılmış metal sunucuları kullanmaya başladım.

Her biri dört Intel Xeon X7350 olan dört adet HP DL580 G5 satın aldım. Temel olarak, her makinenin VPS bulutum gibi şeyleri saklamak için 16x 2.93GHz çekirdeği ve 16 GB'ı var .

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:

Temelde, bu toplu işleri yapmak için VPS’leri kullanmayı bırakabildiğim için çok iyi görünüyordu. Şimdi tuhaf şeyler ...

  1. VPS'de, tıpkı çıplak metal üzerinde yaptığım gibi, çekirdek başına 1.25 iplik kullanıyorum. (Ekstra 0.25 iş parçacığı, ağ kullanımının neden olduğu boşta kalma süresini telafi etmektir.)
  2. VPS'imde, toplamda 44x 2.5GHz çekirdeği kullanarak, dakikada yaklaşık 900 simülasyonu alıyorum.
  3. DL580'imde, toplam 64x 2.93GHz çekirdeği kullanarak, sadece dakikada 300 simülasyon alıyorum.

DL580'in daha eski bir işlemcisi olduğunu biliyorum. Ancak çekirdek başına bir iş parçacığı çalıştırıyorsam ve metal sunucunun daha hızlı bir çekirdeği varsa, neden VPS'imden daha düşük performans gösteriyor?

Sunuculardan hiçbirinde bellek takası olmadı.

TOP, işlemcilerimin% 100 çalıştığını söylüyor. Ortalama 18 yük alırım (VPS'de 5).

Bu böyle mi olacak, yoksa bir şey mi kaçırıyorum?

Lscpu'yu çalıştırmak çıplak metal sunucumda bana 1.6GHz veriyor. Bu da görüldü /proc/cpuinfo.

Bu bilgi doğru mu, yoksa bazı yanlış güç yönetimi ile bağlantılı mı?

[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
Çünkü sekiz yaşındaki işlemciler saat işlemlerinde mevcut işlemcilerden çok daha azını yapıyor.
Michael Hampton

3
BIOS ayarlarınızı varsayılana sıfırlamak isteyeceksiniz. Bu sunucular, üzerinde de optimal olmayan bir yapılandırmaya sahip gibi görünüyor. Aşağıdaki düzenlememe bakın.
ewwhite

Çekirdek başına yalnızca 1 iş parçacığı çalıştırmayı denemelisiniz. Çekirdek yavaşsa, yüksek bir yük CPU'nun çok fazla zaman harcayan görev harcadığı ve daha az iş yaptığı anlamına gelebilir.
Nemo

Performans karşılaştırmalarını bulmak için İnternet'te "CPU benchmarklarını" arayabilirsiniz. En sevdiğim kaynak CPUBenchmark.net .

6
Önbellek boyutu farkına da bir göz atın. Önbellek özlüyor korkunç olabilir.
acelent

Yanıtlar:


44

İşlemci gelişmeleri, saat hızı ve IPC hesaplamaları, on yıllık eski CPU'ları modern olanlarla makul şekilde karşılaştırmayı denemeyi neredeyse imkansız hale getirebilir. Yalnızca döngü başına talimatlar değişmekle kalmaz, aynı zamanda daha yeni işlemciler karmaşık hesaplamalara yönelik talimat setlerine sahiptir (Intel örnek olarak AES-NI'yi eklemiştir), saat hızı artık bu faktörlerden dolayı makul bir karşılaştırıcı değildir (bahsetmiş miydim? çok çekirdekli vs hiper-uçlar ...). Yeterli zaman ve sabrınızla, daha ne kadar eski işlemin 1 yeni işleme eşittir, ancak hesaplamalar yeni bir CPU almak için daha ucuz ve daha hızlı olduğunu söyleyerek sona erecektir.


2
Her işlemcinin CPU kriterlerini karşılaştırarak, zaten bunu yapan web siteleri var.
Michael Hampton,


Bir kıyaslama ile ilgili sorun, doğası gereği, söz konusu işlemci için optimize edilmemiş olmasıdır. Kaba bir tahmin için fena değil, ancak her biri için en iyi talimatlarla yeniden yazmak ve derlemek zorunda kalacaksınız. Çok az sayıda araç "x" hesaplanabilir "x" dışında başka bir şeyle yazılmıştır
Jim B

1
@JimB, evet, ancak OP'lerin simülasyonu da belirli bir CPU için optimize edilmemiş olabilir. (eğer öyleyse, kaçırdım, üzgünüm)
David Balažic

1
Muhtemelen hayır, bu durumda, program yeniden derlenmediği sürece simülasyon bu kriterle karşılaştırılır. Üçüncü taraf bir kıyaslama daha az doğru olacaktır.
Jim B

32

Burada açık olması gereken bir şeyi vurgulayarak çok kötü görünmek istemiyorum , ancak 2014'ten itibaren bir üst düzey sunucu işlemcisini 2007'den itibaren bir üst düzey sunucu işlemcisiyle karşılaştırıyorsunuz .

Bunun daha fazla açıklama gerektirdiğini sanmıyorum.

Bir bir nedeni var HP ProLiant DL580 G5 kullanılabilir böylece ucuza bugün . Büyük, yavaştılar ve daha modern sunucularda istenen birçok özelliğe sahip değillerdi. Sonuncusunu 2009'da sattım . Kötü bir satın alma olmuştu ve kullanılmış ekipman satın almak zorunda kalırsanız Nehalem veya Westmere CPU ailelerinin bir işlemcisi ile daha iyi hizmet alacaktınız.

Ek olarak, satın aldığınız sunucular güç tüketimi açısından çok verimsizdir, bu nedenle kullanımı pahalı olacaktır.


Fiziksel sunucularınız CPU saat hızınızı azaltan güç tasarrufu modunda çalışıyor gibi görünüyor. BIOS'a girmek (önyüklemede F9 tuşuna basın) ve sunucuyu fabrika ayarlarına sıfırlamak isteyeceksiniz ( kim varsayılandan neyin değiştirildiğini bilen var? )

görüntü tanımını buraya girin


7
@GlaucoCattaliniLins No.
ewwhite

1
Bunu açıklayabilir misiniz? Onu sindirmekte zorlanıyorum. Diğer modeller için de değişiklik yapma seçeneğim var, bu yüzden eğer öyleyse doğru yapmak istiyorum. - İlk başta, E5'in önbellek boyutu (30 MB) olabileceğini, ancak diğer VPS'ler arasında paylaşılacağını öğrendim.
Glauco Cattalini

11
@GlaucoCattaliniLins X7350, Core 2 mikro mimarisine dayanmaktadır. Aslında, Core 2 Quad ile karşılaştırılabilir (Bunları en son duyduğunuzdan beri ne kadar zaman geçti?). SSE4 +, AVX (2), FMA veya AES komutlarını desteklemediği için çok eski, bu nedenle simülasyonlarınız sayısal ise, orada> 2x ceza alıyorlar ve AES kripto hızı daha da zorlanıyor. Son olarak, Intel, Core 2'den bu yana 6 mikro mimari geliştirme yaptı ve her biri CPU'nun bellek bant genişliğine paralel veya sıra dışı olarak daha fazla komut çalıştırma yeteneğini artırdı.
Idonotexist

10
@GlaucoCattaliniLins Buna karşılık VPS sunucunuz FMA'yı destekliyor, bu yüzden en azından Haswell mikro mimarisi kadar yeni. FMA talimatı, birinin bir çarpma ve toplama işlemini bir arada yapmasına izin verir ve Haswell'deki (talimat kod çözücüler, yeniden sıralama tamponu, dal tahmin edicileri, bellek bant genişliği, ALU'lar) her şey, çift vektör FMA'ların beslenebilmesi için ayarlandı. . Haswell böylece tek bir saat döngüsünde devam edebilir : 1) Formun iki adet 8 elemanlı vektör işlemi float d = a + b*c, 2) İki adet 32 ​​baytlık yük ( ave b) ve 3) bir adet 32 ​​baytlık depo ( d). İnanılmaz derecede iyi ayarlanmış.
Idonotexist

2
@IwillnotexistIdonotexist: hemen hemen kesinlikle her makine için ayrı ayrı derleme yapmadı -march=native, bu yüzden kodunu yalnızca iki sistemde de SSE2 kullandığını tahmin ediyorum. Bellek bant genişliği muhtemelen bir darboğaz olduğunu tahmin ediyorum, esp. Eğer çekirdeği NUMA desteğine sahip değilse, veya sim'in tahsis biçimleri NUMA dostu değil. Dört soket dört çekirdekli, her soket üzerinde çift kanallı bellek denetleyicisine sahip olan nedir?
Peter Cordes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.