Esta página mostra como configurar a multitarefa simultânea nos seus clusters do Google Kubernetes Engine (GKE).
Vista geral
Os nós do GKE são instâncias de máquinas virtuais (VMs) do Compute Engine que o GKE cria em seu nome. Nestas VMs, é comum ter a
execução simultânea em vários processadores (SMT)
ativada por predefinição. O SMT é a capacidade de executar vários threads independentes num único núcleo físico da CPU. Com a SMT ativada, um único núcleo físico pode executar duas CPUs virtuais (vCPUs) como threads independentes e separadas. Por exemplo, um nó do GKE está, na verdade, a executar 32 vCPUs em 16 núcleos físicos da CPU.n2-standard-32
Com a introdução da configurabilidade da SMT nos nós do GKE, já pode configurar a SMT para que o número de vCPUs efetivas seja igual ao número de núcleos físicos, o que significa que os seus nós do GKE podem usar o núcleo físico completo por vCPU.
Vantagens
A configuração da SMT no GKE oferece as seguintes vantagens.
Desempenho melhorado
Algumas cargas de trabalho de computação de alto desempenho (HPC) podem observar uma melhoria no desempenho desativando a SMT. Normalmente, para muitas tarefas de computação geral ou tarefas que requerem muitas E/S, a SMT pode aumentar significativamente o débito da aplicação. Por outro lado, para tarefas limitadas pela computação em que ambos os núcleos virtuais são limitados pela computação, a SMT pode prejudicar o desempenho geral da aplicação e adicionar variação não determinística às tarefas. Por conseguinte, com o SMT desativado, algumas aplicações de HPC podem ter um desempenho melhor e mais previsível.
Custos de licenciamento reduzidos
Alguns contratos de licenciamento de software têm modelos de faturação associados ao número de CPUs virtuais consumidas. A desativação da SMT reduz o número de vCPUs para cada núcleo em metade, o que pode reduzir os custos de licenciamento. Para mais informações, consulte o seu contrato de licenciamento.
Consulte a secção Preços para compreender como Google Cloud são feitas as faturas quando o SMT está configurado.
Limitações
- Tipos de máquinas: a SMT não é configurável em tipos de máquinas com menos de 2 vCPUs (por exemplo,
n1-standard-1
) ou no tipo de máquina Tau T2D. - Aprovisionamento automático de nós: a configurabilidade da SMT não é suportada para clusters que tenham o aprovisionamento automático de nós ativado.
- Escala automática de clusters: a escalabilidade a partir de zero nós com a capacidade de configuração da SMT só é suportada na escala automática de clusters para clusters com a versão 1.21 ou posterior do GKE.
- GKE Sandbox: pode configurar as definições de SMT em nós do GKE Sandbox em clusters padrão do GKE com a versão 1.24.2-gke.300 e posteriores através da flag
--threads-per-core
e em versões anteriores através de um DaemonSet autónomo. Para ver instruções, consulte o artigo GKE Sandbox. Uma vez que a multithreading está desativada por predefinição no GKE Sandbox antes da versão 1.24.2-gke.300, a configuração da SMT através dethreads-per-core
não é suportada. Se usar o GKE Sandbox e quiser ativar o SMT, consulte o artigo O SMT pode estar desativado. - Modo de cluster: a configurabilidade da SMT não é suportada em clusters do GKE Autopilot.
Preços
A SMT para o GKE é faturada com base nos preços do Compute Engine para SMT. A faturação é feita com base no número de vCPUs definidas pelo tipo de máquina de uma VM e não no número de threads executados em cada núcleo. Mesmo que configure a SMT, continua a receber faturação pelo número predefinido de vCPUs definido pelo tipo de máquina da VM. Para mais informações sobre a faturação de VMs, consulte os preços das instâncias de VM.
Por exemplo, um nó do GKE criado com o tipo de máquina n2-standard-8
é executado com a SMT ativada por predefinição e pode executar até 8 vCPUs, que correspondem a 2 vCPUs para cada um dos quatro núcleos físicos da CPU. Se configurar a
SMT para usar apenas um processador por núcleo (efetivamente 4 vCPUs), continua a
receber faturação por 8 vCPUs.
Configure o SMT
Pode configurar a SMT em novos clusters ou conjuntos de nós especificando o número de threads por núcleo.
A tabela seguinte mostra os valores possíveis para threads por núcleo e o comportamento de SMT correspondente para o nó:
Discussões por núcleo | Comportamento de SMT |
---|---|
null (não especificado) |
Predefinição de VM do Compute Engine |
0 |
Inválido |
1 |
SMT desativada |
2 |
SMT ativado |
> 2 |
Inválido |
Configure o SMT num novo cluster
Pode configurar o SMT em novos clusters através da CLI gcloud ou da Google Cloud consola.
gcloud
Para configurar o SMT, execute o seguinte comando:
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--threads-per-core=THREADS_PER_CORE
Substitua o seguinte:
CLUSTER_NAME
: o nome do novo cluster.MACHINE_TYPE
: o tipo de máquina a usar para os nós do GKE. Tem de ser um tipo de máquina com 2 ou mais vCPUs.THREADS_PER_CORE
: o número de threads por núcleo físico. A tabela anterior mostra os valores que pode especificar.
Para ver uma lista completa de opções, consulte a gcloud container clusters create
documentação.
Consola
Na Google Cloud consola, aceda à página Criar um cluster do Kubernetes.
No menu de navegação, na secção Conjuntos de nós, clique no nome de um conjunto de nós e, de seguida, clique em Nós.
Na secção Configuração da máquina, selecione um Tipo de máquina suportado, como e2-standard-2.
Clique em
Plataforma de CPU e GPU.No menu pendente Relação entre vCPUs e núcleos, selecione uma das seguintes opções:
- 1 vCPU por núcleo: desative o SMT.
- 2 vCPUs por núcleo: mantenha o SMT ativado.
Configure o cluster e os node pools conforme necessário e, de seguida, clique em Criar.
Configure a SMT num novo node pool
Pode configurar a SMT em novos conjuntos de nós através da CLI gcloud ou da Google Cloud consola.
gcloud
Para configurar o 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 o seguinte:
POOL_NAME
: o nome do novo node pool.CLUSTER_NAME
: o nome do cluster existente.MACHINE_TYPE
: o tipo de máquina a usar para os nós do GKE. Tem de ser um tipo de máquina com 2 ou mais vCPUs.THREADS_PER_CORE
: o número de threads por núcleo físico. A tabela anterior mostra os valores que pode especificar.
Para ver uma lista completa de opções, consulte a gcloud container clusters create
documentação.
Consola
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Clique no nome do cluster que quer modificar.
Clique em
Adicionar conjunto de nós.No menu de navegação, clique em Nodes.
Na secção Configuração da máquina, selecione uma Família de máquinas e um Tipo de máquina que suportem SMT, como n2-standard-2.
Clique em
Plataforma de CPU e GPU.No menu pendente Relação entre vCPUs e núcleos, selecione uma das seguintes opções:
- 1 vCPU por núcleo: desative o SMT.
- 2 vCPUs por núcleo: mantenha o SMT ativado.
Configure o node pool conforme necessário e, de seguida, clique em Criar.
Valide a configuração do SMT
Linux
Para validar a configuração da SMT em nós Linux, siga os passos seguintes:
SSH para 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
O resultado é semelhante ao seguinte:
16
Se definir o número de threads por núcleo como
1
, o resultado deve mostrar metade do número predefinido de vCPUs da VM do Compute Engine. Por exemplo, o resultado paran2-standard-32
com SMT desativado deve ser16
em vez do valor predefinido de32
.
Windows
Para validar a configuração da SMT em nós do Windows, execute os seguintes passos:
Defina um nome de utilizador e uma palavra-passe para RDP para o nó:
gcloud compute reset-windows-password NODE_NAME
Substitua
NODE_NAME
pelo nome do seu nó.Estabeleça uma ligação ao
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 definir o número de threads por núcleo como
1
, o valorNumberOfCores
deve ser igual ao valorNumberOfLogicalProcessors
, como no seguinte exemplo de saída:Output (example n1-standard-2 with SMT off) NumberOfCores NumberOfLogicalProcessors ------------- ------------------------- 1 1
O que se segue?
- Saiba mais sobre os tipos de máquinas disponíveis.
- Saiba como especificar uma plataforma de CPU mínima para os seus nós do GKE.
- Saiba como usar nós de inquilino único do Compute Engine no GKE.