Sobrecarga de CPUs em VMs de locatário individual


A alocação excessiva de CPU em nós de locatário individual permite programar instâncias que podem compartilhar os ciclos de CPU extras entre si. Isso permite que você superprovisione recursos de nó de locatário individual e programe mais CPUs de VM em um nó de locatário individual do que as normalmente disponíveis. A alocação excessiva de CPU é especialmente importante para cargas de trabalho subutilizadas, mas que podem apresentar bursts relativamente não relacionados.

A alocação excessiva de CPU pode ajudar a reduzir os custos por VM, distribuindo o custo de um nó de locatário individual para mais VMs. Isso também pode reduzir os custos de licenciamento por VM ao usar licenças por soquete ou por núcleo.

As VMs com CPUs com alocação excessiva podem utilizar recursos de CPU não utilizados das seguintes maneiras:

  • Se um nó de locatário individual não estiver cheio, as VMs com alocação excessiva poderão utilizar núcleos não alocados.

  • Se outra VM em um nó de locatário individual não estiver usando todos os recursos da CPU, por exemplo, porque a CPU está ociosa, uma VM com alocação excessiva pode usar esses recursos de CPU.

Nível de alocação excessiva

É possível especificar o valor do número mínimo de CPUs que são alocadas para uma VM ao criar uma VM ou após a interrupção dela. O nível de alocação excessiva representa o número mínimo de threads de CPU subjacentes que têm a garantia de estar disponíveis para uma VM. Se a VM tiver mais vCPUs do que as linhas de execução subjacentes disponíveis, as vCPUs da VM compartilharão os recursos de computação subjacentes e serão executadas com um desempenho degradado.

É possível definir esse valor para cada VM, o que permite provisionar VMs com proporções diferentes de alocação extra de CPU em um único nó de locatário individual. Quantidades mais baixas reduzirão os requisitos de capacidade à custa potencial de desempenho se ocorrerem bursts correlacionados. Determinar um valor ideal para a quantidade mínima de CPUs requer uma compreensão da utilização da carga de trabalho e da modificação iterativa do valor.

Ao definir esse valor, lembre-se do seguinte:

  • Se você não definir o valor do número mínimo de CPUs ou se ele for igual ao número de CPUs no tipo de máquina da VM, a proporção de alocação extra permitida será 1.0. Com uma proporção de alocação extra de 1.0, todas as CPUs podem ser acessadas somente por essa VM, e não há recursos de CPU disponíveis para outras VMs.

  • A quantidade mínima de CPUs não pode ser maior do que aquela especificada pelo tipo de máquina da VM.

  • A soma dos valores da quantidade mínima de CPUs para todas as VMs em um nó de locatário individual não pode exceder a capacidade de CPU desse tipo de nó de locatário individual, que é 96 no tipo de nó n1-node-96-624.

O valor especificado para a quantidade de CPUs pelo tipo de máquina da VM é um valor estático e representa o número de CPUs em que uma VM pode permitir bursts a partir da quantidade mínima, se essas CPUs estiverem disponíveis. Se você precisar de uma quantidade de CPUs diferente daquela fornecida por tipos de máquina fixos, use um tipo de máquina personalizado.

Considerações

Antes de configurar os níveis de alocação excessiva de CPU para VMs, considere a importância da sua carga de trabalho. Cargas de trabalho menos essenciais, como cargas de trabalho de desenvolvimento e teste, potencialmente poderão tolerar níveis de alocação excessiva mais altos. Cargas de trabalho mais essenciais, como um sistema de pagamentos de produção, podem não tolerar tanta alocação excessiva ou mesmo nenhuma.

Considere também a utilização da carga de trabalho. As cargas de trabalho com alta utilização de CPU não são boas candidatas para alocação extra de CPU porque não terão ciclos de utilização extras para outras VMs com esse tipo de alocação. Além disso, cargas de trabalho com baixa utilização média da CPU, mas com pico de utilização baixo, podem se beneficiar de diferentes tamanhos de tipos de máquina.

O uso da alocação excessiva de CPU beneficia cargas de trabalho intermitentes não relacionadas, que têm altos picos de utilização e baixa utilização média. Isso porque essas cargas de trabalho têm mais probabilidade de conter recursos de CPU disponíveis para compartilhar entre VMs quando algumas VMs precisam de um burst na utilização. Se todas as VMs em um host tiverem burst ao mesmo tempo, o host não terá recursos suficientes para suas VMs.

