베어 메탈 16x 2.93GHz 코어 컴퓨터가 4x 2.5GHz 코어가있는 VPS보다 성능이 떨어지는 이유는 무엇입니까?


34

나는 하루에 많은 시뮬레이션을 수행하는 멀티 스레드 소프트웨어를 작성했습니다. 이것은 CPU를 많이 사용하는 작업이므로 클라우드 서비스, 일반적으로 코어 당 1GB와 같은 구성에서이 프로그램을 실행했습니다.

CentOS 6.7을 실행 중이며 /proc/cpuinfo4 개의 VPS 코어가 2.5GHz임을 알려줍니다.

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가 더 비싸기 시작했고 중고 베어 메탈 서버에 대해 "대단한"거래를 시작했습니다.

4 개의 Intel Xeon X7350과 함께 4 개의 HP DL580 G5를 구입했습니다 . 기본적으로 각 컴퓨터에는 16x 2.93GHz 코어와 16GB가 있으며 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. 총 44x 2.5GHz 코어를 사용하는 VPS에서 분당 거의 900 개의 시뮬레이션을 얻습니다.
  3. 전체 64x 2.93GHz 코어를 사용하는 DL580에서 분당 300 개의 시뮬레이션 만 받고 있습니다.

DL580에 구형 프로세서가 있음을 이해합니다. 그러나 코어 당 하나의 스레드를 실행하고 베어 메탈 서버의 코어 속도가 더 빠른 경우 왜 VPS보다 성능이 좋지 않습니까?

서버에서 메모리 스왑이 발생하지 않습니다.

TOP은 내 프로세서가 100 %로 실행되고 있다고 말합니다. 평균로드는 18 (VPS에서는 5)입니다.

이것이 이런 식입니까, 아니면 뭔가 빠졌습니까?

lscpu를 실행하면 베어 메탈 서버에서 1.6GHz가 제공됩니다. 이것도 /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
8 년 된 프로세서는 현재 프로세서보다 클럭주기 당 훨씬 적습니다.
Michael Hampton

3
BIOS 설정을 기본값으로 재설정하려고합니다. 이 서버는 최적의 구성이 아닌 것처럼 들립니다. 아래 편집 내용을 참조하십시오.
ewwhite

코어 당 하나의 스레드 만 실행해야합니다. 코어가 느리면로드가 높으면 CPU가 작업을 전환하는 데 많은 시간을 소비하고 덜 수행되고 있음을 의미 할 수 있습니다.
니모

인터넷에서 "CPU 벤치 마크"를 검색하여 성능 비교를 찾을 수 있습니다. 내가 가장 좋아하는 리소스는 CPUBenchmark.net 입니다.

6
캐시 크기 차이도 살펴보십시오. 캐시 미스가 끔찍할 수 있습니다.
acelent

답변:


44

프로세서 발전, 클럭 속도 및 IPC 계산으로 수십 년 된 CPU와 최신 CPU를 합리적으로 비교하는 것은 거의 불가능합니다. 사이클 당 명령어는 다양 할뿐만 아니라 최신 프로세서에는 복잡한 계산 전용 명령어 세트가 있습니다 (인텔은 AES-NI를 예로 추가했습니다). 이러한 요인으로 인해 클럭 속도는 더 이상 합리적인 비교기가 아닙니다 (내가 언급 했습니까? 멀티 코어 대 하이퍼 스레딩 ...). 충분한 시간과 인내심으로 얼마나 많은 오래된 프로세스가 1 개의 새로운 프로세스와 같은지 알아낼 수 있지만 계산은 새 CPU를 구입하는 것이 더 싸고 빠르다는 결론을 내릴 것입니다.


2
각 프로세서의 CPU 벤치 마크를 비교하여 이미이 작업을 수행하는 많은 웹 사이트가 있습니다.
Michael Hampton

4
아니 정확히 그러나 여기의 패스 마크 벤치 마크입니다 2.70GHz @ 인텔 제온 E5-2680인텔 제온 X7350은 @ 2.93GHz에는
chue X

벤치 마크의 문제점은 본질적으로 특정 프로세서에 최적화되지 않은 것입니다. 대략적인 추정에는 나쁘지 않지만 각각에 가장 적합한 명령어 세트로 다시 작성하고 다시 컴파일해야합니다. "x"를 몇 번이나 계산할 수 있는지 이외의 도구로 작성된 도구는 거의 없습니다.
Jim B

