Masalah umum

Halaman ini menjelaskan masalah umum yang mungkin Anda alami saat menggunakan Batch.

Jika Anda memerlukan bantuan lebih lanjut dalam menggunakan Batch, lihat dokumentasi Pemecahan masalah atau Mendapatkan dukungan.

Pub/Sub mungkin tidak mengirimkan notifikasi untuk status perantara selama perubahan cepat

Pub/Sub mungkin tidak mengirim notifikasi untuk semua status perantara saat tugas atau pekerjaan berubah dengan sangat cepat. Misalnya, anggaplah tugas berubah status dengan cepat dari ASSIGNED, lalu RUNNING, dan kemudian FAILED. Dalam skenario tersebut, Anda mungkin tidak mendapatkan notifikasi bahwa tugas telah mencapai status RUNNING.

Untuk mengatasi masalah ini, sebaiknya, saat Anda ingin melihat histori status lengkap tugas atau pekerjaan, lihat peristiwa status, bukan notifikasi Pub/Sub.

Untuk mengetahui informasi selengkapnya tentang notifikasi Pub/Sub, lihat Memantau status tugas menggunakan notifikasi Pub/Sub dan BigQuery.

Log waktu tunggu tidak menunjukkan apakah waktu tunggu tugas atau runnable telah terlampaui

Jika tugas gagal karena melebihi waktu tunggu, log yang terkait dengan tugas tidak menunjukkan apakah kegagalan disebabkan oleh waktu tunggu tugas yang relevan atau waktu tunggu runnable yang relevan.

Untuk mengatasi masalah ini, tetapkan nilai waktu tunggu yang berbeda untuk tugas dan runnable. Kemudian, Anda dapat mengidentifikasi apakah kegagalan disebabkan oleh melebihi waktu tunggu tugas atau runnable yang relevan menggunakan prosedur berikut:

  1. Mengidentifikasi tugas, runnable, dan waktu kegagalan karena waktu tunggu terlampaui.

    1. Lihat log untuk tugas.

    2. Temukan log yang menyebutkan kode keluar exceeded-timeout, 50005. Log ini memiliki textPayload yang mirip dengan pesan berikut:

      Task task/JOB_UID-group0-TASK_INDEX/0/0 runnable RUNNABLE_INDEX...exitCode 50005
      

      Dari log tersebut, catat TASK_INDEX sebagai tugas yang gagal, RUNNABLE_INDEX sebagai runnable yang gagal, dan nilai timestamp log sebagai waktu kegagalan karena waktu tunggu terlampaui.

  2. Identifikasi waktu mulai tugas yang gagal.

    1. Melihat peristiwa status tugas yang gagal.

    2. Temukan peristiwa status yang menyebutkan pesan berikut:

      Task state is updated from ASSIGNED to RUNNING
      

      Dari peristiwa status tersebut, catat kolom eventTime sebagai waktu mulai tugas yang gagal.

  3. Hitung total waktu proses tugas yang gagal, \({failedTaskRunTime}\), menggunakan formula berikut:

    \[{failedTaskRunTime}={failureTime}-{failedTaskStartTime}\]

    Ganti nilai berikut:

    • \({failureTime}\): waktu kegagalan karena waktu tunggu habis.
    • \({failedTaskStartTime}\): waktu mulai tugas yang gagal.
  4. Identifikasi waktu tunggu yang terlampaui:

    • Jika \({failedTaskRunTime}\) cocok dengan waktu tunggu yang Anda konfigurasi untuk tugas yang gagal, maka waktu tunggu tugas yang gagal tersebut telah terlampaui dan menyebabkan kegagalan.

    • Jika tidak, waktu tunggu yang Anda konfigurasi untuk runnable yang gagal telah terlampaui dan menyebabkan kegagalan.

Tugas yang menggunakan reservasi mungkin tertunda atau dicegah

Saat Anda mencoba membuat dan menjalankan tugas yang menggunakan reservasi Compute Engine, Batch mungkin menunda atau mencegah tugas berjalan dengan tidak benar. Secara khusus, Batch mewajibkan project untuk memiliki kuota resource Compute Engine yang memadai bahkan saat kuota resource tersebut digunakan oleh pemesanan yang tidak digunakan.

Mengatasi masalah

Untuk mengatasi masalah ini pada tugas, tambahkan label dengan nama goog-batch-skip-quota-check dan nilai true ke kolom labels tingkat tugas. Label ini menyebabkan Batch melewati verifikasi kuota resource project Anda sebelum mencoba membuat tugas.

Misalnya, untuk mencegah atau menyelesaikan masalah ini pada tugas skrip dasar yang dapat menggunakan reservasi, buat dan jalankan tugas dengan konfigurasi JSON berikut:

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello world from task ${BATCH_TASK_INDEX}"
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "allocationPolicy": {
    "instances": [
      {
        VM_RESOURCES
      }
    ],
  },
  "labels": {
    "goog-batch-skip-quota-check": "true"
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

Ganti VM_RESOURCES dengan resource VM yang cocok dengan pemesanan yang Anda inginkan untuk digunakan oleh tugas.

Untuk mengetahui petunjuk selengkapnya, lihat Membuat dan menjalankan tugas yang dapat menggunakan VM yang dicadangkan dan Menentukan label kustom untuk tugas.

Mengidentifikasi masalah

Masalah ini tidak ditunjukkan oleh pesan error tertentu. Namun, masalah ini dapat terjadi dalam situasi berikut:

  • Jika project Anda mencadangkan semua resource yang memiliki kuota, masalah ini akan mencegah tugas apa pun yang menentukan resource tersebut.

    Misalnya, anggaplah project Anda memiliki hal berikut:

    • Kuota maksimum untuk GPU H100 adalah 16.
    • Pemesanan project tunggal yang tidak digunakan untuk 2 VM a3-highgpu-8g, yang memesan total 16 GPU H100.

    Dalam skenario ini, masalah ini mencegah project Anda menjadwalkan dan menjalankan tugas apa pun yang dikonfigurasi dengan benar untuk menggunakan GPU H100 yang dicadangkan.

  • Jika project Anda memesan beberapa resource yang memiliki kuota, masalah ini dapat mencegah atau menunda tugas yang menentukan resource tersebut.

    Misalnya, anggaplah project Anda memiliki hal berikut:

    • Kuota maksimum untuk GPU H100 adalah 16.
    • Pemesanan project tunggal yang tidak digunakan untuk 1 VM a3-highgpu-8g, yang mencadangkan total 8 GPU H100.
    • VM a3-highgpu-8g yang dikonfigurasi agar tidak memakai pemesanan apa pun dan terkadang dihapus lalu dibuat ulang. (VM ini menggunakan 8 GPU H100 yang tidak dicadangkan saat ada.)

    Dalam skenario ini, masalah ini hanya memungkinkan project Anda menjadwalkan dan mulai menjalankan tugas apa pun yang dikonfigurasi dengan benar untuk menggunakan GPU H100 yang dicadangkan saat VM a3-highgpu-8g tidak ada.

Job dapat gagal saat menentukan image OS VM Compute Engine (atau kustom) dengan kernel yang sudah tidak berlaku

Tugas dapat gagal jika menentukan image OS VM Compute Engine yang tidak memiliki versi kernel terbaru. Masalah ini juga memengaruhi image kustom apa pun yang didasarkan pada image OS VM Compute Engine. Image publik Compute Engine yang menyebabkan masalah ini tidak dapat diidentifikasi dengan mudah dan dapat berubah kapan saja.

Masalah ini tidak ditunjukkan oleh pesan error tertentu. Sebagai gantinya, pertimbangkan masalah ini jika Anda memiliki tugas yang gagal secara tidak terduga dan menentukan image OS VM Compute Engine atau image kustom serupa.

Untuk mencegah atau mengatasi masalah ini, Anda dapat melakukan hal berikut:

  1. Jika memungkinkan, gunakan gambar Batch atau gambar kustom berdasarkan gambar Batch, yang tidak terpengaruh oleh masalah ini.
  2. Jika Anda tidak dapat menggunakan image Batch, coba versi terbaru image Compute Engine pilihan Anda. Umumnya, versi image Compute Engine yang lebih baru cenderung memiliki versi kernel terbaru daripada versi yang lebih lama.
  3. Jika versi terbaru dari image tertentu tidak berfungsi, Anda mungkin perlu mencoba OS lain atau membuat image kustom. Misalnya, jika Debian 11 versi terbaru tidak berfungsi, Anda dapat mencoba membuat image kustom dari VM Compute Engine yang menjalankan Debian 11 dan yang telah Anda update untuk menggunakan versi kernel terbaru.

Masalah ini disebabkan oleh versi kernel yang sudah tidak berlaku di image OS VM yang menyebabkan VM melakukan booting ulang. Jika tugas menentukan image OS VM apa pun yang bukan dari Batch atau berdasarkan image Batch, Batch akan menginstal paket yang diperlukan di VM tugas setelah VM tersebut dimulai. Paket yang diperlukan dapat bervariasi untuk berbagai tugas dan berubah seiring waktu, dan mungkin memerlukan image OS VM Anda untuk memiliki versi kernel terbaru. Masalah ini muncul saat mengupdate versi kernel memerlukan VM untuk di-reboot, yang menyebabkan penginstalan paket dan tugas gagal.

Untuk mengetahui informasi selengkapnya tentang image OS VM, lihat Ringkasan lingkungan OS untuk VM tugas.

Job yang menggunakan GPU dan image OS VM dengan kernel yang sudah usang mungkin gagal hanya saat menginstal driver secara otomatis

Masalah ini terkait erat dengan Pekerjaan mungkin gagal saat menentukan image OS VM Compute Engine (atau kustom) dengan kernel yang sudah tidak berlaku. Secara khusus, tugas yang menentukan image OS VM Compute Engine (atau kustom) tanpa kernel terbaru dan menggunakan GPU mungkin gagal hanya jika Anda mencoba menginstal driver GPU secara otomatis. Untuk tugas ini, Anda juga dapat mengatasi kegagalan hanya dengan menginstal driver GPU secara manual.

Untuk mengetahui informasi selengkapnya tentang GPU, lihat Membuat dan menjalankan tugas yang menggunakan GPU.