Назад | Перейти на главную страницу

Почему мой компьютер без операционной системы с 16 ядрами по 2,93 ГГц работает хуже, чем VPS с 4 ядрами по 2,5 ГГц?

Я написал часть многопоточного программного обеспечения, которое выполняет кучу симуляций в день. Это очень интенсивная задача для ЦП, и я запускал эту программу в облачных сервисах, обычно в конфигурациях вроде 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 каждый. По сути, каждая машина имеет 16 ядер по 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, использующем всего 44 ядра по 2,5 ГГц, я получаю около 900 симуляций в минуту.
  3. На моем DL580, использующем в общей сложности 64 ядра по 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

Усовершенствования процессоров, тактовая частота и вычисления IPC делают практически невозможным разумное сравнение процессоров десятилетней давности с современными. Меняются не только инструкции на цикл, но и в новых процессорах есть наборы инструкций, предназначенные для сложных вычислений (Intel добавила AES-NI в качестве примера), тактовая частота больше не является разумным компаратором из-за этих факторов (я упоминал многоядерность против гиперпоточности ...). Имея достаточно времени и терпения, вы, безусловно, сможете вычислить, сколько старых процессов равно 1 новому процессу, но расчеты в конечном итоге покажут, что дешевле и быстрее покупать новый процессор.

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

Я не думаю, что это требует дополнительных объяснений.

Есть причина HP ProLiant DL580 G5 доступен так недорого сегодня. Они были большими, медленными и лишены многих функций, которые желательны для более современных серверов. Я продал свой последний в 2009 году. Это была плохая покупка, и вам лучше подойдет ЦП из семейств ЦП Nehalem или Westmere, если вы будете вынуждены покупать подержанное оборудование.

Кроме того, приобретенные вами серверы очень неэффективны с точки зрения энергопотребления, поэтому их эксплуатация будет дорогостоящей.


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