1
@JimB는 가능하지만 OPs 시뮬레이션은 특정 CPU에 맞게 최적화되지 않을 수도 있습니다. (이 경우, 미안, 그것을 놓친)
데이비드 Balažic

1
아마도 아니오,이 경우 시뮬레이션은 프로그램이 다시 컴파일되지 않는 한 사실상 벤치 마크입니다. 타사 벤치 마크는 정확도가 떨어집니다.
Jim B

32

뭔가 강조에 의해 끔찍한 소리를하지 않으려 한다 여기에 분명,하지만 당신은 비교하고 2014 년 하이 엔드 서버 프로세서를 A와 에서 하이 엔드 서버 프로세서 2007 .

나는 이것이 더 많은 설명이 필요하다고 생각하지 않습니다.

오늘날 HP ProLiant DL580 G5저렴한 가격 으로 구입할 수 있는 이유 가 있습니다 . 그것들은 크고 느리고 더 현대적인 서버에서 바람직한 많은 기능이 부족합니다. 나는 2009 년에 나의 마지막 것을 팔았다 . 중고 장비를 구입해야하는 경우 나쁜 구매였으며 Nehalem 또는 Westmere CPU 제품군의 CPU를 사용하는 것이 좋습니다.

또한 구입 한 서버는 전력 소비 측면에서 매우 비효율적이므로 운영 비용이 많이 듭니다.


실제 서버가 CPU 클럭 속도를 줄인 절전 모드에서 실행중인 것처럼 보입니다. BIOS로 들어가서 (부팅시 F9 키를 누름) 서버를 공장 기본값으로 재설정하고 싶습니다 ( 누가 기본값 에서 다른 것이 수정되었는지 아는가? )

여기에 이미지 설명을 입력하십시오


7
@GlaucoCattaliniLins No.
ewwhite

1
그것에 대해 자세히 설명해 주시겠습니까? 소화하는데 문제가 있습니다. 다른 모델을 변경할 수있는 옵션이 있으므로 그와 관련하여 올바르게하고 싶습니다. -처음에는 E5 (30MB)의 캐시 크기 일 수 있지만 다른 VPS와 공유 될 수 있습니다.
Glauco Cattalini Lins

11
@GlaucoCattaliniLins X7350은 Core 2 마이크로 아키텍처를 기반으로합니다. 실제로, 그것은 Core 2 Quad 와 비슷합니다 (마지막으로 들었던 지 얼마나 되었습니까?). 너무 오래되어 SSE4 +, AVX (2), FMA 또는 AES 명령어를 지원하지 않으므로 시뮬레이션이 수치이면 2 배 이상 페널티를 받고 AES 암호화 속도는 훨씬 더 많이 겪습니다. 마지막으로 인텔은 코어 2 이후 6 개의 마이크로 아키텍처 개선 사항을 발표했으며 각각이 메모리 대역폭을 병렬 또는 비 순차적으로 더 많은 명령을 실행할 수있는 CPU의 기능을 향상 시켰습니다.
Idonotexist Idonotexist

10
@GlaucoCattaliniLins 반대로 VPS 서버는 FMA를 지원하므로 최소한 Haswell 마이크로 아키텍처만큼 새롭습니다. FMA 명령어는 하나의 곱셈과 덧셈을 수행 할 수 있으며 Haswell의 모든 항목 (명령 디코더, 재정렬 버퍼, 분기 예측기, 메모리 대역폭, ALU)이 조정되어 이중 벡터 FMA가 계속 공급 될 수 있습니다. . 스웰 따라서, 서스테인 수 는 단일 클럭주기 : 폼 1) 개의 8- 엘리먼트 벡터 연산 float d = a + b*c, 2) 두 개의 32 바이트를로드합니다 ( ab) 3) 하나의 32 바이트를 저장합니다 ( d). 놀랍도록 잘 조정되었습니다.
Iwillnotexist Idonotexist

2
존재하지 않음 : 그는 거의 확실하게로 각 시스템에 대해 개별적으로 컴파일하지 않았 -march=native으므로 그의 코드가 두 시스템 중 하나에서만 SSE2를 사용하고 있다고 생각합니다. 메모리 대역폭이 병목 현상 일 수 있습니다. 커널이 NUMA를 지원하지 않거나 시뮬레이션의 할당 패턴이 NUMA 친화적이지 않은 경우. 이것은 각 소켓에 듀얼 채널 메모리 컨트롤러가있는 쿼드 소켓 쿼드 코어입니다.
Peter Cordes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.