Я написал фрагмент многопоточного программного обеспечения, которое выполняет кучу симуляций в день. Это очень ресурсоемкая задача, и я запускал эту программу в облачных службах, обычно в конфигурациях, таких как 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 для выполнения этих пакетных работ. Теперь это странные вещи ...
- На VPS у меня было 1,25 потока на ядро, как на голом металле. (Дополнительный поток 0,25 предназначен для компенсации простоя, вызванного использованием сети.)
- На моем VPS, используя в общей сложности 44x 2,5 ГГц ядра, я получаю почти 900 симуляций в минуту.
- На моем 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
источник
Ответы:
Усовершенствования процессоров, тактовая частота и вычисления IPC могут сделать практически невозможным разумное сравнение десятилетних процессоров с современными. Мало того, что инструкции за цикл будут меняться, но у более новых процессоров есть наборы команд, предназначенные для сложных вычислений (в качестве примера Intel добавила AES-NI), тактовая частота больше не является разумным компаратором из-за этих факторов (я упоминал многоядерный против гиперпоточности ...). Если у вас будет достаточно времени и терпения, вы наверняка сможете выяснить, сколько старых процессоров равняется 1 новому процессу, но в итоге вычисления скажут, что покупать новый процессор дешевле и быстрее.
источник
Я не хочу звучать ужасно, подчеркивая что-то, что должно быть здесь очевидно, но вы сравниваете серверный процессор высокого класса с 2014 года с серверным процессором высокого класса с 2007 года .
Я не думаю, что это требует гораздо большего объяснения.
Есть причина, по которой HP ProLiant DL580 G5 сегодня доступен так недорого . Они были большими, медленными и лишены многих функций, которые желательны на более современных серверах. Я продал свой последний в 2009 году . Это была неудачная покупка, и вам лучше обслуживать процессор семейства процессоров Nehalem или Westmere, если вы вынуждены приобретать бывшее в употреблении оборудование.
Кроме того, приобретенные вами серверы очень неэффективны с точки зрения энергопотребления, поэтому они будут дорогостоящими в эксплуатации.
Кажется, что ваши физические серверы работают в режиме энергосбережения, который снизил тактовую частоту вашего процессора. Вы захотите зайти в BIOS (нажмите F9 при загрузке) и восстановить заводские настройки сервера ( кто знает, что еще было изменено по умолчанию? )
источник
float d = a + b*c
, 2) две 32-байтовые загрузки (a
иb
) и 3) одну 32-байтовую память (d
). Это удивительно хорошо настроено.-march=native
, поэтому я предполагаю, что его код использует только SSE2 в любой системе. Я предполагаю, что пропускная способность памяти, вероятно, является узким местом, особенно если его ядро не имеет поддержки NUMA или шаблоны распределения его сима не подходят для NUMA. Это что, четырехъядерный четырехъядерный процессор с двухканальными контроллерами памяти на каждом сокете?