Neste documento, explicamos como reduzir a latência de rede entre as VMs de um job especificando uma política de posicionamento compacto.
Ter hosts de VM que estão fisicamente mais próximos uns dos outros em uma zona pode reduzir a latência de rede entre as VMs. Esse benefício de desempenho pode ser especialmente útil para jobs com tarefas com acoplamento rígido, como tarefas que se comunicam usando bibliotecas MPI. Ao criar um job, é possível exigir que as VMs dele fiquem mais próximas umas das outras, especificando uma política de posicionamento compacto. Caso contrário, o posicionamento de VM padrão normalmente distribui VMs entre hosts separados para ajudar a minimizar o impacto de falhas de energia.
Para saber mais sobre políticas de posicionamento compactas, consulte Sobre políticas de posicionamento na documentação do Compute Engine.
Antes de começar
- Se você nunca usou o Batch, consulte Primeiros passos com ele e ative-o concluindo os pré-requisitos para projetos e usuários.
-
Para receber as permissões necessárias para criar um job, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor de jobs em lote (
roles/batch.jobsEditor
) no projeto -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço do job, que é, por padrão, a conta de serviço padrão do Compute Engine
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
-
Editor de jobs em lote (
Restrições
Além das restrições gerais para políticas de posicionamento compactas, o Batch também tem as seguintes restrições:
- Quando você especifica que um job use uma política de posicionamento compacto, o Batch cria e exclui automaticamente uma política de posicionamento compacto para as VMs do job. Não é possível especificar uma política atual de posicionamento compacto para um job.
- Não é possível especificar um número de VMs para a política de posicionamento compacto. A política de posicionamento compacto de um job se aplica independentemente da quantidade de VMs em que ele é executado.
Criar e executar um job que usa uma política de posicionamento
É possível especificar que um job use uma política de posicionamento compacto definindo o
campo collocation
como COLLOCATED
usando a CLI gcloud ou a API Batch.
gcloud
Crie um arquivo JSON que especifique os detalhes de configuração do job e defina o campo
collocation
comoCOLLOCATED
.Por exemplo, para criar um job de script básico que especifique uma política de posicionamento compacto, crie um arquivo JSON com o seguinte conteúdo:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}" } } ] }, "taskCount": 3 } ], "allocationPolicy": { "placement": { "collocation": "COLLOCATED" } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Para criar e executar o job, use o comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Substitua:
JOB_NAME
: o nome do job.LOCATION
: o local do job.JSON_CONFIGURATION_FILE
: o caminho para um arquivo JSON com os detalhes de configuração do job.
API
Faça uma solicitação POST
para o
método jobs.create
que define o campo collocation
como COLLOCATED
.
Por exemplo, para criar um job de script básico que especifique uma política de posicionamento compacto, faça a seguinte solicitação:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}"
}
}
]
},
"taskCount": 3
}
],
"allocationPolicy": {
"placement": {
"collocation": "COLLOCATED"
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Substitua:
A seguir
- Se você tiver problemas para criar ou executar um job, consulte Solução de problemas.
- Ver tarefas e tarefas.
- Saiba mais sobre opções de criação de jobs.