Riduci la latenza utilizzando le policy di posizionamento compatto

Questo documento spiega come ridurre la latenza di rete tra le VM di un job specificando un criterio di posizionamento compatto.

Se gli host VM sono fisicamente più vicini tra loro all'interno di una zona, la latenza di rete tra le VM può essere ridotta. Questo vantaggio in termini di prestazioni può essere particolarmente utile per i job con attività strettamente accoppiate, ad esempio attività che comunicano utilizzando le librerie MPI. Quando crei un job, puoi richiedere facoltativamente che le VM di un job si trovino più vicine tra loro specificando una policy di posizionamento compatta. In caso contrario, il posizionamento predefinito delle VM in genere distribuisce le VM su host separati per ridurre al minimo l'impatto delle interruzioni di corrente.

Per saperne di più sulle policy di posizionamento compatto, consulta Informazioni sulle policy di posizionamento nella documentazione di Compute Engine.

Prima di iniziare

  1. Se non hai mai utilizzato Batch, consulta la sezione Guida introduttiva a Batch e attiva Batch completando i prerequisiti per progetti e utenti.
  2. Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Limitazioni

Oltre alle limitazioni generali per le norme di posizionamento compatto, Batch presenta anche le seguenti limitazioni:

  • Quando specifichi che un job deve utilizzare una policy di posizionamento compatto, Batch crea ed elimina automaticamente una policy di posizionamento compatto per le VM del job. Non puoi specificare una policy di posizionamento compatto esistente per un job.
  • Non puoi specificare un numero di VM per la policy di posizionamento compatto. La policy di posizionamento compatto per un job si applica indipendentemente dal numero di VM su cui viene eseguito il job.

Crea ed esegui un job che utilizza una policy di posizionamento

Puoi specificare che un job utilizzi una policy di posizionamento compatto impostando il campo collocation su COLLOCATED utilizzando gcloud CLI o l'API Batch.

gcloud

  1. Crea un file JSON che specifichi i dettagli di configurazione del job e imposti il campo collocation su COLLOCATED.

    Ad esempio, per creare un job di script di base che specifica una policy di posizionamento compatta, crea un file JSON con i seguenti contenuti:

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world from task ${BATCH_TASK_INDEX}"
                }
              }
            ]
          },
          "taskCount": 3
        }
      ],
      "allocationPolicy": {
        "placement": {
          "collocation": "COLLOCATED"
        }
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  2. Per creare ed eseguire il job, utilizza il comando gcloud batch jobs submit:

    gcloud batch jobs submit JOB_NAME \
      --location LOCATION \
      --config JSON_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

    • JOB_NAME: il nome del job.

    • LOCATION: la sede del lavoro.

    • JSON_CONFIGURATION_FILE: il percorso di un file JSON con i dettagli di configurazione del job.

API

Invia una richiesta POST al metodo jobs.create che imposta il campo collocation su COLLOCATED.

Ad esempio, per creare un job di script di base che specifica una policy di posizionamento compatto, invia la seguente richiesta:

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"
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto del tuo progetto.

  • LOCATION: la sede del lavoro.

  • JOB_NAME: il nome del job.

Passaggi successivi