Nesta página, mostramos como configurar várias linhas de execução simultâneas nos clusters do Google Kubernetes Engine (GKE).
Visão geral
Os nós
do GKE são instâncias de máquina virtual (VM) do Compute Engine
que o GKE cria em seu nome. Nessas VMs, é comum ter a opção de várias linhas de execução simultâneas (SMT, na sigla em inglês) ativada por padrão. SMT é a capacidade de executar várias
linhas de execução independentes em um único núcleo físico de CPU. Com a SMT ativada, um único núcleo físico pode executar duas CPUs virtuais (vCPUs) como linhas de execução independentes e separadas. Por exemplo, um nó n2-standard-32
do GKE está, na verdade, executando 32 vCPUs em 16 núcleos de CPU física.
Com a introdução da configurabilidade do SMT nos nós do GKE, agora é possível configurar o SMT para que o número de vCPUs efetivas seja igual ao número de núcleos físicos, o que significa que os nós do GKE podem usar o núcleo físico completo por vCPU.
Vantagens
A configuração de SMT no GKE oferece os seguintes benefícios.
Desempenho aprimorado
Algumas cargas de trabalho de Computação de alto desempenho (HPC, na sigla em inglês) podem melhorar o desempenho desativando a SMT. Normalmente, para muitas tarefas de computação gerais ou que exigem muita E/S, a SMT pode aumentar significativamente a capacidade do aplicativo. Por outro lado, para jobs vinculados à computação em que os dois núcleos virtuais são vinculados à computação, a SMT pode prejudicar o desempenho geral do aplicativo e adicionar uma variação não determinística aos jobs. Portanto, com a SMT desativada, alguns aplicativos de HPC podem ter um desempenho melhor e mais previsível.
Redução nos custos de licenciamento
Alguns contratos de licenciamento de software têm modelos de faturamento vinculados ao número de vCPUs consumidos. Ao desativar a SMT, o número de vCPUs de cada núcleo é reduzido pela metade. Isso pode reduzir os custos de licenciamento. Para mais informações, consulte seu contrato de licenciamento.
Consulte a seção de preços para entender como o Google Cloud cobra quando a SMT está configurada.
Limitações
- Tipos de máquina: a SMT não é configurável nos
tipos de máquinas com menos de duas vCPUs
(por exemplo,
n1-standard-1
) ou no Tipo de máquina Tau T2D. - Provisionamento automático de nós: a configuração da SMT não é compatível com clusters que têm o provisionamento automático de nós ativado.
- Escalonador automático de cluster: o escalonamento a partir de zero nós com configurabilidade de SMT só é compatível com o escalonador automático de cluster para clusters que executam o GKE versão 1.21 ou posterior.
- GKE Sandbox: é possível definir configurações de SMT em nós do GKE Sandbox
em clusters do GKE Standard versão 1.24.2-gke.300 e posterior usando a sinalização
--threads-per-core
e, nas versões anteriores, usando um DaemonSet independente. Para instruções, consulte o GKE Sandbox. Como as várias linhas de execução são desativadas por padrão no Sandbox do GKE antes da versão 1.24.2-gke.300, não é possível configurar SMT usandothreads-per-core
. Se você usa o GKE Sandbox e quer ativar a SMT, consulte A SMT pode estar desativada. - Modo de cluster: a configurabilidade da SMT não é compatível com clusters do Autopilot do GKE.
Preços
A SMT para GKE é faturada com base nos preços do Compute Engine para SMT. Você é cobrado pelo número de vCPUs definidas pelo tipo de máquina de uma VM, não pelo número de linhas de execução executadas em cada núcleo. Mesmo que você configure a SMT, continuará recebendo cobranças pelo número padrão de vCPUs definido pelo tipo de máquina da VM. Para mais informações sobre como você é cobrado pelas VMs, consulte Preços de instâncias de VM.
Por exemplo, um nó do GKE criado usando o tipo de máquina n2-standard-8
é executado com SMT ativada por padrão e pode executar até 8 vCPUs, ou seja, 2 vCPUs para cada um dos quatro núcleos de CPU física. Se você configurar o SMT para usar apenas uma linha de execução por núcleo (efetivamente quatro vCPUs), ainda assim serão cobradas oito vCPUs.
Configurar SMT
Configure a SMT em novos clusters ou pools de nós especificando o número de linhas de execução por núcleo.
A tabela a seguir mostra os valores possíveis para linhas de execução por núcleo e o comportamento SMT correspondente para o nó:
Linhas de execução por núcleo | Comportamento de SMT |
---|---|
null (não especificado) |
Padrão da VM do Compute Engine |
0 |
Inválida |
1 |
SMT desativada |
2 |
SMT ativada |
> 2 |
Inválida |
Configurar o SMT em um novo cluster
É possível configurar o SMT em novos clusters usando a CLI gcloud ou o console do Google Cloud.
gcloud
Para configurar a SMT, execute o seguinte comando:
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--threads-per-core=THREADS_PER_CORE
Substitua:
CLUSTER_NAME
: o nome do novo cluster.MACHINE_TYPE
: o tipo de máquina a ser usado nos nós do GKE. Precisa ser um tipo de máquina com duas ou mais vCPUs.THREADS_PER_CORE
: o número de linhas de execução visíveis por núcleo físico. A tabela anterior mostra os valores que você pode especificar.
Para ver a lista completa de opções, consulte a documentação do gcloud container clusters create
.
Console
Acesse a página Google Kubernetes Engine no console do Google Cloud.
Clique em add_box Criar.
Na caixa de diálogo Criar cluster, ao lado de GKE Standard, clique em Configurar.
No menu de navegação, na seção Pools de nós, clique no nome de um pool de nós e, em seguida, clique em Nós.
Na seção Configuração da máquina, selecione um Tipo de máquina compatível, como e2-standard-2.
Clique em
Plataforma de CPU e GPU.No menu suspenso proporção de vCPUs por núcleo, selecione uma das seguintes opções:
- 1 vCPU por núcleo: desative a SMT.
- 2 vCPUs por núcleo: mantenha o SMT ativado.
Configure os pools de nós e de cluster conforme necessário e clique em Criar.
Configurar SMT em um novo pool de nós
É possível configurar o SMT em novos pools de nós usando a CLI gcloud ou o console do Google Cloud.
gcloud
Para configurar a SMT, execute o seguinte comando:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--threads-per-core=THREADS_PER_CORE
Substitua:
POOL_NAME
: o nome do novo pool de nós.CLUSTER_NAME
: o nome do cluster existente.MACHINE_TYPE
: o tipo de máquina a ser usado nos nós do GKE. Precisa ser um tipo de máquina com duas ou mais vCPUs.THREADS_PER_CORE
: o número de linhas de execução visíveis por núcleo físico. A tabela anterior mostra os valores que você pode especificar.
Para ver a lista completa de opções, consulte a documentação do gcloud container clusters create
.
Console
Acesse a página Google Kubernetes Engine no console do Google Cloud.
Clique no nome do cluster que você quer modificar.
Clique em
Adicionar pool de nós.No menu de navegação, clique em Nós.
Na seção Configuração da máquina, selecione uma Família de máquinas e umTipo de máquina compatíveis com SMT, como n2-standard-2.
Clique em
Plataforma de CPU e GPU.No menu suspenso proporção de vCPUs por núcleo, selecione uma das seguintes opções:
- 1 vCPU por núcleo: desative a SMT.
- 2 vCPUs por núcleo: mantenha o SMT ativado.
Configure o pool de nós conforme necessário e clique em Criar.
Verificar a configuração do SMT
Linux
Para verificar a configuração da SMT em nós do Linux, siga estas etapas:
Use SSH para acessar o nó:
gcloud compute ssh NODE_NAME
Substitua
NODE_NAME
pelo nome do seu nó.Verifique o número de vCPUs:
cat /proc/cpuinfo | grep processor | wc -l
A saída será assim:
16
Se você definir o número de linhas de execução por núcleo como
1
, a saída mostrará metade do número padrão de VMs do Compute Engine. Por exemplo, a saída don2-standard-32
com SMT desativado precisa ser16
em vez do valor padrão32
.
Windows
Para verificar a configuração da SMT nos nós do Windows, execute as seguintes etapas:
Defina um nome de usuário e uma senha como RDP para o nó:
gcloud compute reset-windows-password NODE_NAME
Substitua
NODE_NAME
pelo nome do seu nó.Estabeleça uma conexão com
EXTERNAL_IP:3389
para a VM.Execute o seguinte comando do PowerShell:
Get-WmiObject -Class Win32_Processor -ComputerName. | Select-Object -Property [a-z]* | Select NumberOfCores,NumberOfLogicalProcessors
Se você definir o número de linhas de execução por núcleo como
1
, o valorNumberOfCores
precisará ser igual ao valorNumberOfLogicalProcessors
, como no exemplo de saída a seguir:Output (example n1-standard-2 with SMT off) NumberOfCores NumberOfLogicalProcessors ------------- ------------------------- 1 1
A seguir
- Saiba mais sobre os tipos de máquinas disponíveis.
- Saiba como especificar uma plataforma mínima de CPU para os nós do GKE.
- Saiba como usar nós de locatário individual do Compute Engine no GKE.