Napisałem kawałek wielowątkowego oprogramowania, które wykonuje kilka symulacji dziennie. Jest to zadanie bardzo obciążające procesor i ten program uruchomiłem w usługach w chmurze, zwykle w konfiguracjach takich jak 1 GB na rdzeń.
Korzystam z CentOS 6.7 i /proc/cpuinfo
daje mi to, że moje cztery rdzenie VPS mają częstotliwość 2,5 GHz.
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:
Wraz ze wzrostem kursów walut moje VPS zaczęło być droższe i doszedłem do „świetnej oferty” na używanych serwerach bez systemu metalowego.
Kupiłem cztery HP DL580 G5 , z czterema Intel Xeon X7350 każdy. Zasadniczo każda maszyna ma rdzenie 16 x 2,93 GHz i 16 GB, aby zachować takie rzeczy, jak moja chmura 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:
Zasadniczo wydawało się to świetną sprawą, ponieważ mogłem przestać używać VPS do wykonywania tych zadań wsadowych. To dziwne rzeczy ...
- Na VPS-ach korzystałem z 1,25 wątku na rdzeń, tak jak robiłem na gołym metalu. (Dodatkowy wątek 0,25 ma zrekompensować czas bezczynności spowodowany użyciem sieci.)
- Na moim VPS, używając łącznie rdzeni 44x 2,5 GHz, otrzymuję prawie 900 symulacji na minutę.
- Na moim DL580, używając łącznie rdzeni 64 x 2,93 GHz, otrzymuję tylko 300 symulacji na minutę.
Rozumiem, że DL580 ma starszy procesor. Ale jeśli używam jednego wątku na rdzeń, a serwer bez systemu ma szybszy rdzeń, dlaczego działa gorzej niż mój VPS?
Nie mam zamiany pamięci na żadnym z serwerów.
TOP mówi, że moje procesory działają na 100%. Otrzymuję średnie obciążenie 18 (5 na VPS).
Czy tak będzie, czy coś mi umknie?
Uruchamianie lscpu daje mi 1,6 GHz na moim czystym metalowym serwerze. Było to również widoczne /proc/cpuinfo
.
Czy te informacje są prawidłowe, czy są powiązane z nieprawidłowym zarządzaniem energią?
[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
źródło
Odpowiedzi:
Postępy procesora, szybkość zegara i obliczenia IPC mogą prawie uniemożliwić rozsądne porównanie starych dekadowych procesorów z nowoczesnymi. Nie tylko instrukcje na cykl będą się różnić, ale nowsze procesory mają zestawy instrukcji dedykowane do złożonych obliczeń (Intel dodał AES-NI jako przykład), szybkość zegara nie jest już rozsądnym komparatorem z powodu tych czynników (czy wspomniałem wielordzeniowy vs hiperwątkowanie ...). Przy wystarczającej ilości czasu i cierpliwości możesz z pewnością dowiedzieć się, ile starszych procesorów równa się 1 nowemu procesowi, ale obliczenia zakończą się twierdzeniem, że taniej i szybciej jest kupić nowy procesor.
źródło
Nie chcę brzmieć strasznie, podkreślając coś, co powinno być tutaj oczywiste, ale porównujesz wysokiej klasy procesor serwerowy z 2014 roku do wysokiej klasy procesor serwerowy z 2007 roku .
Nie sądzę, że wymaga to więcej wyjaśnień.
Istnieje powód, dla którego HP ProLiant DL580 G5 jest tak niedrogi już dziś . Były duże, wolne i pozbawione wielu funkcji, które byłyby pożądane w bardziej nowoczesnych serwerach. Ostatnią sprzedałem w 2009 roku . To był zły zakup i lepiej byłoby, gdybyś był zmuszony kupić procesor z rodziny procesorów Nehalem lub Westmere, gdybyś był zmuszony kupić używany sprzęt.
Ponadto zakupione serwery są bardzo nieefektywne pod względem zużycia energii, więc ich obsługa będzie kosztowna.
Wygląda na to, że Twoje fizyczne serwery działają w trybie oszczędzania energii, który zmniejszył szybkość zegara procesora. Będziesz chciał przejść do BIOS-u (naciśnij F9 podczas rozruchu) i zresetować serwer do domyślnych ustawień fabrycznych ( kto wie, co jeszcze zmodyfikowano z domyślnych? )
źródło
float d = a + b*c
, 2) Dwa 32-bajtowe obciążenia (a
ib
) i 3) jeden 32-bajtowy magazyn (thed
). Jest niesamowicie dobrze dostrojony.-march=native
, więc przypuszczam, że jego kod używa SSE2 tylko w obu systemach. Sądzę, że przepustowość pamięci jest prawdopodobnie wąskim gardłem, szczególnie. jeśli jego jądro nie obsługuje NUMA lub wzorce alokacji jego karty SIM nie są przyjazne NUMA. Czy to jest czterordzeniowy czterordzeniowy rdzeń z dwukanałowymi kontrolerami pamięci na każdym gnieździe?