Memastikan ketersediaan resource menggunakan reservasi VM

Dokumen ini menjelaskan cara membuat tugas yang dijalankan pada resource yang dicadangkan.

Reservasi adalah fitur Compute Engine. Reservasi memberikan jaminan tingkat yang sangat tinggi dalam memperoleh kapasitas untuk satu atau beberapa VM dengan konfigurasi hardware yang ditentukan. Reservasi untuk VM akan menimbulkan biaya VM tersebut dari saat Anda membuat dan hingga Anda menghapus reservasi. Namun, meskipun Anda menggunakan VM tersebut, total biayanya setara dengan VM tanpa reservasi.

Umumnya, reservasi berguna ketika ketersediaan kapasitas sangat penting atau untuk mencegah error dalam mendapatkan resource. Khusus untuk Batch, pertimbangkan untuk menggunakan reservasi khusus guna membantu meminimalkan waktu penjadwalan tugas, atau mencoba menggunakan reservasi yang sudah ada saat tidak digunakan. Jika Anda memiliki reservasi yang kurang digunakan—seperti reservasi yang diperlukan untuk diskon abonemen—Anda dapat mengonfigurasi tugas agar mencoba memakainya saat sedang tidak digunakan untuk mencoba membantu mengoptimalkan biaya yang timbul.

Untuk mempelajari reservasi lebih lanjut, lihat dokumentasi Compute Engine untuk reservasi.

Sebelum memulai

Pembatasan

Selain batasan umum untuk reservasi, Batch juga memiliki batasan berikut:

  • VM tugas tidak dapat menggunakan reservasi bersama.
  • VM tugas tidak dapat menggunakan reservasi jika menentukan kebijakan penempatan ringkas.

Persyaratan

Bagian ini merangkum persyaratan agar VM tugas dapat menggunakan reservasi. Untuk mengetahui informasi selengkapnya tentang semua persyaratan, lihat persyaratan umum untuk reservasi dalam dokumentasi Compute Engine dan prosedur perencanaan konfigurasi nanti dalam dokumen ini.

  • Agar VM tugas secara umum dapat menggunakan reservasi, semua kondisi berikut harus dipenuhi:

    • Tugas dan reservasi harus menentukan properti VM yang sama persis.

    • Anda harus mematuhi semua batasan dalam dokumen ini dan semua persyaratan umum lainnya untuk reservasi.

  • Agar setiap VM tugas berhasil menggunakan reservasi, reservasi tersebut harus memiliki kapasitas tidak terpakai yang tersedia selama runtime VM.

    Kapasitas yang tidak terpakai dari reservasi adalah perbedaan antara jumlah VM-nya dan jumlah VM yang saat ini menggunakannya. VM mencoba menggunakan reservasi setiap kali Anda memiliki kapasitas reservasi yang tidak digunakan. Jadi, VM dapat mulai menggunakan reservasi saat VM dibuat atau setelahnya dalam runtime-nya. VM tidak berhenti menggunakan reservasi sampai VM berhenti berjalan atau reservasi dihapus.

    Bergantung pada total kapasitas reservasi yang tidak digunakan, tidak ada, beberapa, atau semua VM tugas yang dapat menggunakan reservasi, dan jumlah VM yang dicadangkan dapat bervariasi selama runtime tugas.

