Reduzir a latência usando políticas de posicionamento compacto

Este documento explica como reduzir a latência de rede entre as VMs de um job ao especificando uma política de posicionamento compacto.

Ter hosts de VM que estão fisicamente mais próximos uns dos outros em um zone pode reduzir e a latência de rede entre as VMs. Esse benefício no desempenho pode ser especialmente útil para trabalhos 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 sejam localizadas mais próximos uns dos outros 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 as políticas de posicionamento compacto, consulte Sobre as políticas de posicionamento na documentação do Compute Engine.

Antes de começar

Restrições

Além da seção restrições gerais para políticas de posicionamento compactas, O Batch também tem as seguintes restrições:

  • Ao especificar 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 um 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 de quantas VMs em que o job é 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 a Campo collocation para COLLOCATED usando a CLI gcloud ou a API Batch.

gcloud

  1. criar um arquivo JSON que especifique os detalhes e conjuntos de configuração do job o campo collocation como COLLOCATED.

    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"
      }
    }
    
  2. 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 trabalho.

    • JSON_CONFIGURATION_FILE: o caminho para um JSON. com os detalhes de configuração do job.

API

Faça uma solicitação POST ao 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:

  • PROJECT_ID: o ID do projeto do seu projeto.

  • LOCATION: o local do trabalho.

  • JOB_NAME: o nome do job.

A seguir