Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Jadwalkan pekerjaan di Deadline Cloud
Setelah Anda membuat pekerjaan, AWS Deadline Cloud menjadwalkannya untuk diproses pada satu atau beberapa armada yang terkait dengan antrian. Armada yang memproses tugas tertentu dipilih berdasarkan konfigurasi penjadwalan, kemampuan yang dikonfigurasi untuk armada, dan persyaratan tuan rumah dari langkah tertentu.
Bagian berikut memberikan rincian proses penjadwalan pekerjaan.
Konfigurasi penjadwalan
Anda dapat mengonfigurasi cara Deadline Cloud menjadwalkan pekerjaan dalam antrian dengan menyetel konfigurasi penjadwalan pada antrian. Konfigurasi penjadwalan mengontrol bagaimana pekerja didistribusikan di seluruh pekerjaan.
Anda dapat mengatur konfigurasi penjadwalan menggunakan konsol Deadline Cloud atau dengan memanggil atau. CreateQueueUpdateQueue APIs
Ada tiga konfigurasi penjadwalan yang tersedia:
-
Prioritas, first-in-first-out (
priorityFifo) - Menjadwalkan prioritas tertinggi, pekerjaan yang diajukan paling awal terlebih dahulu (default). -
Prioritas, seimbang (
priorityBalanced) - Mendistribusikan pekerja secara merata di seluruh pekerjaan dengan prioritas tertinggi. -
Weighted, balanced (
weightedBalanced) — Menggunakan formula tertimbang untuk menentukan bagaimana pekerja didistribusikan di seluruh pekerjaan.
Dalam semua konfigurasi penjadwalan, tugas yang sedang berlangsung berjalan hingga selesai sebelum keputusan penjadwalan baru dibuat. Jika Anda mengubah konfigurasi penjadwalan saat tugas sedang berjalan, perubahan hanya berlaku ketika pekerja ditugaskan berikutnya. Menjalankan tugas tidak terganggu atau dipindahkan.
Prioritas, first-in-first-out
Priority, first-in-first-out (priorityFifo) adalah konfigurasi penjadwalan default untuk antrian baru. Deadline Cloud menugaskan pekerja ke pekerjaan dengan prioritas tertinggi terlebih dahulu. Ketika beberapa pekerjaan memiliki prioritas yang sama, pekerjaan tertua (paling awal dikirimkan) menerima semua pekerja yang tersedia terlebih dahulu.
Gunakan prioritas FIFO ketika Anda ingin pemesanan pekerjaan yang ketat. Konfigurasi ini sesuai ketika pekerjaan harus diselesaikan satu per satu dalam urutan yang diajukan, seperti tahapan pipa berurutan atau pemrosesan batch di mana setiap pekerjaan harus diselesaikan sebelum pekerjaan berikutnya dimulai.
Konfigurasi ini tidak memiliki parameter tambahan.
Prioritas, seimbang
Priority, balanced (priorityBalanced) mendistribusikan pekerja secara merata di semua pekerjaan pada tingkat prioritas tertinggi. Ketika hanya satu pekerjaan yang ada pada prioritas tertinggi, Deadline Cloud menugaskan semua pekerja untuk pekerjaan itu. Ketika beberapa pekerjaan berbagi prioritas tertinggi, pekerja dibagi rata di antara mereka. Jika pekerja tidak dapat dibagi secara merata, pekerja tambahan didistribusikan di antara pekerjaan prioritas tertinggi.
Gunakan prioritas seimbang ketika beberapa artis atau pengguna mengirimkan pekerjaan pada prioritas yang sama dan setiap pengguna membutuhkan umpan balik segera. Konfigurasi ini memastikan bahwa tidak ada pekerjaan tunggal yang memonopoli semua pekerja yang tersedia, sehingga semua pengguna dialokasikan pekerja segera setelah pengiriman.
Jika pekerjaan memiliki lebih sedikit tugas yang tersisa daripada bagian pekerjanya, pekerja surplus didistribusikan kembali ke pekerjaan lain pada tingkat prioritas yang sama. Jika semua pekerjaan dengan prioritas tertinggi dialokasikan sepenuhnya, pekerja surplus mengalir ke pekerjaan di tingkat prioritas tertinggi berikutnya.
Konfigurasi ini memiliki parameter berikut:
renderingTaskBuffer-
Mengontrol kelengketan pekerja. Seorang pekerja beralih dari pekerjaannya saat ini ke pekerjaan lain dengan prioritas yang sama hanya jika perbedaan dalam tugas rendering melebihi
renderingTaskBuffernilainya. Nilai yang lebih tinggi membuat pekerja pada pekerjaan mereka saat ini lebih lama, mengurangi peralihan konteks. Nilai default-nya adalah1.
Berbobot, seimbang
Weighted, balanced (weightedBalanced) menggunakan rumus untuk menghitung berat untuk setiap pekerjaan. Deadline Cloud menugaskan pekerja ke pekerjaan dengan bobot tertinggi terlebih dahulu. Jika beberapa pekerjaan memiliki bobot yang sama, pekerja didistribusikan di antara mereka.
Gunakan timbangan berbobot ketika Anda membutuhkan kontrol halus atas bagaimana pekerja didistribusikan di seluruh pekerjaan dengan berbagai prioritas, tingkat kesalahan, dan waktu pengiriman. Konfigurasi ini sesuai untuk lingkungan pertanian render kompleks di mana Anda ingin menyesuaikan keseimbangan antara prioritas pekerjaan, usia pekerjaan, penanganan kesalahan, dan kelengketan pekerja.
Bobot untuk setiap pekerjaan dihitung sebagai berikut:
weight = (job.Priority * priorityWeight) +
(job.Errors * errorWeight) +
((currentTimeInSeconds - job.SubmissionTime) * submissionTimeWeight) +
((job.RenderingTasks - renderingTaskBuffer) * renderingTaskWeight)
renderingTaskBufferKomponen diterapkan hanya jika pekerja saat ini sedang mengerjakan pekerjaan. Biasanya renderingTaskWeight diatur ke nilai negatif sehingga pekerjaan dengan pekerja yang ditugaskan menerima bobot yang lebih rendah, membawa pekerjaan lain ke depan antrian. errorWeightItu juga biasanya negatif sehingga pekerjaan dengan kesalahan tidak diprioritaskan. Anda dapat menggunakan penggantian penjadwalan untuk pekerjaan prioritas minimum dan maksimum.
Konfigurasi ini memiliki parameter berikut:
priorityWeight-
Bobot diterapkan pada prioritas pekerjaan. Nilai positif berarti pekerjaan dengan prioritas lebih tinggi dijadwalkan terlebih dahulu. Nilai default-nya adalah
100.0. Rentang:0ke10000. errorWeight-
Bobot yang diterapkan pada hitungan kesalahan pekerjaan. Nilai negatif berarti pekerjaan tanpa kesalahan dijadwalkan terlebih dahulu. Nilai default-nya adalah
-10.0. Rentang:-10000ke10000. submissionTimeWeight-
Bobot diterapkan pada waktu pengiriman pekerjaan (dalam detik). Nilai positif berarti pekerjaan yang diajukan sebelumnya dijadwalkan terlebih dahulu. Nilai default-nya adalah
3.0. Rentang:0ke10000. renderingTaskWeight-
Bobot diterapkan pada jumlah tugas yang saat ini dirender untuk suatu pekerjaan. Nilai negatif berarti pekerjaan dengan lebih sedikit pekerja dijadwalkan berikutnya. Nilai default-nya adalah
-100.0. Rentang:-10000ke10000. renderingTaskBuffer-
Jumlah tugas rendering sebelum bobot tugas rendering berlaku. Nilai positif membuat pekerja tetap pada pekerjaan mereka saat ini. Nilai default-nya adalah
1. Rentang:0ke1000. maxPriorityOverride-
Tidak wajib. Ketika diatur ke
alwaysScheduleFirst, pekerjaan dengan prioritas maksimum (100) selalu dijadwalkan sebelum pekerjaan lain, terlepas dari rumus tertimbang. Ketika beberapa pekerjaan memiliki prioritas maksimum, ikatan diputus menggunakan rumus tertimbang standar. Ketika penggantian tidak ada, pekerjaan prioritas maksimum menggunakan formula tertimbang standar tanpa perlakuan khusus. minPriorityOverride-
Tidak wajib. Ketika diatur ke
alwaysScheduleLast, pekerjaan pada prioritas minimum (0) selalu dijadwalkan setelah pekerjaan lain, terlepas dari rumus tertimbang. Ketika beberapa pekerjaan memiliki prioritas minimum, ikatan diputus menggunakan rumus tertimbang standar. Ketika penggantian tidak ada, pekerjaan prioritas minimum menggunakan formula tertimbang standar tanpa perlakuan khusus.
Tentukan kompatibilitas armada
Setelah Anda membuat pekerjaan, Deadline Cloud memeriksa persyaratan host untuk setiap langkah dalam pekerjaan terhadap kemampuan armada yang terkait dengan antrian pekerjaan yang dikirimkan. Jika armada memenuhi persyaratan tuan rumah, pekerjaan itu dimasukkan ke READY negara bagian.
Jika ada langkah dalam pekerjaan yang memiliki persyaratan yang tidak dapat dipenuhi oleh armada yang terkait dengan antrian, status langkah diatur keNOT_COMPATIBLE. Selain itu, sisa langkah dalam pekerjaan dibatalkan.
Kemampuan untuk armada ditetapkan pada tingkat armada. Bahkan jika seorang pekerja dalam armada memenuhi persyaratan pekerjaan, itu tidak akan diberikan tugas dari pekerjaan jika armadanya tidak memenuhi persyaratan pekerjaan.
Template pekerjaan berikut memiliki langkah yang menentukan persyaratan host untuk langkah tersebut:
name: Sample Job With Host Requirements specificationVersion: jobtemplate-2023-09 steps: - name: Step 1 script: actions: onRun: args: - '1' command: /usr/bin/sleep hostRequirements: amounts: # Capabilities starting with "amount." are amount capabilities. If they start with "amount.worker.", # they are defined by the OpenJD specification. Other names are free for custom usage. - name: amount.worker.vcpu min: 4 max: 8 attributes: - name: attr.worker.os.family anyOf: - linux
Pekerjaan ini dapat dijadwalkan ke armada dengan kemampuan sebagai berikut:
{
"vCpuCount": {"min": 4, "max": 8},
"memoryMiB": {"min": 1024},
"osFamily": "linux",
"cpuArchitectureType": "x86_64"
}
Pekerjaan ini tidak dapat dijadwalkan ke armada dengan salah satu kemampuan berikut:
{
"vCpuCount": {"min": 4},
"memoryMiB": {"min": 1024},
"osFamily": "linux",
"cpuArchitectureType": "x86_64"
}
The vCpuCount has no maximum, so it exceeds the maximum vCPU host requirement.
{
"vCpuCount": {"max": 8},
"memoryMiB": {"min": 1024},
"osFamily": "linux",
"cpuArchitectureType": "x86_64"
}
The vCpuCount has no minimum, so it doesn't satisfy the minimum vCPU host requirement.
{
"vCpuCount": {"min": 4, "max": 8},
"memoryMiB": {"min": 1024},
"osFamily": "windows",
"cpuArchitectureType": "x86_64"
}
The osFamily doesn't match.
Penskalaan armada
Ketika pekerjaan ditugaskan ke armada yang dikelola layanan yang kompatibel, armada diskalakan secara otomatis. Jumlah pekerja di armada berubah berdasarkan jumlah tugas yang tersedia untuk dijalankan armada.
Ketika pekerjaan ditugaskan ke armada yang dikelola pelanggan, pekerja mungkin sudah ada atau dapat dibuat menggunakan penskalaan otomatis berbasis peristiwa. Untuk informasi selengkapnya, lihat Menggunakan EventBridge untuk menangani peristiwa penskalaan otomatis di Panduan Pengguna Amazon EC2 Auto Scaling.
Sesi
Tugas dalam suatu pekerjaan dibagi menjadi satu atau lebih sesi. Pekerja menjalankan sesi untuk mengatur lingkungan, menjalankan tugas, dan kemudian meruntuhkan lingkungan. Setiap sesi terdiri dari satu atau lebih tindakan yang harus dilakukan seorang pekerja.
Saat pekerja menyelesaikan tindakan bagian, tindakan sesi tambahan dapat dikirim ke pekerja. Pekerja menggunakan kembali lingkungan yang ada dan lampiran pekerjaan dalam sesi untuk menyelesaikan tugas dengan lebih efisien.
Pada pekerja armada yang dikelola layanan, direktori sesi dihapus setelah sesi berakhir, tetapi direktori lain dipertahankan di antara sesi. Perilaku ini memungkinkan Anda menerapkan strategi caching untuk data yang dapat digunakan kembali di beberapa sesi. Untuk menyimpan data antar sesi, simpan di bawah direktori home pengguna yang menjalankan pekerjaan. Misalnya, paket conda di-cache di bawah direktori home pengguna pekerjaan C:\Users\job-user\.conda-pkgs di Windows pekerja dan /home/job-user/.conda-pkgs pekerja. Linux Data ini tetap tersedia sampai pekerja dimatikan.
Lampiran Job dibuat oleh pengirim yang Anda gunakan sebagai bagian dari paket pekerjaan Deadline Cloud CLI Anda. Anda juga dapat membuat lampiran pekerjaan menggunakan --attachments opsi untuk create-job AWS CLI perintah. Lingkungan didefinisikan di dua tempat: lingkungan antrian yang dilampirkan ke antrian tertentu, dan lingkungan pekerjaan dan langkah yang ditentukan dalam templat pekerjaan.
Ada empat jenis tindakan sesi:
-
syncInputJobAttachments— Mengunduh lampiran pekerjaan input ke pekerja. -
envEnter— MelakukanonEntertindakan untuk suatu lingkungan. -
taskRun— MelakukanonRuntindakan untuk suatu tugas. -
envExit— MelakukanonExittindakan untuk suatu lingkungan.
Template pekerjaan berikut memiliki lingkungan langkah. Ini memiliki onEnter definisi untuk mengatur lingkungan langkah, onRun definisi yang mendefinisikan tugas yang akan dijalankan, dan onExit definisi untuk meruntuhkan lingkungan langkah. Sesi yang dibuat untuk pekerjaan ini akan mencakup envEnter tindakan, satu atau lebih taskRun tindakan, dan kemudian envExit tindakan.
name: Sample Job with Maya Environment specificationVersion: jobtemplate-2023-09 steps: - name: Maya Step stepEnvironments: - name: Maya description: Runs Maya in the background. script: embeddedFiles: - name: initData filename: init-data.yaml type: TEXT data: | scene_file: MyAwesomeSceneFile renderer: arnold camera: persp actions: onEnter: command: MayaAdaptor args: - daemon - start - --init-data - file://{{Env.File.initData}} onExit: command: MayaAdaptor args: - daemon - stop parameterSpace: taskParameterDefinitions: - name: Frame range: 1-5 type: INT script: embeddedFiles: - name: runData filename: run-data.yaml type: TEXT data: | frame: {{Task.Param.Frame}} actions: onRun: command: MayaAdaptor args: - daemon - run - --run-data - file://{{ Task.File.runData }}
Tindakan sesi pipelining
Tindakan sesi pipelining memungkinkan penjadwal pra-menetapkan beberapa tindakan sesi ke pekerja. Pekerja kemudian dapat menjalankan tindakan ini secara berurutan, mengurangi atau menghilangkan waktu idle antar tugas.
Untuk membuat tugas awal, penjadwal membuat sesi dengan satu tugas, pekerja menyelesaikan tugas, dan kemudian penjadwal menganalisis durasi tugas untuk menentukan tugas masa depan.
Agar penjadwal efektif, ada aturan durasi tugas. Untuk tugas di bawah satu menit, penjadwal menggunakan pola pertumbuhan power-of-2. Misalnya, untuk tugas 1 detik, penjadwal memberikan 2 tugas baru, lalu 4, lalu 8. Untuk tugas lebih dari satu menit, penjadwal hanya menetapkan satu tugas baru dan pipelining tetap dinonaktifkan.
Untuk menghitung ukuran pipa, penjadwal melakukan hal berikut:
-
Menggunakan durasi tugas rata-rata dari tugas yang diselesaikan
-
Bertujuan untuk membuat pekerja sibuk selama satu menit
-
Mempertimbangkan hanya tugas dalam sesi yang sama
-
Tidak berbagi data durasi di seluruh pekerja
Dengan piplelining tindakan sesi, pekerja segera memulai tugas baru dan tidak ada waktu tunggu di antara permintaan penjadwal. Ini juga memberikan peningkatan efisiensi pekerja dan distribusi tugas yang lebih baik untuk proses yang berjalan lama.
Selain itu, jika ada pekerjaan prioritas baru yang lebih tinggi yang tersedia, pekerja akan menyelesaikan semua pekerjaan yang ditugaskan sebelumnya sebelum sesi saat ini berakhir dan sesi baru dari pekerjaan prioritas yang lebih tinggi ditugaskan.
Ketergantungan langkah
Deadline Cloud mendukung mendefinisikan dependensi antar langkah sehingga satu langkah menunggu hingga langkah lain selesai sebelum memulai. Anda dapat menentukan lebih dari satu ketergantungan untuk satu langkah. Langkah dengan ketergantungan tidak dijadwalkan sampai semua dependensinya selesai.
Jika template pekerjaan mendefinisikan ketergantungan melingkar, pekerjaan ditolak dan status pekerjaan disetel ke. CREATE_FAILED
Template pekerjaan berikut membuat pekerjaan dengan dua langkah. StepBtergantung padaStepA. StepBhanya berjalan setelah StepA selesai dengan sukses.
Setelah pekerjaan dibuat, StepA berada di READY negara bagian dan StepB berada di PENDING negara bagian. Setelah StepA selesai, StepB pindah ke READY negara bagian. Jika StepA gagal, atau StepA jika dibatalkan, StepB pindah ke CANCELED negara bagian.
Anda dapat mengatur ketergantungan pada beberapa langkah. Misalnya, jika StepC tergantung pada keduanya StepA danStepB, StepC tidak akan dimulai sampai dua langkah lainnya selesai.
Dependensi langkah memiliki batasan berikut:
-
Dependensi per langkah — Sebuah langkah dapat bergantung pada maksimum 128 langkah lainnya.
-
Konsumen per langkah — Maksimal 32 langkah lain dapat bergantung pada satu langkah.
name: Step-Step Dependency Test specificationVersion: 'jobtemplate-2023-09' steps: - name: A script: actions: onRun: command: bash args: ['{{ Task.File.run }}'] embeddedFiles: - name: run type: TEXT data: | #!/bin/env bash set -euo pipefail sleep 1 echo Task A Done! - name: B dependencies: - dependsOn: A # This means Step B depends on Step A script: actions: onRun: command: bash args: ['{{ Task.File.run }}'] embeddedFiles: - name: run type: TEXT data: | #!/bin/env bash set -euo pipefail sleep 1 echo Task B Done!