Por que meu programa roda de 2 a 4 vezes mais lento em um VPS?

1

Eu tenho um programa (aplicativo da web Node.js no Ubuntu) que carrega em cerca de 7 segundos no meu computador doméstico.

Recentemente eu copiei para um VPS, e lá, ele carrega em 15 a 30 segundos.

Estou tentando descobrir por que isso é tão lento e como posso torná-lo mais rápido.

Comecei verificando o consumo de memória, mas descobri (usando "top") que no VPS eu uso apenas cerca de 400 MB de 2 GB. Então, aumentar a memória provavelmente não é a solução.

Por outro lado, durante a inicialização, descobri que o uso da CPU é de 100%, então pensei que talvez o problema esteja no processador. Então eu comparei os tipos de processador, mas a diferença não parece ser tão grande assim.

Aqui está o que recebo de "cat / proc / cpuinfo" no meu computador doméstico:

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 42
model name  : Intel(R) Pentium(R) CPU G620 @ 2.60GHz
stepping    : 7
microcode   : 0x14
cpu MHz     : 1600.000
cache size  : 3072 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
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 dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips    : 5188.24
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 42
model name  : Intel(R) Pentium(R) CPU G620 @ 2.60GHz
stepping    : 7
microcode   : 0x14
cpu MHz     : 1600.000
cache size  : 3072 KB
physical id : 0
siblings    : 2
core id     : 1
cpu cores   : 2
apicid      : 2
initial apicid  : 2
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 dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips    : 5187.97
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

E aqui está o resultado de "cat / proc / cpuinfo" no VPS:

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 44
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping    : 2
cpu MHz     : 2394.153
cache size  : 12288 KB
physical id : 1
siblings    : 8
core id     : 0
cpu cores   : 4
apicid      : 32
initial apicid  : 32
fpu     : yes
fpu_exception   : yes
cpuid level : 11
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt aes lahf_lm ida arat dts tpr_shadow vnmi flexpriority ept vpid
bogomips    : 4788.30
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

(este é apenas o primeiro processador - tenho um total de 11 processadores idênticos no meu VPS, mas isso não é relevante porque qualquer thread único precisará fazer a mesma inicialização).

Meu computador doméstico tem 2600 GHz e o computador VPS é de 2400 GHz. Isso justifica uma diferença de 100-300% em tempo de execução?

Mais importante: o que posso fazer para que meu programa seja executado mais rapidamente no VPS?

    
por Erel Segal-Halevi 02.10.2013 / 10:31

1 resposta

1

A própria definição de um VPS responde à sua pergunta:

É um servidor privado virtual . Você compartilha o hardware com outras pessoas.

(Você não pode vê-los, dependendo da configuração).

E, naturalmente, é do interesse do provedor do VPS carregar o sistema até certo ponto, a fim de aumentar sua margem de lucro.

    
por 02.10.2013 / 11:02