Limitações

Limitações da carga de trabalho

A alocação extra de CPU é mais adequada para cargas de trabalho sem requisitos de desempenho rigorosos, como cargas de trabalho de desenvolvimento e teste e infraestruturas de área de trabalho virtual.

Os níveis altos de alocação excessiva de CPU podem não ser apropriados para cargas de trabalho sensíveis ao desempenho.

Para cargas de trabalho com utilização média e pico de baixa consistência, o Google recomenda redimensionamento. Ou seja, em vez de fazer uma alocação extra de CPUs, recomendamos modificar o tamanho da instância de VM para atender aos requisitos de recursos dessa carga de trabalho.

Se as instâncias estiverem com um nível alto de alocação excessiva, será necessário movê-las para outro nó de locatário individual.

Limitações do tipo de máquina

Só é possível confirmar CPUs nos locais a seguir:

Limitações do nível de alocação excessiva

Somente será possível configurar a CPU mínima em cada nó de locatário individual para metade das CPUs da VM, permitindo uma proporção máxima de alocação excessiva de nó de locatário individual de 2,0.

Limitações de programação da VM

Grupos de nós de locatário individual baseados em modelos de nó de locatário individual que não estão configurados para alocação extra de CPU não permitem o provisionamento de VMs com alocação extra de CPU ativada. Em outras palavras, não é possível programar uma VM com um número mínimo especificado de CPUs em um grupo de nós de locatário individual que não esteja configurado para alocação extra de CPU.

Cota

A cota de CPU é baseada no número de vCPUs do tipo de nó de locatário individual, e não no máximo de vCPUs disponíveis para alocação excessiva.

Custos

Os nós de locatário individual que têm a alocação excessiva de CPU selecionada no modelo de nó recebem uma cobrança adicional de 25%. Essa cobrança será feita além do acréscimo de 10% premium para executar VMs em nós de locatário individual. O acréscimo de alocação excessiva de CPU é fixo, seja qual for o nível de alocação excessiva de CPU e de quantas VMs são programadas no nó de locatário individual.

Os nós de locatário individual oferecem descontos por uso contínuo. Os descontos por uso prolongado estão disponíveis para o acréscimo por locatário individual e o acréscimo de alocação excessiva de CPU.

Para estimar o custo de execução de VMs em nós de locatário individual, consulte a Calculadora de preços.

Configurar VMs de locatário individual para alocação excessiva

Para configurar VMs de locatário individual para ter recursos de CPU disponíveis para alocação excessiva, faça o seguinte:

  1. Crie um modelo de nó de locatário individual com alocação excessiva de CPU ativada. É necessário ativar a alocação excessiva de CPU ao criar o modelo de nó. Não é possível ativar a alocação excessiva de CPU depois de criar um modelo de nó.

  2. Crie um grupo de nós de locatário individual com base no modelo de nó de locatário individual que tenha a alocação excessiva de CPU ativada.

  3. Crie uma VM e faça o seguinte:

    1. Escolha um tipo de máquina para a VM. A quantidade de CPUs no tipo de máquina representa o número máximo de CPUs em que uma VM pode permitir bursts a partir da quantidade mínima de CPUs, se esta quantidade for menor que aquela especificada pelo tipo de máquina.

      É possível escolher um tipo de máquina diferente para cada VM em um nó de locatário individual, desde que não exceda as capacidades de CPU e memória do nó de locatário individual.

    2. Especifique o número mínimo de CPUs a serem alocadas para essa única VM ou use um grupo de instâncias gerenciadas para criar várias VMs com o mesmo nível de alocação excessiva de CPU.

Antes de começar

  • Crie um modelo de nó de locatário individual e especifique --cpu-overcommit-type=enabled.
  • Crie um grupo de nós de locatário individual com base no modelo de nó de locatário individual com a alocação excessiva de CPU ativada.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Definir o nível de alocação excessiva de CPU

Os procedimentos a seguir mostram como criar uma VM de locatário individual com recursos de CPU disponíveis para alocação excessiva. Se você precisar modificar o nível de alocação extra de CPU de uma VM em execução, primeiro interrompa a VM.

Console

