Чому мій гострий металевий ядро ​​16x 2,93 ГГц працює гірше, ніж VPS з 4х 2,5 ГГц ядрами?


34

У мене є написаний фрагмент багатопотокового програмного забезпечення, який робить купу симуляцій на день. Це дуже інтенсивна процесорна задача, і я запускав цю програму в хмарних сервісах, як правило, в конфігураціях на зразок 1 Гб на ядро.

Я запускаю CentOS 6.7 і /proc/cpuinfoдає мені зрозуміти , що мої чотири ядра VPS мають 2,5 ГГц.

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,93 ГГц ядер і 16 Гб, щоб зберігати такі речі, як моя хмара 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, використовуючи загально 44x 2,5 ГГц ядер, я отримую майже 900 моделювання в хвилину.
  3. На моєму DL580, використовуючи в цілому ядра 64x 2,93 ГГц, я отримую лише 300 моделювання в хвилину.

Я розумію, що в DL580 є старіший процесор. Але якщо я запускаю один потік на ядро, а сервер голого металу має більш швидке ядро, чому він працює бідніше, ніж мій VPS?

У мене не відбувається жодної заміни пам'яті на жодному з серверів.

TOP каже, що мої процесори працюють на 100%. Я отримую середнє навантаження 18 (5 на VPS).

Це буде так, чи я щось пропускаю?

Запуск lscpu дає мені 1,6 ГГц на моєму голому металевому сервері. Це було видно і на те /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
Тому що восьмирічні процесори роблять набагато менше за тактовий цикл, ніж поточні процесори.
Майкл Хемптон

3
Ви хочете скинути налаштування BIOS до стандартних. Ці сервери звучать так, ніби вони мали і неоптимальну конфігурацію на них. Дивіться мою редакцію нижче.
ewwhite

Спробуйте виконати лише 1 потік на ядро. Якщо ядро ​​повільне, велике навантаження може означати, що процесор витрачає багато часу на перемикання завдань і все менше робиться.
Немо

Ви можете шукати в Інтернеті "орієнтири процесора", щоб знайти порівняння продуктивності. Мій улюблений такий ресурс - CPUBenchmark.net .

6
Ознайомтесь і з різницею розмірів кешу. Пропуски кеша можуть бути жахливими.
ацелент

Відповіді:


44

Покращення процесора, тактова частота та обчислення IPC можуть зробити майже неможливим спробувати розумно порівняти старі процесори десятиліття з сучасними. Інструкції за цикл змінюватимуться не лише, але й нові процесори мають набори інструкцій, присвячені складним обчисленням (Intel додала AES-NI як приклад), тактова частота вже не є розумним порівняльником, завдяки цим чинникам (чи я згадував багатоядерне проти гіпертретування ...). Маючи достатньо часу та терпіння, ви, безумовно, могли зрозуміти, скільки старих програм дорівнює 1 новій процедурі, але підрахунки в кінцевому підсумку говорять про її дешевше та швидше придбати новий процесор.


2
Існує купа веб-сайтів, які вже роблять це, порівнюючи показники процесора кожного процесора.
Майкл Хемптон

4
Не точно, але ось орієнтир Passmark для Intel Xeon E5-2680 @ 2.70GHz проти Intel Xeon X7350 @ 2.93GHz
chue x

Проблема з еталоном полягає в тому, що за своєю суттю він не оптимізований для конкретного процесора. Це не погано для приблизної оцінки, але вам доведеться переписати і перекомпілювати з найкращим набором інструкцій для кожного. дуже мало інструментів написано нічим іншим, ніж "скільки разів можна обчислити" х "
Джим Б

1
@JimB, так, але моделювання ОП також не може бути оптимізоване для конкретного процесора. (якщо це так, я пропустив, вибачте)
Девід Балажич

1
Напевно, ні, в цьому випадку моделювання фактично є еталоном, якщо програма IS не перекомпільована. Орієнтовна оцінка сторонньої сторони була б менш точною.
Jim B

32

Я не хочу звучати жахливо, підкреслюючи щось, що повинно бути очевидним тут, але ви порівнюєте процесор сервера високого класу з 2014 року на процесор високого класу сервера з 2007 року .

Я не думаю, що це потребує набагато більше пояснень.

З цієї причини HP ProLiant DL580 G5 доступний так недорого . Вони були великими, повільними і не мали багатьох функцій, бажаних на більш сучасних серверах. Я продав свій останній у 2009 році . Це була погана покупка, і вам буде краще обслуговувати процесор із процесорних сімей Nehalem або Westmere, якщо вас змусять придбати б / у обладнання.

Крім того, придбані вами сервери дуже неефективні щодо споживання енергії, тому працювати з ними буде дорого.


Схоже, ваші фізичні сервери працюють у режимі енергозбереження, який зменшив тактову частоту процесора. Ви захочете зайти в BIOS (натисніть F9 при завантаженні) і скинути сервер до заводських налаштувань ( хто знає, що ще було змінено за замовчуванням? )

введіть тут опис зображення


7
@GlaucoCattaliniLins №
ewwhite

1
Не могли б ви детальніше зупинитися на цьому? Мені важко перетравити це. У мене є можливість змінити для інших моделей, тому я хочу виправити це, якщо мова йде про це. - Спочатку я думав, що це може бути розмір кешу E5 (30 Мб), але потім він поділиться між іншими VPS.
Глауко Катталіні Лінс

11
@GlaucoCattaliniLins X7350 заснований на мікроархітектурі Core 2. Насправді це можна порівняти з Core 2 Quad (скільки часу минуло з того часу, як ви останній раз про них чули?). Він настільки старий, що він не підтримує інструкції SSE4 +, AVX (2), FMA або AES, тож якщо ваші симуляції чисельні, вони беруть штраф> 2 рази прямо там, а швидкість крипто AES страждає ще більше. Нарешті, Intel випустила 6 мікроархітектурних удосконалень після Core 2, і з кожним збільшується здатність ЦП виконувати більше інструкцій паралельно або поза порядком, пропускну здатність пам'яті.
Iwillnotexist Idonotexist

10
@GlaucoCattaliniLins На відміну від вашого сервера VPS підтримує FMA, тож він є як мінімум таким, як мікроархітектура Haswell. Інструкція FMA дозволяє робити множення і додавання два в одному, і все в Haswell (декодери інструкцій, буфер зміни порядку, передбачувачі гілок, пропускна здатність пам’яті, ALU) було налаштовано так, щоб подвійні векторні FMA можна зберігати . Таким чином, Хасвелл може підтримувати за один тактовий цикл: 1) дві 8-елементні векторні операції форми float d = a + b*c, 2) два 32-байтові навантаження ( aі b) та 3) одне 32-байтове сховище (the d). Це дивовижно налаштовано.
Iwillnotexist Idonotexist

2
@IwillnotexistIdonotexist: він майже напевно не компілював для кожної машини окремо -march=native, тому я думаю, що його код використовує лише SSE2 в будь-якій системі. Я б здогадався, пропускна здатність пам'яті - це, мабуть, вузьке місце, особливо. якщо його ядро ​​не підтримує NUMA, або шаблони розподілу симу не є зручними для NUMA. Це що, чотирьохядерний роз'єм чотирьох сокет, з двоканальними контролерами пам'яті на кожній розетці?
Пітер Кордес
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.