Virtualização

O que é vCPU?

Também conhecido como: virtual CPU
Definição

A vCPU is a virtual processor presented to a guest, backed by scheduling time on a physical core or thread. The decisive question is whether the backing thread is shared with other tenants or reserved. A dedicated vCPU has no other tenant scheduled against it; a shared one competes, producing steal time.

Porque é que vCPU importa

A questão decisiva é se o thread de suporte é partilhado com outros inquilinos ou reservado. Uma vCPU dedicada não tem outro inquilino agendado contra ela; uma partilhada compete, produzindo tempo de roubo.

vCPU na prática

Quando está a executar um servidor, a vCPU é o que a sua carga de trabalho realmente consome. Olha primeiro para o tempo de roubo: se estiver consistentemente acima de alguns por cento, as suas vCPUs são partilhadas e outros inquilinos estão a comer os seus ciclos. Pode aumentar a contagem de vCPUs para corrigir a latência, mas observe se o problema é contenção, não núcleos. Errar significa pagar por tempo de agendamento que não é seu, e a sua aplicação sofre paragens que não consegue explicar.

O que se costuma entender mal sobre vCPU

Um erro comum é tratar vCPUs como se fossem núcleos físicos com velocidade garantida. Num ambiente KVM, cada vCPU é suportada por um thread do anfitrião e, num anfitrião partilhado, esse thread compete. As pessoas assumem que mais vCPUs ajudam sempre, mas se o thread de suporte estiver sob contenção, obtém tempo de roubo. A correção: verifique o tempo de roubo antes de dimensionar a contagem de vCPUs.

vCPU — perguntas frequentes

De quantas vCPUs preciso?

Depende da sua carga de trabalho. Para um servidor web ocupado, comece com duas e observe o tempo de roubo da CPU. Se o roubo permanecer baixo e ainda estiver limitado, adicione vCPUs. Nos nossos planos KVM, pode aumentar a CPU e a RAM com um reinício curto, por isso pode ajustar sem uma reconstrução.

Posso alterar a contagem de vCPUs mais tarde?

Sim, no seu servidor existente pode aumentar a CPU com um reinício breve, e o disco cresce online. Descer de nível exige uma reconstrução em vez de uma migração em direto, por isso é melhor começar pequeno e escalar.

Mais de virtualização

KVM
KVM é virtualização completa de hardware integrada no kernel Linux, dando a cada convidado o seu próprio kernel e isolamento imposto por hardware dos outros inquilinos.
OpenVZ
OpenVZ é virtualização baseada em contentores em que cada instância partilha o kernel do anfitrião, pelo que os convidados não podem carregar módulos do kernel nem executar um sistema operativo diferente.
LXC
LXC é contentorização nativa do Linux que isola processos com namespaces e cgroups, partilhando o kernel do anfitrião.
Hipervisor
Um hipervisor é a camada de software que cria e executa máquinas virtuais, alocando CPU física, memória e I/O entre elas.
Virtualização aninhada
A virtualização aninhada permite que uma máquina virtual execute, ela própria, máquinas virtuais, expondo as extensões de virtualização do processador ao convidado.
cloud-init
cloud-init é o mecanismo padrão para configurar uma máquina virtual no primeiro arranque, usando metadados fornecidos pela plataforma.