No Console do Google Cloud, crie uma VM de locatário individual em um grupo de nós de locatário individual criado a partir de um modelo desse tipo com a alocação excessiva de CPU ativada:

  1. Acessar a página Nós de locatário individual.

    Acesse "nós de locatário individual"

  2. Clique em Grupos de nós.

  3. Clique no grupo de nós de locatário individual em que a VM será criada.

  4. Clique em Criar instância.

  5. Especifique o Nome, a Região e a Zona da VM.

  6. Em Configuração da máquina, escolha um Tipo de máquina fixo ou personalizado com pelo menos quatro vCPUs.

  7. Em Alocação excessiva de CPU, selecione Ativar alocação excessiva de CPU.

  8. Em Mínimo de vCPUs alocadas, ajuste o controle deslizante ou insira manualmente o número de vCPUs para especificar o nível de alocação excessiva das CPUs nessa VM.

  9. Clique em Criar para criar uma instância de VM que tenha recursos de CPU disponíveis para alocação excessiva.

gcloud

O exemplo a seguir mostra como usar o comando gcloud compute instances create para criar uma VM de locatário individual em um tipo de máquina fixo com recursos de CPU disponíveis para alocação excessiva.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --min-node-cpu=MIN_VCPUS \
    --node-group=GROUP_NAME

Substitua:

  • VM_NAME: o nome da VM em que será feita a alocação extra de CPU.

  • MACHINE_TYPE: o tipo de máquina para provisionar a VM de locatário individual. O número de CPUs especificado pelo tipo de máquina é o número máximo de CPUs em que a VM pode permitir bursts a partir de MIN_VCPUS.

  • MIN_VCPUS: o número mínimo de vCPUs com garantia de disponibilidade para essa VM.

  • GROUP_NAME: o nome do grupo de nó de locatário individual para provisionar a VM.

Como configurar o nível de alocação excessiva em um tipo de máquina personalizado

Para criar uma VM de locatário individual com recursos de CPU disponíveis para alocação excessiva em um tipo de máquina personalizado, omita a sinalização --machine-type. Em vez disso, use as sinalizações --custom-cpu e --custom-memory para especificar o número de CPUs e a quantidade de memória, em gigabytes, para a máquina personalizada.

REST

O exemplo a seguir mostra como usar o comando instances.insert para criar uma VM de locatário individual em um tipo de máquina fixo com recursos de CPU disponíveis para alocação excessiva.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "scheduling": {
    "minNodeCpus": MIN_VCPUS,
    "nodeAffinities": [
      {
        "key": "compute.googleapis.com/node-group-name",
        "operator": "IN",
        "values": [
          "GROUP_NAME"
        ]
      }
    ]
  },
  ...
}

Substitua:

  • PROJECT_ID: o ID do projeto.

  • ZONE: a zona da solicitação.

  • MACHINE_TYPE_ZONE: a zona que hospeda o tipo de máquina.

  • MACHINE_TYPE: o tipo de máquina para provisionar a VM de locatário individual. O número de CPUs especificado pelo tipo de máquina é o número máximo de CPUs que a VM pode permitir bursts até MIN_VCPUS.

  • VM_NAME: o nome da VM de locatário individual para a alocação extra de CPUs.

  • MIN_VCPUS: o número mínimo de vCPUs com garantia de disponibilidade para essa VM.

  • GROUP_NAME: o nome do grupo de nó de locatário individual para provisionar a VM.

Como configurar o nível de alocação excessiva em um tipo de máquina personalizado

Para criar uma VM de locatário individual com recursos de CPU disponíveis para alocação excessiva em um tipo de máquina personalizado, substitua o valor do campo machineType por zones/zone/machineTypes/custom-CPUS-MEMORY, substituindo CPUS pelo número de CPUs e MEMORY pela quantidade de memória, em megabytes, para o tipo de máquina personalizado.

Atualizar o nível de alocação extra de CPU

Os procedimentos a seguir mostram como atualizar o nível de alocação excessiva de CPU de uma VM de locatário individual.

gcloud

  1. Para modificar o nível de alocação extra de CPU de uma VM em execução, primeiro interrompa a VM. Para interromper uma VM, use o comando gcloud compute instances stop da seguinte maneira:

    gcloud compute instances stop VM_NAME
    

    Substitua VM_NAME pelo nome da instância que você quer parar.

  2. Para atualizar o nível de alocação excessiva de CPU de uma VM de locatário individual, use o comando gcloud compute instances set-scheduling desta maneira:

    gcloud compute instances set-scheduling VM_NAME \
      --min-node-cpu=MIN_VCPUS
    

    Substitua:

    • VM_NAME: o nome da VM de locatário individual para modificar o nível de alocação excessiva de CPU.

    • MIN_VCPUS: o número mínimo de vCPUs com garantia de disponibilidade para essa VM.

