コンパクト プレースメント ポリシーを使用してレイテンシを短縮する

このドキュメントでは、コンパクト プレースメント ポリシーを指定して、ジョブの VM 間のネットワーク レイテンシを短縮する方法について説明します。

VM ホストをゾーン内で物理的に近づけることで、VM 間のネットワーク レイテンシを短縮できます。このパフォーマンスは、MPI ライブラリを使用して通信するタスクなどの密結合なタスクを持つジョブで特に役立ちます。コンパクト プレースメント ポリシーを指定すると、ジョブの作成時に、ジョブの VM を相互に近い場所に配置できます。それ以外の場合は、通常、デフォルトの VM 配置は、電源障害の影響を最小限に抑えるために別々のホストに VM を分散します。

コンパクト プレースメント ポリシーの詳細については、Compute Engine ドキュメントのプレースメント ポリシーについてをご覧ください。

準備

制限事項

コンパクト プレースメント ポリシーの一般的な制限事項に加えて、Batch には次の制限事項もあります。

  • ジョブにコンパクト プレースメント ポリシーを指定すると、ジョブ VM のコンパクト プレースメント ポリシーを Batch が自動的に作成および削除します。ジョブに既存のコンパクト プレースメント ポリシーを指定することはできません。
  • コンパクト プレースメント ポリシーで VM の数を指定することはできません。コンパクト プレースメント ポリシーは、ジョブを実行する VM の数に関係なく、ジョブに適用されます。

プレースメント ポリシーを使用するジョブを作成して実行する

gcloud CLI または Batch API を使用して collocation フィールドCOLLOCATED に設定すると、コンパクト プレースメント ポリシーを使用するようにジョブを指定できます。

gcloud

  1. ジョブの構成の詳細を指定する JSON ファイルを作成し、collocation フィールドを COLLOCATED に設定します。

    たとえば、コンパクト プレースメント ポリシーを指定する基本的なスクリプト ジョブを作成するには、次の内容の JSON ファイルを作成します。

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world from task ${BATCH_TASK_INDEX}"
                }
              }
            ]
          },
          "taskCount": 3
        }
      ],
      "allocationPolicy": {
        "placement": {
          "collocation": "COLLOCATED"
        }
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  2. ジョブを作成して実行するには、gcloud batch jobs submit コマンドを使用します。

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

    以下を置き換えます。

    • JOB_NAME: ジョブの名前。

    • LOCATION: ジョブのロケーション

    • JSON_CONFIGURATION_FILE: ジョブの構成の詳細を含む JSON ファイルへのパス。

API

collocation フィールドを COLLOCATED に設定する jobs.create メソッドPOST リクエストを送信します。

たとえば、コンパクト プレースメント ポリシーを指定する基本的なスクリプト ジョブを作成するには、次のリクエストを行います。

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

次のように置き換えます。

次のステップ