Alocação excessiva de CPU 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 custos, fornecendo acesso a CPUs que, de outra forma, não estariam disponíveis. Ela também permite adicionar mais VMs em um único host, o que pode reduzir os requisitos de licenciamento por soquete ou por núcleo.

Ao configurar uma VM para ser provisionada em um nó de locatário individual, você precisa selecionar um tipo de máquina para a VM. Os tipos de máquinas têm uma quantidade fixa de CPUs e, se uma VM não estiver usando todos os recursos de CPU fornecidos pelo tipo de máquina, haverá recursos de CPU que poderão ser disponibilizados para outras VMs que usam a alocação excessiva de CPU. Ou seja, o nó de locatário individual pode ter recursos de CPU adicionais disponíveis para uso.

O valor para a quantidade mínima de CPUs alocada para uma VM é especificada durante a criação ou após a interrupção de uma VM e representa a quantidade mínima de CPUs que está garantida para uma VM. Esse valor pode ser definido por VM, o que permite provisionar VMs com proporções diferentes de alocação excessiva 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 excessiva permitida será 1.0. Com uma proporção de alocação excessiva 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, no tipo de nó n1-node-96-624, é 96.

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, poderá usar um tipo de máquina personalizado.

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 a quantidade máxima de CPUs em que uma VM pode permitir bursts a partir da quantidade mínima de CPUs, se a quantidade mínima de CPUs for menor que aquela especificada pelo tipo de máquina. Você pode escolher um tipo de máquina diferente para cada VM em um nó de locatário individual, desde que não exceda a capacidade de CPU e de 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.

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 excessiva de CPU porque não terão ciclos de utilização extras para outras VMs com alocação excessiva. 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

  • A alocação excessiva 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. Em outras palavras, em vez de sobrecarregar as CPUs, o Google recomenda modificar o tamanho da instância de VM para corresponder aos requisitos dos recursos dessa carga de trabalho.

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

    • VMs de tipo de máquina n1 que são provisionadas em grupos de nós com base no tipo de nó n1-node-96-624.

    • VMs de tipo de máquina n2 que são provisionadas em grupos de nós com base no tipo de nó n2-node-80-640.

  • 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.

  • 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 excessiva de CPU não permitem o provisionamento de VMs com alocação excessiva 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 excessiva de CPU.

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

  • 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.

Preço

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.

Antes de começar

Como configurar 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 excessiva de CPU de uma VM atualmente 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.

    Acessar a página 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(/sdk/gcloud/reference/beta/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.

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.

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

Substitua:

  • VM_NAME: nome da VM para ativar a alocação excessiva das CPUs.

  • MACHINE_TYPE: 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 ter um burst a partir de MIN_VCPUS.

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

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

API

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.

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.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/PROJECT_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"
        ]
      }
    ]
  },
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "/global/networks/NETWORK",
    }
  ]
}

Substitua:

  • PROJECT_ID: ID do seu projeto.

  • PROJECT_ZONE: zona que hospeda seu projeto.

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

  • MACHINE_TYPE: 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: nome da VM de locatário individual para a alocação excessiva das CPUs.

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

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

  • IMAGE_PROJECT: nome do projeto de imagem que contém a família de imagens.

  • IMAGE_FAMILY: nome da família de imagens de onde copiar uma imagem para sua VM.

  • NETWORK: nome da rede, por exemplo, default. Dependendo da configuração, talvez seja necessário adicionar um campo subnetwork.

Como visualizar o uso da CPU

Verifique o uso da CPU de VMs de locatário individual em um grupo de nós de locatário individual seguindo o procedimento abaixo.

Console

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

    Acessar a página 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, e 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ó.

Como 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 Mega Samples por segundo (MS/s) como tempo máximo de espera para cada vCPU. Por exemplo, se uma VM for definida como 8 vCPUs, o limite básico será de 160 MS/s, o que resulta em uma média aceitável de Tempo de espera do programador de 20 MS/s por vCPU. Os requisitos de desempenho da carga de trabalho determinam limites aceitáveis.

Console

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

    Acessar a página do Monitoring

  2. Clique em Metrics Explorer.

  3. Em Localizar tipo de recurso e métrica, insira Instância da VM.

  4. Em Selecione uma métrica, digite Tempo de espera do programador.

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

A seguir