REST

  1. Para modificar o nível de alocação extra de CPU de uma VM em execução, primeiro interrompa a VM. Para interromper uma VM, crie uma solicitação POST usando o método instances.stop da seguinte maneira:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    Substitua:

    • PROJECT_ID: ID do projeto.

    • ZONE: a zona da solicitação.

    • VM_NAME: o nome da VM de locatário individual para modificar o nível de alocação excessiva de CPU.

  2. Para atualizar o nível de alocação excessiva de CPU de uma VM de locatário individual, use o método instances.setScheduling da seguinte maneira:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    {
    "minNodeCpus":MIN_VCPUS
    }
    

    Substitua:

    • PROJECT_ID: ID do projeto.

    • ZONE: a zona da solicitação.

    • VM_NAME: o nome da VM de locatário individual para modificar o nível de alocação excessiva de CPU.

    • MIN_VCPUS: o número mínimo de vCPUs com garantia de disponibilidade para essa VM.

Desativar alocação extra de CPU para VMs de locatário individual

Os procedimentos a seguir mostram como desativar a alocação excessiva de CPU de uma VM de locatário individual.

gcloud

O exemplo a seguir mostra como usar o comando gcloud compute instances set-scheduling para desativar a alocação excessiva de CPU de uma VM de locatário individual.

gcloud compute instances set-scheduling VM_NAME \
  --clear-min-node-cpu

Substitua:

  • VM_NAME: o nome da VM de locatário individual para desativar a alocação excessiva de CPU.

REST

O exemplo a seguir mostra como usar o comando instances.setScheduling para desativar a alocação excessiva de CPU de uma VM de locatário individual.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
{
  "minNodeCpus":null
}

Substitua:

  • PROJECT_ID: o ID do projeto.

  • ZONE: a zona da solicitação.

  • VM_NAME: o nome da VM de locatário individual para desativar o alocação extra de CPU.

Conferir o uso da CPU

Para verificar o uso da CPU de VMs de locatário individual em um grupo de nós de locatário individual, faça isto:

  1. No Console do Google Cloud, acesse a página Nós de locatário individual.

    Acesse "nós de locatário individual"

  2. Clique em Grupos de nós.

  3. Clique no grupo de nós de locatário individual que contém o nó de locatário individual que tem a VM com CPUs com alocação excessiva.

  4. Clique no nó de locatário individual que tem a VM com CPUs com alocação excessiva.

  5. Abaixo do nome do nó de locatário individual, veja o uso da CPU, o tipo de alocação excessiva da CPU e o uso mínimo da CPU.

    • O uso da CPU mostra o total do número máximo de CPUs para todas as VMs nesse nó de locatário individual dividido pelo número de CPUs especificadas pelo tipo de nó de locatário individual.

      O número de CPUs no nó disponível para alocação excessiva é o numerador menos o denominador, enquanto que o nível de alocação excessiva é o quociente do numerador e do denominador.

    • Uso mínimo da CPU mostra a soma do número mínimo de CPUs alocadas para todas as VMs em um nó de locatário individual dividido pelo número de CPUs especificadas pelo tipo de nó.

Otimizar os níveis de alocação excessiva de CPU

Para ajudar a otimizar o ajuste dos níveis de alocação excessiva de CPU, o Compute Engine fornece a métrica Tempo de espera do programador. A métrica Tempo de espera do programador indica o tempo de espera agregado de todas as vCPUs na VM e ajuda a determinar o impacto da alocação excessiva de CPU no desempenho da VM.

A sensibilidade da carga de trabalho varia, mas uma regra geral é usar 20 milissegundos de tempo de espera do programador acumulado por segundo (20 ms/s) como o tempo de espera máximo de cada vCPU. Por exemplo, se uma VM for definida para 8 vCPUs, o limite básico será de 160 ms/s, resultando em uma média aceitável de Tempo de espera do programador de 20 ms/s por vCPU. São os requisitos de desempenho da carga de trabalho que definem os limites aceitáveis.

  1. No Console do Google Cloud, acesse a página Monitoring.

    Acessar Monitoring

  2. Clique em Metrics Explorer.

  3. No campo Tipo de recurso, insira a Instância da VM.

  4. No campo Métrica, digite o Tempo de espera do programador.

  5. Se quiser, configure alertas para os limites de tempo de espera da VM, clicando em Alerta.

A seguir