Membuat dan menjalankan tugas yang dapat menggunakan VM yang dicadangkan

  1. Rencanakan konfigurasi Anda. Untuk memastikan tugas dan reservasi Anda kompatibel, selesaikan langkah-langkah berikut.

    Jika ingin menggunakan reservasi yang sudah ada, Anda harus membuat tugas dengan konfigurasi yang sesuai. Atau, jika Anda berencana membuat reservasi baru, pilih opsi konfigurasi yang Anda inginkan.

    1. Menentukan properti reservasi. Karena pembatasan tersebut, jenis berbagi harus berupa single-project, yang merupakan opsi default untuk reservasi. Tentukan nilai yang ingin Anda gunakan untuk properti reservasi berikut:

      • Jenis pemakaian*
      • Jumlah VM

      *Jenis konsumsi reservasi (ditargetkan secara khusus atau dipakai secara otomatis) menentukan VM mana yang dapat menggunakan reservasi.

      Jumlah VM merepresentasikan total kapasitas reservasi. Saat menentukan nilai ini, pertimbangkan jumlah VM tugas.

    2. Tentukan properti VM untuk tugas dan reservasi. Karena pembatasan tersebut, tugas atau reservasi tidak dapat menentukan kebijakan penempatan rapat, yang merupakan opsi default untuk reservasi dan tugas. Tentukan nilai yang ingin Anda gunakan untuk properti VM berikut, yang harus sama persis dengan reservasi dan tugas:

      • Project
      • Zona*
      • Jenis mesin
      • Platform CPU minimum (jika ada)
      • Jenis dan jumlah GPU (jika ada)
      • Jenis dan jumlah SSD lokal (jika ada)
      • Minat reservasi#

      *VM tugas harus berada di zona yang sama dengan VM yang dicadangkan. Anda harus menyertakan zona ini di kolom allowedLocations[] tugas atau, jika menghapus kolom allowedLocations[], tetapkan lokasi tugas ke region yang berisi zona ini.

      Tugas harus menentukan semua properti ini menggunakan subkolom policy atau template instance VM. Tugas tidak dapat menentukan kombinasi subkolom policy dan template.

      Kolom opsional tidak dapat ditentukan untuk satu resource dan dihapus dari resource lainnya. Tentukan atau hapus kolom opsional untuk reservasi dan tugas. Jika tugas tersebut menentukan template instance VM, hal ini juga berlaku untuk kolom di template yang ditentukan.

      #Jenis konsumsi reservasi menentukan afinitas reservasi yang diperlukan untuk VM tugas, yang harus Anda tentukan dalam tugas sebagai berikut:

  2. Siapkan reservasi. Jika belum melakukannya, buat reservasi yang Anda inginkan untuk digunakan oleh VM tugas. Pastikan reservasi memiliki properti yang Anda rencanakan.

  3. Buat dan jalankan tugas. Anda dapat membuat dan menjalankan tugas yang memakai VM dari reservasi yang telah disiapkan menggunakan gcloud CLI atau Batch API:

    gcloud

    1. Buat file JSON yang menentukan detail konfigurasi tugas yang menetapkan subkolom resource instance VM (instances[]) agar sama persis dengan properti VM reservasi.

      Misalnya, untuk membuat tugas skrip dasar yang menggunakan VM dari reservasi, buat file JSON dengan konten berikut:

      {
        "taskGroups": [
          {
            "taskSpec": {
              "runnables": [
                {
                  "script": {
                    "text": "echo Hello world from task ${BATCH_TASK_INDEX}"
                  }
                }
              ]
            },
            "taskCount": 3
          }
        ],
        "allocationPolicy": {
          "instances": [
            {
              VM_RESOURCES
            }
          ],
        },
        "logsPolicy": {
          "destination": "CLOUD_LOGGING"
        }
      }
      

      Ganti VM_RESOURCES dengan resource VM yang sesuai dengan reservasi yang Anda inginkan untuk digunakan oleh tugas dengan menentukan subkolom instances[] yang Anda rencanakan pada langkah sebelumnya.

      Misalnya, mulai dari nilai berikut untuk VM_RESOURCES:

      "installGpuDrivers": INSTALL_GPU_DRIVERS,
      "policy": {
        "machineType": "MACHINE_TYPE",
        "minCpuPlatform": "MIN_CPU_PLATFORM",
        "accelerators": [
          {
            "type": "GPU_TYPE",
            "count": GPU_COUNT
          }
        ],
        "disks": [
          {
            "newDisk": {
              "sizeGb": LOCAL_SSD_SIZE,
              "type": "local-ssd"
            },
            "deviceName": "LOCAL_SSD_NAME"
          }
        ],
        "reservation": "SPECIFIC_RESERVATION_NAME"
      }
      

      Untuk menggunakan nilai ini, buat semua perubahan berikut:

      1. Apakah Anda ingin menggunakan template instance?

        • Ya: Ganti kolom policy dengan kolom instanceTemplate dan tentukan template instance VM yang ada dan cocok dengan reservasi. Misalnya, lihat contoh kode untuk menggunakan template instance VM. Jika reservasi menggunakan GPU atau SSD lokal, Anda juga perlu mengonfigurasi masing-masing kolom installGpuDrivers dan kolom volumes[] tugas. Jika tidak, lewati perubahan lainnya.

        • Tidak: Ganti MACHINE_TYPE dengan jenis mesin yang sama dengan reservasi.

      2. Apakah reservasi mencakup platform CPU minimum?

        • Yes: Ganti MIN_CPU_PLATFORM dengan platform CPU minimum yang sama.

        • Tidak: Hapus kolom minCpuPlatform.

      3. Apakah reservasi menyertakan GPU?

        • Ya: Ganti INSTALL_GPU_DRIVERS, GPU_TYPE, dan GPU_COUNT agar sesuai dengan reservasi. Misalnya, lihat contoh kode untuk menggunakan GPU.

        • Tidak: Hapus kolom installGpuDrivers dan kolom accelerators[].

      4. Apakah reservasi mencakup SSD lokal?

        • Ya: Ganti LOCAL_SSD_SIZE dan LOCAL_SSD_NAME agar sesuai dengan reservasi, dan pasang SSD lokal dengan menambahkan kolom volumes[] ke tugas. Misalnya, lihat contoh kode untuk menggunakan SSD lokal.

        • Tidak: Hapus kolom disks[].

      5. Apakah reservasi menggunakan jenis konsumsi yang ditargetkan secara khusus?

        • Ya: Ganti SPECIFIC_RESERVATION_NAME dengan nama reservasi.

        • Tidak: Hapus kolom reservation.

      Misalnya, Anda menggunakan reservasi yang digunakan secara otomatis untuk VM n2-standard-32 yang tidak menentukan platform CPU, GPU, atau SSD lokal minimum. Selain itu, Anda tidak ingin menentukan template instance VM. Dalam hal ini, Anda harus mengganti VM_RESOURCES dengan nilai berikut:

      "policy": {
        "machineType": "n2-standard-32"
      }
      
    2. Untuk membuat dan menjalankan tugas, gunakan perintah gcloud batch jobs submit:

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

      Ganti kode berikut:

      • JOB_NAME: nama tugas.

      • LOCATION: lokasi tugas. Kecuali jika tugas menentukan kolom allowedLocations[], ini harus merupakan region yang berisi zona reservasi.

      • JSON_CONFIGURATION_FILE: jalur untuk file JSON dengan detail konfigurasi tugas.

    API

    Buat permintaan POST ke metode jobs.create yang menetapkan subkolom resource instance VM (instances[]) agar sama persis dengan properti VM reservasi.

    Misalnya, untuk membuat tugas skrip dasar yang menggunakan VM dari reservasi, buat permintaan berikut:

    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": {
        "instances": [
          {
            VM_RESOURCES
          }
        ],
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    

    Ganti kode berikut:

    • PROJECT_ID: project ID project Anda.

    • LOCATION: lokasi tugas. Kecuali jika tugas menentukan kolom allowedLocations[], ini harus merupakan region yang berisi zona reservasi.

    • JOB_NAME: nama tugas.

    • VM_RESOURCES: resource VM yang cocok dengan reservasi yang Anda inginkan untuk digunakan oleh tugas dengan menentukan subkolom instances[] yang Anda rencanakan pada langkah sebelumnya.

      Misalnya, mulai dari nilai berikut untuk VM_RESOURCES:

      "installGpuDrivers": INSTALL_GPU_DRIVERS,
      "policy": {
        "machineType": "MACHINE_TYPE",
        "minCpuPlatform": "MIN_CPU_PLATFORM",
        "accelerators": [
          {
            "type": "GPU_TYPE",
            "count": GPU_COUNT
          }
        ],
        "disks": [
          {
            "newDisk": {
              "sizeGb": LOCAL_SSD_SIZE,
              "type": "local-ssd"
            },
            "deviceName": "LOCAL_SSD_NAME"
          }
        ],
        "reservation": "SPECIFIC_RESERVATION_NAME"
      }

      Untuk menggunakan nilai ini, buat semua perubahan berikut:

      1. Apakah Anda ingin menggunakan template instance?

        • Ya: Ganti kolom policy dengan kolom instanceTemplate dan tentukan template instance VM yang ada dan cocok dengan reservasi. Misalnya, lihat contoh kode untuk menggunakan template instance VM. Jika reservasi menggunakan GPU atau SSD lokal, Anda juga perlu mengonfigurasi masing-masing kolom installGpuDrivers dan kolom volumes[] tugas. Jika tidak, lewati perubahan lainnya.

        • Tidak: Ganti MACHINE_TYPE dengan jenis mesin yang sama dengan reservasi.

      2. Apakah reservasi mencakup platform CPU minimum?

        • Yes: Ganti MIN_CPU_PLATFORM dengan platform CPU minimum yang sama.

        • Tidak: Hapus kolom minCpuPlatform.

      3. Apakah reservasi menyertakan GPU?

        • Ya: Ganti INSTALL_GPU_DRIVERS, GPU_TYPE, dan GPU_COUNT agar sesuai dengan reservasi. Misalnya, lihat contoh kode untuk menggunakan GPU.

        • Tidak: Hapus kolom installGpuDrivers dan kolom accelerators[].

      4. Apakah reservasi mencakup SSD lokal?

        • Ya: Ganti LOCAL_SSD_SIZE dan LOCAL_SSD_NAME agar sesuai dengan reservasi, dan pasang SSD lokal dengan menambahkan kolom volumes[] ke tugas. Misalnya, lihat contoh kode untuk menggunakan SSD lokal.

        • Tidak: Hapus kolom disks[].

      5. Apakah reservasi menggunakan jenis konsumsi yang ditargetkan secara khusus?

        • Ya: Ganti SPECIFIC_RESERVATION_NAME dengan nama reservasi.

        • Tidak: Hapus kolom reservation.

      Misalnya, Anda menggunakan reservasi yang digunakan secara otomatis untuk VM n2-standard-32 yang tidak menentukan platform CPU, GPU, atau SSD lokal minimum. Selain itu, Anda tidak ingin menentukan template instance VM. Dalam hal ini, Anda harus mengganti VM_RESOURCES dengan nilai berikut:

      "policy": {
        "machineType": "n2-standard-32"
      }

Langkah selanjutnya