Por que meu computador bare-metal 16x a 2.93GHz tem desempenho inferior ao de um VPS com núcleos 4x 2.5GHz?

33

Eu escrevi um software multi-thread que faz um monte de simulações por dia. Essa é uma tarefa muito intensa da CPU e eu tenho executado esse programa em serviços de nuvem, geralmente em configurações como 1 GB por núcleo.

Estou executando o CentOS 6.7, e /proc/cpuinfo me dá que meus quatro núcleos VPS são 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:

Com o aumento das taxas de câmbio, meu VPS começou a ficar mais caro e eu cheguei a um "ótimo negócio" em servidores bare-metal usados.

Comprei quatro HP DL580 G5 , com quatro Intel Xeon X7350s cada. Basicamente, cada máquina tem 16x núcleos de 2,93GHz e 16GB, para manter coisas como a minha nuvem 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:

Essencialmente, parecia um grande negócio, pois eu poderia parar de usar o VPS para executar esses trabalhos em lote. Agora são as coisas estranhas ...

  1. Nos VPS, tenho estado a executar 1,25 thread por núcleo, tal como tenho feito no bare metal. (O segmento extra de 0,25 é para compensar o tempo ocioso causado pelo uso da rede).
  2. No meu VPS, usando no total núcleos de 44x a 2.5GHz, recebo quase 900 simulações por minuto.
  3. No meu DL580, usando no total 64x núcleos de 2,93GHz, estou recebendo apenas 300 simulações por minuto.

Eu entendo que o DL580 tem um processador mais antigo. Mas se eu estiver executando um thread por core, e o servidor bare metal tiver um núcleo mais rápido, por que ele está tendo desempenho inferior ao meu VPS?

Eu não tenho nenhuma troca de memória acontecendo em nenhum dos servidores.

TOP diz que meus processadores estão funcionando a 100%. Eu recebo uma carga média de 18 (5 no VPS).

Será que isso vai ser assim ou estou faltando alguma coisa?

A execução do lscpu fornece 1.6GHz no meu servidor bare metal. Isso também foi visto no /proc/cpuinfo .

Esta informação está correta, ou está ligada a algum gerenciamento de energia incorreto?

[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
    
por Glauco Cattalini Lins 28.11.2015 / 15:36

2 respostas

43

Avanços de processador, velocidade de clock e cálculos de IPC podem tornar quase impossível tentar comparar razoavelmente CPUs antigas a antigas. Não só as instruções por ciclo vão variar, mas os processadores mais novos têm conjuntos de instruções dedicados a cálculos complexos (a Intel adicionou o AES-NI como exemplo), a velocidade do relógio não é mais um comparador razoável, devido a esses fatores multi-core vs hyperthreading ...). Com tempo e paciência suficientes, você certamente poderia descobrir quantos procs antigos são iguais a 1 proc mais novo, mas os cálculos vão acabar dizendo que é mais barato e mais rápido comprar uma nova CPU.

    
por 28.11.2015 / 17:21
32

Eu não quero parecer terrível enfatizando algo que deveria ser óbvio aqui, mas você está comparando um processador para servidores high-end de 2014 para um processador para servidores high-end de 2007 .

Não acho que isso exija muito mais explicações.

Existe um motivo para HP ProLiant DL580 G5 estar disponível < a href="http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=dl580%20g5&_dcat=11211&rt=nc&_mPrRngCbx=1&_udlo&_udhi= 200 "> tão barata hoje . Eles eram grandes, lentos e careciam de muitos recursos que são desejáveis em servidores mais modernos. Eu vendi meu último último em 2009 . Foi uma compra ruim, e você seria melhor servido com uma CPU das famílias de processadores Nehalem ou Westmere, se você for forçado a comprar equipamentos usados.

Além disso, os servidores que você comprou são muito ineficientes em termos de consumo de energia, por isso, terão custos de operação.

Parece que seus servidores físicos estão sendo executados em um modo de economia de energia que reduziu a velocidade do clock da CPU. Você vai querer ir para a BIOS (pressione F9 na inicialização) e redefinir o servidor para os padrões de fábrica ( quem sabe o que mais foi modificado do padrão? )

    
por 28.11.2015 / 15:46