Este documento explica como reduzir a latência da rede entre as VMs de uma tarefa especificando uma política de posicionamento compacta.
Ter anfitriões de VMs fisicamente mais próximos uns dos outros numa zona pode reduzir a latência de rede entre VMs. Esta vantagem de desempenho pode ser especialmente útil para trabalhos com tarefas fortemente interligadas, como tarefas que comunicam através de bibliotecas MPI. Quando cria uma tarefa, pode, opcionalmente, exigir que as VMs de uma tarefa estejam localizadas mais próximas umas das outras, especificando uma política de posicionamento compacto. Caso contrário, o posicionamento predefinido de VMs distribui normalmente as VMs por hosts separados para ajudar a minimizar o impacto das falhas de energia.
Para saber mais acerca das políticas de posicionamento compactas, consulte o artigo Acerca das políticas de posicionamento na documentação do Compute Engine.
Antes de começar
- Se nunca usou o Batch, reveja o artigo Comece a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e utilizadores.
-
Para receber as autorizações de que precisa para criar uma tarefa, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Editor de tarefas em lote (
roles/batch.jobsEditor
) no projeto -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço da tarefa, que, por predefinição, é a conta de serviço predefinida do Compute Engine
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
-
Editor de tarefas em lote (
Restrições
Além das restrições gerais das políticas de posicionamento compacto, o Batch também tem as seguintes restrições:
- Quando especifica que uma tarefa deve usar uma política de posicionamento compacta, o Batch cria e elimina automaticamente uma política de posicionamento compacta para as VMs da tarefa. Não pode especificar uma política de posicionamento compacta existente para um trabalho.
- Não pode especificar um número de VMs para a política de posicionamento compacta. A política de posicionamento compacto para uma tarefa aplica-se independentemente do número de VMs em que a tarefa é executada.
Crie e execute uma tarefa que use uma política de posicionamento
Pode especificar que uma tarefa use uma política de posicionamento compacta definindo o campo collocation
como COLLOCATED
através da CLI gcloud ou da API Batch.
gcloud
Crie um ficheiro JSON que especifique os detalhes de configuração da tarefa e defina o campo
collocation
comoCOLLOCATED
.Por exemplo, para criar uma tarefa de script básica que especifique uma política de posicionamento compacta, crie um ficheiro 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 a tarefa, use o comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Substitua o seguinte:
JOB_NAME
: o nome da tarefa.LOCATION
: a localização do trabalho.JSON_CONFIGURATION_FILE
: o caminho para um ficheiro JSON com os detalhes de configuração da tarefa.
API
Faça um pedido POST
ao método jobs.create
que define o campo collocation
como COLLOCATED
.
Por exemplo, para criar uma tarefa de script básica que especifique uma política de posicionamento compacta, faça o seguinte pedido:
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 o seguinte:
PROJECT_ID
: o ID do projeto do seu projeto.LOCATION
: a localização do trabalho.JOB_NAME
: o nome da tarefa.
O que se segue?
- Se tiver problemas ao criar ou executar uma tarefa, consulte a secção Resolução de problemas.
- Ver empregos e tarefas.
- Saiba mais sobre as opções de criação de tarefas.