Dokumen ini menjelaskan proses eksekusi dan opsi pembuatan untuk tugas. Tugas batch memungkinkan Anda menjalankan workload batch processing di Google Cloud. Untuk mempelajari komponen tugas dan prasyarat penggunaan Batch, lihat Mulai menggunakan Batch.
Cara kerja pembuatan dan eksekusi tugas
Untuk menggunakan Batch, Anda membuat tugas yang menentukan beban kerja dan persyaratannya, lalu Batch menjalankannya secara otomatis.
Detail cara kerja pembuatan dan eksekusi tugas dijelaskan di bagian berikut:
- Siklus proses tugas: memahami status yang dilalui tugas dari pembuatan hingga penghapusan.
- Penjadwalan dan antrean tugas: pahami faktor-faktor yang memengaruhi durasi yang dibutuhkan tugas untuk mulai berjalan.
- Eksekusi tugas: memahami cara menjalankan tugas pekerjaan di 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 harus melalui proses dasar berikut:
- Membuat tugas: Anda menentukan beban kerja yang ingin dijalankan dengan menentukan runnable, tugas, dan persyaratan lainnya untuk 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 akan otomatis dimasukkan dalam antrean, dijadwalkan, dan dieksekusi di resource yang ditentukan. Anda dapat melihat detail tugas yang dibuat atau tugas apa pun di dalamnya untuk melihat status saat ini. Jika perlu, Anda dapat membatalkan tugas untuk menghentikannya atau mencegahnya agar tidak 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 menghapus tugas secara otomatis 60 hari setelah tugas selesai. Sebelum itu, Anda dapat menghapus tugas sendiri jika mau, atau, jika Anda perlu mempertahankan info, Anda dapat mengekspor informasi tugas dalam Batch sebelum tugas dihapus. Informasi apa pun tentang pekerjaan yang disimpan di layanan Google Cloud lain tidak terpengaruh saat pekerjaan 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:
- Dalam antrean (
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-tugas sebelumnya telah dinilai. Namun, untuk mencegah tugas Anda menjadi tidak aktif, jika tugas melampaui waktu tunggu maksimum dalam antrean, Batch akan otomatis menggagalkan tugas tersebut, bukan menjadwalkannya. - Dijadwalkan (
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 sedang menunggu VM untuk dijalankan. - Ditetapkan (
ASSIGNED): tugas telah diberi VM untuk dijalankan. - Berjalan (
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:- succeeded yang dapat dijalankan (menampilkan kode keluar nol).
- Runnable gagal (menampilkan kode keluar bukan nol), tetapi merupakan runnable tidak penting (Anda mengaktifkan
kolom
ignoreExitStatusrunnable). - Runnable tidak selesai, tetapi merupakan background runnable (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.
- 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 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.
Penjadwalan dan antrean tugas
Umumnya, tugas lebih mungkin berjalan dan selesai lebih cepat jika tugas tersebut 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 saja.
Secara khusus, waktu yang dibutuhkan suatu 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 perlukan untuk dipenuhi sebelum tugas dijadwalkan.
Secara default, tugas tidak memiliki prasyarat. 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 relatif terhadap prioritas tugas lain dalam project Anda.
Anda dapat secara opsional menentukan prioritas tugas 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 yang lebih rendah dalam proyek 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 dijalankan 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 sumber dayanya, lihat halaman Lokasi.
Kuota dan batas: nilai minimum yang dimiliki project Anda untuk Google Cloud resource dan permintaan.
Tugas tidak dapat berjalan jika melebihi batas atau kuota project Anda untuk salah satu resource atau permintaan yang diperlukan. Jika hal ini terjadi, Batch dapat menunda tugas dan mencoba lagi nanti atau menggagalkan 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 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 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. - Secara berurutan (
IN_ORDER): tugas dijalankan satu per satu dalam urutan indeks yang meningkat.
Referensi pekerjaan
Setiap tugas Batch berjalan pada grup instance terkelola (MIG) regional, yang merupakan grup dari satu atau beberapa instance virtual machine (VM) Compute Engine yang cocok dan masing-masing berlokasi di salah satu zona yang disertakan. Setiap VM memiliki hardware khusus untuk inti CPU (khususnya CPU virtual (vCPU)) dan memori—yang memengaruhi performa tugas Anda—serta disk boot—yang menyimpan image sistem operasi (OS) dan petunjuk untuk menjalankan tugas Anda.
Selama waktu berjalan tugas, Batch akan otomatis membuat dan menghapus resource yang sesuai dengan spesifikasi Anda. Saat membuat tugas, Anda mengonfigurasi resource-nya dengan menentukan hal berikut:
Resource komputasi per tugas: kecuali jika nilai default sudah cukup, Anda harus menentukan resource komputasi—vCPU, memori, dan (jika diperlukan) penyimpanan disk boot 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 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 pekerjaan.)Jika Anda membiarkan kolom ini tidak ditentukan (yang tidak mungkin dilakukan saat membuat tugas menggunakan Google Cloud konsol), 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 tugas yang berbeda berdasarkan penjadwalan tugas dan
persyaratan hardware yang Anda tentukan. Jika Anda menentukan agar tugas pekerjaan berjalan
IN_ORDER, pekerjaan tersebut memiliki satu VM dan hanya menjalankan satu tugas dalam satu waktu. Jika tidak,
jika tugas suatu pekerjaan berjalan 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 yang sebenarnya dibuat untuk suatu 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 pekerjaan, 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 minimum adalah 1 tugas.
Nilai maksimum 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 satuan vCPU per tugas (
cpuMilli).
Opsi pembuatan tugas
Membuat dan menjalankan pekerjaan dasar menjelaskan dasar-dasarnya, termasuk cara menentukan yang dapat dijalankan menggunakan skrip atau image container dan cara mengonfigurasi variabel lingkungan bawaan 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 menggunakan akun layanan default Compute Engine secara default.
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.
Mengonfigurasi 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 dengan 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 workload pemrosesan data intensif atau 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 berbagi file Filestore.
Ringkasan lingkungan OS VM memberikan ringkasan tentang kapan dan bagaimana Anda dapat menyesuaikan lingkungan sistem operasi (OS) VM untuk suatu tugas, termasuk image OS VM dan boot disk tugas.
Mengoptimalkan berbagai aspek pekerjaan:
Meningkatkan pemantauan dan analisis:
Menulis log tugas menjelaskan cara mengonfigurasi runnables tugas untuk menulis log tugas. Menulis log tugas memungkinkan Anda menampilkan informasi kustom di Cloud Logging, yang dapat membantu 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 dalam 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 melihat dan menggunakan metrik resource, lihat Memantau dan mengoptimalkan resource tugas dengan melihat metrik.
Menjadwalkan tugas yang bergantung (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 penyiapan data) dan operasi yang intensif komputasi (seperti pemrosesan data).
Mengotomatiskan percobaan ulang tugas menjelaskan cara mencoba ulang tugas pekerjaan secara otomatis setelah semua atau kegagalan tertentu. Percobaan ulang otomatis dapat membantu mengurangi hambatan pemecahan masalah dan waktu proses keseluruhan 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 berjalan menggunakan waktu tunggu menjelaskan cara membatasi durasi waktu yang diizinkan untuk menjalankan tugas atau runnable. Dengan mencegah waktu berjalan yang berlebihan, Anda dapat mengurangi biaya dan penundaan yang tidak terduga.
Meningkatkan kemampuan memperoleh resource:
Meningkatkan kemampuan perolehan resource menjelaskan apa yang dimaksud dengan kemampuan perolehan resource dan memberikan rekomendasi tentang cara meningkatkan kemampuan perolehan saat Anda membuat dan menjalankan tugas.
Memastikan ketersediaan resource menggunakan reservasi VM menjelaskan cara mengonfigurasi tugas yang dapat berjalan di VM yang dipesan. Menggunakan VM yang dicadangkan 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 secara bersamaan untuk mengurangi latensi menjelaskan cara mengurangi latensi jaringan di antara VM tugas dengan mewajibkan VM ditempatkan berdekatan secara fisik. 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 melakukan streaming image container dari Artifact Registry.
Menggunakan layanan tambahan untuk membuat dan menjalankan tugas:
Mengorkestrasi tugas menggunakan Workflows menjelaskan cara menggunakan Workflows untuk menjalankan tugas dalam urutan yang Anda tentukan menggunakan sintaksis Workflows.
Mengorkestrasi tugas menggunakan Nextflow menjelaskan cara menjalankan tugas Batch melalui pipeline Nextflow, yang dapat Anda gunakan untuk mengorkestrasi alur kerja bioinformatika.
Mengatur 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 pilihan dalam file konfigurasi, yang dapat diperlakukan sebagai kode dan disimpan dalam sistem kontrol versi seperti GitHub.
Langkah berikutnya
Pelajari dasar-dasar pembuatan tugas: