Dokumen ini menjelaskan proses eksekusi dan opsi pembuatan untuk tugas. Tugas batch memungkinkan Anda menjalankan workload batch processing diGoogle Cloud. Untuk mempelajari komponen tugas dan prasyarat untuk menggunakan Batch, lihat Mulai menggunakan Batch.
Cara kerja pembuatan dan eksekusi tugas
Untuk menggunakan Batch, buat tugas yang menentukan workload dan persyaratannya, lalu Batch akan otomatis menjalankannya.
Detail cara kerja pembuatan dan eksekusi tugas dijelaskan di bagian berikut:
- Siklus proses tugas: memahami status yang dilalui tugas dari pembuatan hingga penghapusan.
- Pengantrean dan penjadwalan tugas: pahami faktor-faktor yang memengaruhi durasi waktu yang diperlukan agar tugas mulai berjalan.
- Eksekusi tugas: memahami cara tugas dijalankan pada resource-nya selama eksekusi.
Siklus proses tugas
Bagian ini menjelaskan siklus proses tugas dan tugasnya mulai dari pembuatan hingga penghapusan.
Untuk setiap workload yang ingin Anda jalankan di Batch, Anda akan melalui proses dasar berikut:
- Membuat tugas: Anda menentukan workload yang ingin dijalankan dengan menentukan runnable, tugas, dan persyaratan lainnya. Detail untuk membuat tugas diperkenalkan di bagian Opsi pembuatan tugas dalam dokumen ini.
- Memantau dan memecahkan masalah tugas: Setelah Anda selesai membuat tugas, tugas tersebut akan otomatis dimasukkan ke dalam antrean, dijadwalkan, dan dijalankan pada resource yang ditentukan. Anda dapat melihat detail tugas yang dibuat atau tugasnya untuk melihat status saat ini. Jika perlu, Anda dapat membatalkan tugas untuk menghentikannya atau mencegahnya berjalan. Setelah tugas berjalan atau selesai, Anda juga dapat memantau dan menganalisis tugas menggunakan log. Jika tugas gagal, Anda dapat memecahkan masalahnya menggunakan pesan error, peristiwa status, atau log untuk mendiagnosis masalah sebelum membuat ulang tugas.
- Menghapus atau mengekspor tugas: Informasi tugas di Batch tetap tersedia hingga Anda atau Google Cloud menghapusnya. Google Cloud otomatis menghapus tugas 60 hari setelah selesai. Sebelum itu, Anda dapat menghapus tugas sendiri, atau, jika perlu mempertahankan info, Anda dapat mengekspor informasi tugas di Batch sebelum tugas dihapus. Informasi apa pun tentang tugas yang disimpan di layanan Google Cloud lain tidak akan terpengaruh saat tugas dihapus dan memiliki kebijakan retensi terpisah. Misalnya, log tugas otomatis dipertahankan dan dihapus sesuai dengan kebijakan retensi Cloud Logging.
Setelah Anda membuat tugas, tugas tersebut akan berlanjut melalui status berikut:
- Queued (
QUEUED): permintaan tugas telah diterima dan sedang menunggu dalam antrean. Tugas tetap berada dalam antrean project Anda hingga dapat dijadwalkan, yang terjadi saat resource yang diperlukan tersedia dan tugas di depannya telah dinilai. Namun, untuk mencegah tugas Anda menjadi usang, jika tugas melebihi waktu tunggu maksimum dalam antrean, Batch akan otomatis menggagalkan tugas, bukan menjadwalkannya. - Scheduled (
SCHEDULED): tugas telah dipilih dari antrean untuk mulai berjalan dan resource sedang dialokasikan. Running (
RUNNING): resource untuk tugas telah berhasil dibuat dan tugasnya dapat mulai berjalan.Saat tugas berjalan, setiap tugasnya akan berlanjut melalui status berikut:
- Pending (
PENDING): tugas sedang menunggu VM untuk dijalankan. - Assigned (
ASSIGNED): tugas telah diberi VM untuk dijalankan. - Running (
RUNNING): tugas sedang berjalan di VM. Tugas selesai dalam salah satu status berikut:
Berhasil (
SUCCEEDED): tugas berhasil karena setiap runnable-nya memenuhi salah satu kondisi berikut:- Runnable berhasil (menampilkan kode keluar nol).
- Runnable gagal (menampilkan kode keluar bukan nol), tetapi merupakan runnable nonkritis (Anda mengaktifkan kolom
ignoreExitStatusrunnable). - Runnable tidak selesai, tetapi merupakan runnable latar belakang (Anda
mengaktifkan kolom
backgroundrunnable).
Gagal (
FAILED): tugas gagal dan berhenti berjalan karena setidaknya satu runnable tidak memenuhi kondisi sebelumnya.
Resource untuk tugas dihapus sebelum tugas selesai.
- Pending (
Tugas selesai dalam salah satu status berikut:
- Berhasil (
SUCCEEDED): tugas berhasil karena semua tugasnya berhasil. - Gagal (
FAILED): tugas gagal dan berhenti berjalan karena setidaknya satu tugasnya gagal. - Dibatalkan (
CANCELLED): Pengguna membatalkan tugas sebelum berhasil atau gagal.
- Berhasil (
Untuk mengetahui informasi selengkapnya, lihat status tugas dan status tugas dalam dokumentasi referensi.
Pengantrean dan penjadwalan tugas
Umumnya, tugas lebih mungkin berjalan dan selesai lebih cepat jika berukuran lebih kecil dan hanya memerlukan beberapa resource umum. Untuk contoh tugas dalam dokumentasi Batch, yang biasanya sangat kecil dan menggunakan resource minimal, Anda mungkin akan melihat tugas tersebut selesai berjalan hanya dalam waktu beberapa menit.
Secara khusus, waktu yang diperlukan tugas untuk menyelesaikan antrean dan penjadwalan bervariasi untuk tugas yang berbeda dan pada waktu yang berbeda berdasarkan faktor-faktor berikut:
Prasyarat tugas yang ditentukan pengguna: prasyarat apa pun yang Anda harus penuhi sebelum tugas dijadwalkan.
Secara default, tugas tidak memiliki prasyarat apa pun. Secara opsional, Anda dapat menentukan bahwa tugas tidak dapat dijadwalkan hingga satu atau beberapa tugas yang ada berhasil atau gagal. Untuk mengetahui informasi selengkapnya, lihat Menjadwalkan tugas dependen (Pratinjau).
Prioritas tugas: prioritas untuk tugas yang relatif terhadap prioritas tugas lain dalam project Anda.
Anda dapat menentukan prioritas tugas secara opsional dengan menyertakan flag
--priorityuntuk gcloud CLI atau kolom JSONpriority. Anda dapat menentukan prioritas tugas sebagai angka antara0(prioritas terendah) dan99(prioritas tertinggi). Menetapkan prioritas yang lebih tinggi dapat membantu tugas berjalan lebih cepat daripada tugas dengan prioritas lebih rendah dalam project Anda.Jika Anda tidak mengonfigurasi prioritas tugas, tugas tersebut akan ditetapkan secara default ke prioritas terendah,
0. Jika dua tugas dalam antrean memiliki prioritas yang sama, tugas yang dibuat terlebih dahulu akan memiliki prioritas yang lebih tinggi.Ketersediaan resource tugas: ketersediaan resource yang diperlukan tugas dalam lokasi yang diizinkan.
Pertama, tugas tidak dapat berjalan jika Anda menentukan resource yang tidak ditawarkan di lokasi tersebut—jika hal ini terjadi, tugas akan gagal dengan error ketersediaan zona.
Kedua, tugas lebih mungkin tertunda atau gagal jika salah satu resource yang diperlukan memiliki kapasitas rendah dibandingkan dengan permintaan saat ini karena error ketersediaan resource. Akibatnya, tugas Anda mungkin berjalan lebih cepat jika Anda memerlukan lebih sedikit resource yang lebih umum dan tidak membatasi tugas agar tidak berjalan di zona mana pun dalam suatu region.
Untuk mengetahui informasi selengkapnya tentang resource untuk tugas, lihat Eksekusi tugas dalam dokumen ini. Untuk mengetahui informasi selengkapnya tentang lokasi yang dapat Anda tentukan untuk tugas Batch dan resource-nya, lihat halaman Lokasi.
Kuota dan batas: nilai minimum yang dimiliki project Anda untuk resource dan permintaan Google Cloud .
Tugas tidak dapat berjalan jika melebihi batas atau kuota project Anda untuk resource atau permintaan yang diperlukan. Jika hal ini terjadi, Batch mungkin akan menunda tugas dan mencoba lagi di lain waktu atau menggagalkan tugas dan menampilkan error terkait.
Anda dapat membantu mencegah penundaan dan error untuk tugas Anda dengan membuat tugas yang mematuhi semua batas yang relevan dan memastikan project Anda memiliki kuota yang relevan dan cukup. Untuk mengetahui informasi selengkapnya, lihat Kuota dan batas Batch.
Pelaksanaan tugas
Waktu yang diperlukan untuk menjalankan tugas dapat bervariasi berdasarkan penjadwalan tugas dan resource tugas.
Penjadwalan tugas
Saat tugas dijalankan, tugasnya dijadwalkan sesuai dengan
kolom kebijakan penjadwalan (schedulingPolicy),
yang memungkinkan Anda menentukan salah satu opsi berikut:
- As soon as possible (
AS_SOON_AS_POSSIBLE) (default): tugas dijalankan segera setelah resource tersedia dan dapat dijalankan secara paralel. Jumlah tugas yang berjalan dalam satu waktu bergantung pada tugas paralel per VM yang diizinkan oleh resource tugas dan opsi konfigurasi lainnya seperti yang dijelaskan dalam Resource tugas dalam dokumen ini. - Berurutan (
IN_ORDER): tugas dijalankan satu per satu dalam urutan indeks yang meningkat.
Referensi pekerjaan
Setiap tugas Batch berjalan di grup instance terkelola (MIG) regional, yang merupakan grup yang terdiri dari satu atau beberapa instance virtual machine (VM) Compute Engine yang cocok, yang masing-masing berada di salah satu zona yang disertakan. Setiap VM memiliki hardware khusus untuk core CPU (khususnya CPU virtual (vCPU)) dan memori—yang memengaruhi performa tugas Anda—dan boot disk—yang menyimpan image sistem operasi (OS) dan petunjuk untuk menjalankan tugas Anda.
Selama waktu proses tugas, Batch akan otomatis membuat dan menghapus resource yang memenuhi spesifikasi Anda. Saat membuat tugas, Anda mengonfigurasi resource-nya dengan menentukan hal berikut:
Resource komputasi per tugas: kecuali jika nilai default sudah memadai, Anda harus menentukan resource komputasi—vCPU, memori, dan (jika diperlukan) penyimpanan boot disk tambahan—yang diperlukan untuk menjalankan setiap tugas. Untuk mengetahui informasi selengkapnya, lihat kolom resource komputasi per tugas (
computeResource).Resource VM: secara opsional, Anda juga dapat menentukan VM tugas, seperti jenis mesin dan OS, serta resource tambahan seperti GPU, TPU, dan volume penyimpanan, terutama dengan menggunakan kolom kebijakan resource VM (
instances[].policy) atau kolominstances[].instanceTemplatealternatif. (Secara opsional, Anda juga dapat menggunakan kolominstanceFlexibilityPolicyjika ingin mengizinkan beberapa jenis mesin untuk suatu tugas.)Jika Anda membiarkan kolom ini tidak ditentukan (yang tidak mungkin dilakukan saat membuat tugas menggunakan konsolGoogle Cloud ), Batch akan otomatis mencoba memilih VM yang kompatibel dan tidak menambahkan resource tambahan.
Jumlah VM dan jumlah tugas yang dapat berjalan secara bersamaan di setiap VM bervariasi untuk berbagai tugas berdasarkan penjadwalan tugas dan persyaratan hardware yang Anda tentukan. Jika Anda menentukan agar tugas-tugas dalam sebuah job dijalankan secara
IN_ORDER, job tersebut akan memiliki satu VM dan hanya menjalankan satu tugas dalam satu waktu. Jika tidak,
jika tugas-tugas dalam suatu tugas dijalankan AS_SOON_AS_POSSIBLE, Anda dapat memperkirakan
jumlah VM dan jumlah tugas simultan menggunakan formula berikut:
\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]
Formula ini memiliki nilai berikut:
- \({vmsPerJob}\): jumlah maksimum VM untuk tugas. Jumlah VM sebenarnya yang dibuat untuk suatu tugas mungkin lebih kecil dari ini—misalnya, jika Batch memperkirakan bahwa menjalankan tugas dengan resource yang lebih sedikit akan lebih cepat daripada menunggu resource yang lebih banyak. Nilai ini juga dibatasi oleh batas VM serentak per tugas.
- \({taskCount}\): jumlah total tugas untuk tugas, yang Anda tentukan menggunakan kolom jumlah tugas (
taskCount). \({parallelTasksPerVM}\): jumlah maksimum tugas yang dapat dijalankan di VM secara bersamaan.
Nilai ini ditentukan oleh semua kriteria berikut:
Nilai minimumnya adalah 1 tugas.
Nilai maksimumnya adalah yang lebih kecil dari 20 tugas dan, jika ditentukan, nilai kolom tugas paralel maksimum per tugas (
parallelism).Jika kolom tugas paralel maksimum per VM (
taskCountPerNode) ditentukan, nilai tersebut akan digunakan.Jika tidak, jika
taskCountPerNodetidak ditentukan, Batch akan menentukan nilai dengan membagi jumlah total resource komputasi—khususnya vCPU—per VM dengan jumlah yang diperlukan untuk setiap tugas:\[{parallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]
Formula ini memiliki nilai berikut:
\({vcpusPerVm}\): jumlah total vCPU per VM, yang ditentukan oleh jenis mesin VM tugas Anda.
\({vcpusPerTask}\): jumlah vCPU per tugas, yang ditentukan dengan mengonversi unit kolom vCPU per tugas (
cpuMilli).
Opsi pembuatan tugas
Membuat dan menjalankan tugas dasar menjelaskan hal-hal mendasar, termasuk cara menentukan runnable menggunakan skrip atau image container dan cara mengonfigurasi variabel lingkungan yang telah ditetapkan dan kustom.
Setelah Anda memahami dasar-dasar pembuatan tugas, pertimbangkan untuk membuat tugas yang menggunakan satu atau beberapa opsi konfigurasi tambahan berikut:
Mengontrol akses untuk tugas:
Mengontrol akses untuk tugas menggunakan akun layanan kustom menjelaskan cara menentukan akun layanan tugas, yang memengaruhi resource dan aplikasi yang dapat diakses oleh VM tugas. Jika Anda tidak menentukan akun layanan kustom, tugas akan ditetapkan secara default untuk menggunakan akun layanan default Compute Engine.
Ringkasan jaringan memberikan ringkasan tentang kapan dan cara menyesuaikan konfigurasi jaringan untuk tugas, termasuk menentukan jaringan tugas, memblokir koneksi eksternal, dan melindungi data dan resource menggunakan Kontrol Layanan VPC.
Melindungi data sensitif menggunakan Secret Manager menjelaskan cara menentukan data sensitif dengan aman, seperti variabel lingkungan kustom dan kredensial login, menggunakan secret Secret Manager untuk menentukan informasi terenkripsi saat Anda membuat tugas.
Konfigurasikan opsi tambahan untuk tugas:
Mengonfigurasi komunikasi tugas menggunakan library MPI menjelaskan cara mengonfigurasi tugas dengan tugas yang saling bergantung yang berkomunikasi satu sama lain di berbagai VM menggunakan library Message Passing Interface (MPI). Kasus penggunaan umum untuk MPI adalah workload komputasi berperforma tinggi (HPC) yang dikaitkan secara erat.
Sesuaikan resource yang menjalankan tugas:
Menentukan resource tugas menggunakan template instance VM menjelaskan cara menentukan template VM Compute Engine untuk menentukan resource tugas saat Anda membuat tugas. Ini adalah alternatif untuk menentukan resource tugas secara langsung menggunakan kolom
instances[].policy.Menggunakan GPU untuk tugas menjelaskan cara menentukan tugas yang menggunakan satu atau beberapa unit pemrosesan grafis (GPU). Kasus penggunaan umum untuk tugas yang menggunakan GPU mencakup pemrosesan data intensif, kecerdasan buatan (AI), atau workload machine learning (ML).
Menggunakan TPU untuk tugas menjelaskan cara menentukan tugas yang menggunakan satu atau beberapa Tensor Processing Unit (TPU). Kasus penggunaan umum untuk tugas yang menggunakan TPU mencakup workload inferensi, evaluasi, penyesuaian, dan pelatihan kecerdasan buatan (AI) dan machine learning (ML).
Menggunakan volume penyimpanan untuk tugas menjelaskan cara menentukan tugas yang dapat mengakses satu atau beberapa volume penyimpanan eksternal. Opsi penyimpanan mencakup persistent disk baru atau yang sudah ada, SSD lokal baru, bucket Cloud Storage yang sudah ada, dan sistem file jaringan (NFS) yang sudah ada seperti file share Filestore.
Ringkasan lingkungan OS VM memberikan ringkasan tentang kapan dan cara menyesuaikan lingkungan sistem operasi (OS) VM untuk tugas, termasuk image OS VM dan boot disk tugas.
Optimalkan berbagai aspek pekerjaan:
Meningkatkan pemantauan dan analisis:
Menulis log tugas menjelaskan cara mengonfigurasi runnable tugas untuk menulis log tugas. Menulis log tugas memungkinkan Anda menampilkan informasi kustom di Cloud Logging, yang dapat mempermudah analisis dan pemecahan masalah tugas.
Mengonfigurasi peristiwa status kustom menjelaskan cara mengonfigurasi peristiwa status kustom untuk runnable tugas. Peristiwa status kustom memungkinkan Anda mendeskripsikan peristiwa penting yang terjadi untuk runnable dan muncul saat Anda melihat histori peristiwa status tugas, yang dapat membantu mempermudah analisis dan pemecahan masalah tugas.
Mengaktifkan notifikasi status menjelaskan cara mengonfigurasi tugas untuk mengirim notifikasi Pub/Sub tentang statusnya, yang dapat Anda simpan dan kueri secara opsional di tabel BigQuery. Sebelum membaca dokumen ini, konfigurasikan project Anda untuk memantau status tugas menggunakan notifikasi Pub/Sub dan BigQuery terlebih dahulu.
Mengaktifkan metrik Agen Operasional menjelaskan cara mengonfigurasi tugas untuk menginstal Agen Operasional secara otomatis. Agen Operasional mengumpulkan metrik tambahan tentang performa dan pemanfaatan resource tugas. Untuk mengetahui informasi selengkapnya tentang cara melihat dan menggunakan metrik resource, lihat Memantau dan mengoptimalkan resource tugas dengan melihat metrik.
Menjadwalkan tugas dependen (Pratinjau) menjelaskan cara menentukan tugas yang tidak berjalan hingga satu atau beberapa tugas dependensi yang ada berhasil atau gagal. Jika Anda memiliki workload dengan persyaratan resource yang bervariasi, Anda dapat mengurangi biaya dan penggunaan kuota dengan memisahkan jenis VM yang digunakan untuk operasi dengan permintaan rendah (seperti persiapan data) dan operasi yang memerlukan komputasi intensif (seperti pemrosesan data).
Mengotomatiskan percobaan ulang tugas menjelaskan cara otomatis mencoba ulang tugas setelah semua atau kegagalan tertentu. Percobaan ulang otomatis dapat membantu mengurangi gesekan pemecahan masalah dan keseluruhan waktu proses yang diperlukan untuk tugas yang mengalami error sementara. Misalnya, gunakan percobaan ulang otomatis untuk tugas yang berjalan di Spot VM, yang memberikan diskon signifikan, tetapi mungkin tidak selalu tersedia dan dapat di-preempt kapan saja.
Membatasi waktu proses menggunakan waktu tunggu menjelaskan cara membatasi jumlah waktu yang diizinkan untuk menjalankan tugas atau runnable. Dengan mencegah waktu proses yang berlebihan, Anda dapat mengurangi biaya dan penundaan yang tidak terduga.
Meningkatkan ketersediaan resource:
Meningkatkan ketersediaan resource menjelaskan apa itu ketersediaan resource dan memberikan rekomendasi tentang cara meningkatkan ketersediaan saat Anda membuat dan menjalankan tugas.
Memastikan ketersediaan resource menggunakan pemesanan VM menjelaskan cara mengonfigurasi tugas yang dapat berjalan di VM yang dipesan. Menggunakan VM yang dipesan dapat membantu Anda meminimalkan waktu penjadwalan tugas, mencegah error ketersediaan resource, dan mengoptimalkan biaya.
Meningkatkan ketersediaan dengan menggunakan fleksibilitas instance menjelaskan cara mengizinkan tugas berjalan di beberapa jenis mesin yang Anda tentukan dan dapat diberi peringkat. Menggunakan fleksibilitas instance dapat membantu meningkatkan paralelisme, menunda preemption Spot VM, dan mencegah error ketersediaan resource.
Mengurangi latensi:
Menempatkan VM di lokasi yang sama untuk mengurangi latensi menjelaskan cara mengurangi latensi jaringan antara VM tugas dengan mengharuskan VM ditempatkan secara fisik berdekatan satu sama lain. Manfaat performa ini dapat sangat berguna untuk tugas yang sering melakukan komunikasi jaringan di seluruh VM, seperti tugas yang berkomunikasi menggunakan library MPI.
Menggunakan Streaming image menjelaskan cara meningkatkan waktu mulai tugas dengan menstreaming image container dari Artifact Registry.
Gunakan layanan tambahan untuk membuat dan menjalankan tugas:
Melakukan orkestrasi tugas menggunakan Workflows menjelaskan cara menggunakan Workflows untuk menjalankan tugas-tugas suatu tugas dalam urutan yang Anda tentukan menggunakan sintaksis Workflows.
Melakukan orkestrasi tugas menggunakan Nextflow menjelaskan cara menjalankan tugas Batch melalui pipeline Nextflow, yang dapat Anda gunakan untuk melakukan orkestrasi alur kerja bioinformatika.
Mengorkestrasi tugas menggunakan dsub menjelaskan cara menjalankan tugas Batch melalui pipeline
dsub, yang dapat Anda gunakan untuk mengorkestrasi alur kerja batch processing pada layanan Google Cloud .Membuat dan menjalankan tugas Batch menggunakan Terraform dan Cloud Scheduler menjelaskan cara menggabungkan tugas Batch ke dalam Terraform. Terraform memungkinkan Anda menyediakan dan mengelola infrastruktur dengan menentukan status yang diinginkan dalam file konfigurasi, yang dapat diperlakukan sebagai kode dan disimpan dalam sistem kontrol versi seperti GitHub.
Langkah berikutnya
Pelajari dasar-dasar pembuatan tugas: