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 de CPU físicos.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 eficazes 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 operações de entrada/saída, 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-coree 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-corenã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 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 conjunto de nós.
- 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_NAMEpelo 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 para- n2-standard-32com SMT desativado deve ser- 16em vez do valor predefinido de- 32.
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_NAMEpelo nome do seu nó.
- Estabeleça uma ligação ao - EXTERNAL_IP:3389para 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 valor- NumberOfCoresdeve ser igual ao valor- NumberOfLogicalProcessors, 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.