Dokumen ini menjelaskan proses eksekusi dan opsi pembuatan tugas. Tugas batch memungkinkan Anda menjalankan workload batch processing di Google Cloud. Untuk mempelajari komponen tugas dan prasyarat untuk menggunakan Batch, lihat Memulai Batch.
Cara kerja pembuatan dan eksekusi tugas
Untuk menggunakan Batch, Anda membuat tugas yang menentukan beban kerja 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 mulai dari pembuatan hingga penghapusan.
- Antrean dan penjadwalan tugas: pahami faktor yang memengaruhi waktu yang diperlukan tugas untuk mulai berjalan.
- Eksekusi tugas: memahami cara tugas tugas berjalan di resource-nya selama eksekusi.
Siklus proses tugas
Bagian ini menjelaskan siklus proses tugas dan tugasnya dari pembuatan hingga penghapusan.
Untuk setiap workload yang ingin dijalankan di Batch, Anda harus melalui proses dasar berikut:
- Membuat tugas: Anda menentukan beban kerja yang ingin dijalankan dengan menentukan tugas, runnable, dan persyaratan lainnya dari tugas. 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 diantrekan, dijadwalkan, dan dijalankan di resource yang ditentukan. Anda dapat melihat detail tugas yang dibuat atau tugasnya untuk melihat status saat ini. Jika perlu, Anda dapat membatalkan tugas (Pratinjau) 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 akan otomatis menghapus tugas 60 hari setelah tugas selesai. Sebelum itu, Anda dapat menghapus tugas sendiri secara opsional, atau, jika perlu mempertahankan info, Anda dapat mengekspor informasi tugas dalam Batch sebelum tugas dihapus. Semua informasi tentang tugas yang disimpan di layanan Google Cloud lainnya 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 melalui status berikut:
- Diantrekan (
QUEUED
): permintaan tugas telah diterima dan menunggu di antrean. Tugas tetap berada dalam antrean hingga resource yang diperlukan tersedia dan tugas sebelumnya telah dinilai. - Terjadwal (
SCHEDULED
): tugas telah dipilih dari antrean untuk mulai berjalan dan resource sedang dialokasikan. Berjalan (
RUNNING
): resource untuk tugas telah berhasil dibuat dan tugasnya dapat mulai berjalan.Saat tugas berjalan, setiap tugasnya akan melalui status berikut:
- Tertunda (
PENDING
): tugas menunggu VM untuk dijalankan. - Ditetapkan (
ASSIGNED
): tugas telah ditetapkan ke VM untuk dijalankan. - Running (
RUNNING
): tugas berjalan di VM. Tugas selesai dalam salah satu status berikut:
Berhasil (
SUCCEEDED
): tugas berhasil karena setiap runnable-nya memenuhi salah satu kondisi berikut:- Berhasil yang dapat dijalankan (menampilkan kode keluar nol).
- Runnable gagal (menampilkan kode keluar bukan nol) tetapi merupakan runnable non-kritis (Anda mengaktifkan
kolom
ignoreExitStatus
runnable). - Runnable tidak selesai, tetapi merupakan runnable latar belakang (Anda
mengaktifkan
kolom
background
runnable).
Gagal (
FAILED
): tugas gagal dan berhenti berjalan karena setidaknya satu tugas yang dapat dijalankan tidak memenuhi kondisi sebelumnya.
Resource untuk tugas akan dihapus sebelum tugas selesai.
- Tertunda (
Tugas selesai dalam salah satu status berikut:
- Berhasil (
SUCCEEDED
): tugas berhasil karena semua tugasnya berhasil. - Gagal (
FAILED
): tugas gagal dan berhenti berjalan karena setidaknya salah satu tugasnya gagal. - Dibatalkan (
CANCELLED
): Pengguna membatalkan tugas (Pratinjau) sebelum berhasil atau gagal.
- Berhasil (
Untuk informasi selengkapnya, lihat status tugas dan status tugas dalam dokumentasi referensi.
Antrean dan penjadwalan tugas
Umumnya, tugas lebih cenderung berjalan dan selesai lebih cepat jika lebih kecil dan hanya memerlukan beberapa resource umum. Untuk contoh tugas dalam dokumentasi Batch, yang biasanya sangat kecil dan menggunakan resource minimal, Anda mungkin melihatnya selesai berjalan 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 berikut:
Prasyarat tugas yang ditentukan pengguna: prasyarat apa pun yang harus Anda 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 informasi selengkapnya, lihat Menjadwalkan tugas dependen (Pratinjau).
Prioritas tugas: prioritas untuk tugas relatif terhadap prioritas tugas lain dalam project Anda.
Secara opsional, Anda dapat menentukan prioritas tugas dengan menyertakan flag
--priority
untuk 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 akan menggunakan prioritas terendah,
0
, secara default. Jika dua tugas dalam antrean memiliki prioritas yang sama, tugas yang dibuat terlebih dahulu 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 cenderung 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 di region.
Untuk informasi selengkapnya tentang resource untuk tugas, lihat Eksekusi tugas dalam dokumen ini. Untuk 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 salah satu resource atau permintaan yang diperlukan. Jika hal ini terjadi, Batch mungkin menunda tugas dan mencobanya lagi nanti atau gagal menjalankan tugas dan menampilkan error terkait.
Anda dapat membantu mencegah penundaan dan error untuk tugas dengan membuat tugas yang mematuhi semua batas yang relevan dan memastikan project Anda memiliki cukup kuota yang relevan. 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 berjalan, tugasnya dijadwalkan sesuai dengan
kolom kebijakan penjadwalan (schedulingPolicy
),
yang memungkinkan Anda menentukan salah satu opsi berikut:
- Secepat mungkin (
AS_SOON_AS_POSSIBLE
) (default): tugas berjalan segera setelah resource tersedia dan dapat berjalan 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 regional (MIG), yang merupakan grup dari satu atau beberapa instance mesin virtual (VM) Compute Engine yang cocok, yang masing-masing terletak 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 disk booting—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 disk booting tambahan—yang diperlukan agar setiap tugas dapat berjalan. 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 dan volume penyimpanan—dengan menggunakan kolom kebijakan resource VM (
instances[].policy
) atau kolominstances[].instanceTemplate
alternatif. Jika Anda tidak menentukan kolom ini, Batch akan memilih VM yang kompatibel dan tidak menambahkan resource tambahan apa pun.
Jumlah VM dan jumlah tugas yang dapat berjalan secara bersamaan
di setiap VM bervariasi untuk tugas yang berbeda berdasarkan penjadwalan tugas dan
persyaratan hardware yang Anda tentukan. Jika Anda menentukan agar tugas tugas menjalankan
IN_ORDER
, tugas tersebut memiliki satu VM dan hanya menjalankan satu tugas dalam satu waktu. Jika tidak,
jika tugas tugas menjalankan AS_SOON_AS_POSSIBLE
, Anda dapat memperkirakan
jumlah VM dan jumlah tugas serentak menggunakan formula berikut:
\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]
Formula ini memiliki nilai berikut:
- \({vmsPerJob}\): jumlah maksimum VM untuk tugas. Jumlah VM sebenarnya yang dibuat untuk tugas mungkin lebih kecil dari ini—misalnya, jika Batch memperkirakan bahwa menjalankan tugas dengan lebih sedikit resource akan lebih cepat daripada menunggu lebih banyak resource. 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 berjalan di VM secara bersamaan.
Nilai ini ditentukan oleh semua kriteria berikut:
Nilai minimumnya adalah 1 tugas.
Nilai maksimum adalah nilai 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
taskCountPerNode
tidak ditentukan, Batch akan menentukan nilai dengan membagi jumlah total resource komputasi—khususnya vCPU—per VM menjadi 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 dasar-dasarnya, termasuk cara menentukan yang dapat dijalankan menggunakan skrip atau image container dan cara mengonfigurasi variabel lingkungan standar 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 VM tugas. Jika Anda tidak menentukan akun layanan kustom, tugas akan secara default menggunakan akun layanan default Compute Engine.
Ringkasan jaringan memberikan ringkasan tentang kapan dan bagaimana Anda dapat 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, dengan menggunakan secret Secret Manager untuk menentukan informasi terenkripsi saat Anda membuat tugas.
Konfigurasi opsi tambahan untuk tugas:
Mengonfigurasi komunikasi tugas menggunakan library MPI menjelaskan cara mengonfigurasi tugas dengan tugas yang saling bergantung yang saling berkomunikasi di berbagai VM menggunakan library Message Passing Interface (MPI). Kasus penggunaan umum untuk MPI adalah workload komputasi berperforma tinggi (HPC) yang dikaitkan erat.
Sesuaikan resource tempat tugas berjalan:
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 atau workload machine learning (ML).
Menggunakan volume penyimpanan untuk tugas menjelaskan cara menentukan tugas yang dapat mengakses satu atau beberapa volume penyimpanan eksternal. Opsi penyimpanan mencakup disk persisten baru atau yang sudah ada, SSD lokal baru, bucket Cloud Storage yang ada, dan sistem file jaringan (NFS) yang ada seperti berbagi file Filestore.
Ringkasan lingkungan OS VM memberikan ringkasan tentang kapan dan bagaimana Anda dapat 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. Dengan menulis log tugas, Anda dapat menampilkan informasi kustom di Cloud Logging, yang dapat membantu mempermudah tugas untuk dianalisis dan dipecahkan masalahnya.
Mengonfigurasi peristiwa status kustom menjelaskan cara mengonfigurasi peristiwa status kustom untuk tugas yang dapat dijalankan. 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 Operasi menjelaskan cara mengonfigurasi tugas untuk menginstal Agen Operasi secara otomatis. Agen Operasi mengumpulkan metrik tambahan tentang performa dan penggunaan resource tugas. Untuk 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 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 intensif komputasi (seperti pemrosesan data).
Mengotomatiskan percobaan ulang tugas menjelaskan cara mencoba ulang tugas tugas secara otomatis setelah semua atau kegagalan yang ditentukan. Percobaan ulang otomatis dapat membantu mengurangi hambatan pemecahan masalah dan waktu proses secara keseluruhan yang diperlukan untuk tugas yang mengalami error sementara. Misalnya, gunakan percobaan ulang otomatis untuk tugas yang berjalan di VM Spot, yang memberikan diskon yang signifikan, tetapi mungkin tidak selalu tersedia dan dapat dihentikan kapan saja.
Membatasi waktu proses menggunakan waktu tunggu menjelaskan cara membatasi jumlah waktu yang diizinkan untuk menjalankan tugas atau yang dapat dijalankan. Dengan mencegah waktu berjalan yang berlebihan, Anda dapat mengurangi biaya dan keterlambatan yang tidak terduga.
Memastikan ketersediaan resource menggunakan reservasi VM menjelaskan cara mengonfigurasi tugas yang dapat berjalan di VM yang direservasi. Menggunakan VM yang dicadangkan dapat membantu Anda meminimalkan waktu penjadwalan tugas, mencegah error ketersediaan resource, dan mengoptimalkan biaya.
Mengurangi latensi:
Menempatkan VM secara berdekatan untuk mengurangi latensi menjelaskan cara mengurangi latensi jaringan di antara VM tugas dengan mewajibkan VM ditempatkan secara fisik berdekatan satu sama lain. Manfaat performa ini dapat sangat berguna untuk tugas yang memiliki komunikasi jaringan yang sering di seluruh VM, seperti tugas yang berkomunikasi menggunakan library MPI.
Menggunakan Streaming gambar menjelaskan cara meningkatkan waktu startup tugas dengan melakukan streaming 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 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 mengatur alur kerja bioinformatika.
Melakukan orkestrasi tugas menggunakan dsub menjelaskan cara menjalankan tugas Batch melalui pipeline
dsub
, yang dapat Anda gunakan untuk mengatur alur kerja pemrosesan batch di 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 di sistem kontrol versi seperti GitHub.
Langkah selanjutnya
Pelajari dasar-dasar pembuatan lowongan: