View a markdown version of this page

Jadwalkan pekerjaan di Deadline Cloud - Awan Batas Waktu

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, Dead AWS line Cloud menjadwalkannya untuk diproses pada satu atau lebih armada yang terkait dengan antrian. Armada yang memproses tugas tertentu dipilih berdasarkan konfigurasi penjadwalan, kemampuan yang dikonfigurasi untuk armada, dan persyaratan host dari langkah tertentu.

Bagian berikut memberikan rincian proses penjadwalan pekerjaan.

Konfigurasi penjadwalan

Anda dapat mengonfigurasi bagaimana Deadline Cloud menjadwalkan pekerjaan dalam antrian dengan mengatur 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 UpdateQueue API CreateQueue or.

Ada tiga konfigurasi penjadwalan yang tersedia:

  • Priority, first-in-first-out (priorityFifo) — Menjadwalkan prioritas tertinggi, pekerjaan yang dikirim paling awal terlebih dahulu (default).

  • Prioritas, seimbang (priorityBalanced) - Mendistribusikan pekerja secara merata di seluruh pekerjaan dengan prioritas tertinggi.

  • Weighted, Balanced (weightedBalanced) — Menggunakan rumus tertimbang untuk menentukan bagaimana pekerja didistribusikan di seluruh pekerjaan.

Dalam semua konfigurasi penjadwalan, tugas yang sedang berjalan berjalan hingga selesai sebelum keputusan penjadwalan baru dibuat. Jika Anda mengubah konfigurasi penjadwalan saat tugas sedang berjalan, perubahan hanya berlaku ketika pekerja ditugaskan berikutnya. Tugas yang sedang berjalan tidak terganggu atau ditugaskan kembali.

Prioritas, pertama masuk-pertama keluar

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 (yang dikirim paling awal) menerima semua pekerja yang tersedia terlebih dahulu.

Gunakan prioritas FIFO ketika Anda menginginkan urutan pekerjaan yang ketat. Konfigurasi ini sesuai ketika pekerjaan harus diselesaikan satu per satu dalam urutan yang dikirimkan, seperti tahapan pipeline berurutan atau pemrosesan batch di mana setiap pekerjaan harus diselesaikan sebelum pekerjaan berikutnya dimulai.

Konfigurasi ini tidak memiliki parameter tambahan.

Prioritas, seimbang

Prioritas, seimbang (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 secara merata 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 dengan prioritas yang sama dan setiap pengguna memerlukan 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 suatu pekerjaan memiliki lebih sedikit tugas yang tersisa daripada bagian pekerjanya, kelebihan pekerja didistribusikan kembali ke pekerjaan lain pada tingkat prioritas yang sama. Jika semua pekerjaan dengan prioritas tertinggi dialokasikan sepenuhnya, surplus pekerja mengalir ke pekerjaan di tingkat prioritas tertinggi berikutnya.

Konfigurasi ini memiliki parameter berikut:

renderingTaskBuffer

Mengontrol kelengketan pekerja. Seorang pekerja beralih dari tugasnya saat ini ke pekerjaan lain dengan prioritas yang sama hanya jika perbedaan dalam tugas rendering melebihi renderingTaskBuffer nilai. Nilai yang lebih tinggi membuat pekerja tetap pada pekerjaan mereka saat ini lebih lama, mengurangi pengalihan konteks. Nilai default-nya adalah 1.

Tertimbang, seimbang

Weighted, Balanced (weightedBalanced) menggunakan rumus untuk menghitung bobot 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 timbang seimbang saat Anda membutuhkan kontrol yang cermat atas bagaimana pekerja didistribusikan di seluruh pekerjaan dengan berbagai prioritas, tingkat kesalahan, dan waktu pengiriman. Konfigurasi ini sesuai untuk lingkungan peternakan render yang 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. errorWeightHal ini 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 yang diterapkan pada prioritas pekerjaan. Nilai positif berarti pekerjaan prioritas tinggi dijadwalkan terlebih dahulu. Nilai default-nya adalah 100.0. Rentang: 0 untuk10000.

errorWeight

Bobot yang diterapkan pada hitungan kesalahan pekerjaan. Nilai negatif berarti pekerjaan tanpa kesalahan dijadwalkan terlebih dahulu. Nilai default-nya adalah -10.0. Rentang: -10000 untuk10000.

submissionTimeWeight

Bobot yang diterapkan pada waktu pengiriman pekerjaan (dalam detik). Nilai positif berarti pekerjaan yang dikirim sebelumnya dijadwalkan terlebih dahulu. Nilai default-nya adalah 3.0. Rentang: 0 untuk10000.

renderingTaskWeight

Bobot yang diterapkan pada jumlah tugas yang sedang dirender untuk pekerjaan. Nilai negatif berarti pekerjaan dengan lebih sedikit pekerja dijadwalkan berikutnya. Nilai default-nya adalah -100.0. Rentang: -10000 untuk10000.

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: 0 untuk1000.

maxPriorityOverride

Tidak wajib. Ketika disetel kealwaysScheduleFirst, pekerjaan pada 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 rumus tertimbang standar tanpa perlakuan khusus.

minPriorityOverride

Tidak wajib. Ketika disetel kealwaysScheduleLast, 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 rumus tertimbang standar tanpa perlakuan khusus.

Tentukan kompatibilitas armada

Antrian dan armada membagi pekerjaan routing. Antrian mengatur pekerjaan dan mengontrol siapa yang dapat mengirimkan dan melihatnya. Armada dan persyaratan tuan rumah memilih pekerja mana yang menjalankan setiap langkah.

Untuk mendedikasikan pekerja tertentu untuk pekerjaan tertentu, buat armada terpisah untuk pekerja tersebut alih-alih antrian terpisah. Misalnya, gunakan armada terpisah untuk mesin dengan perangkat keras tertentu atau untuk mesin yang disediakan untuk konten sensitif. Satu antrian dapat dikaitkan dengan beberapa armada, dan persyaratan host setiap langkah memilih armada yang kompatibel. Jika Anda berasal dari Deadline 10, armada dan persyaratan tuan rumah menggantikan grup pekerja. Untuk pemetaan konsep lengkap, lihatBermigrasi dari Deadline 10 ke AWS Awan Batas Waktu.

Setelah Anda membuat pekerjaan, Deadline Cloud memeriksa persyaratan host untuk setiap langkah dalam pekerjaan terhadap kemampuan armada yang terkait dengan antrian tempat pekerjaan dikirimkan. Jika armada memenuhi persyaratan tuan rumah, pekerjaan 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-langkah dalam pekerjaan dibatalkan. Jika Anda mengaitkan armada yang kompatibel dengan antrian nanti, NOT_COMPATIBLE pekerjaan yang ada tidak akan dimulai ulang secara otomatis — untuk menjalankannya, minta mereka. Untuk informasi selengkapnya, lihat Ubah pekerjaan di Deadline Cloud.

Kemampuan untuk armada ditetapkan pada tingkat armada. Bahkan jika seorang pekerja dalam armada memenuhi persyaratan pekerjaan, ia tidak akan diberi tugas dari pekerjaan jika armadanya tidak memenuhi persyaratan pekerjaan.

penting

workerCapabilitiesDeklarasi tingkat armada adalah kontrak penjadwalan. Penjadwal mengevaluasi kompatibilitas langkah secara eksklusif terhadap kemampuan tingkat armada - tidak memeriksa pekerja individu. Jika langkah hostRequirements melebihi nilai minimum yang dinyatakan dalam armadaworkerCapabilities, armada dievaluasi sebagai tidak kompatibel, bahkan jika beberapa pekerja individu dalam armada akan memenuhi persyaratan.

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

Pengirim menetapkan persyaratan yang sama melalui tab Persyaratan Host. Pilih Jalankan pada host pekerja yang memenuhi persyaratan berikut untuk mengatur sistem operasi, arsitektur CPU, dan rentang perangkat keras tanpa mengedit template.

Tab Persyaratan Host dengan persyaratan khusus dipilih, menunjukkan OS, arsitektur CPU, dan rentang perangkat keras.

Pekerjaan ini dapat dijadwalkan ke armada dengan kemampuan 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.

Praktik terbaik desain armada

Karena penjadwal mengevaluasi kompatibilitas di tingkat armada, rancang armada yang dikelola pelanggan Anda sehingga yang dinyatakan workerCapabilities mewakili karakteristik perangkat keras minimum yang dijamin dari setiap pekerja dalam armada:

  • Pisahkan pekerja menjadi beberapa armada berdasarkan karakteristik perangkat keras minimum yang dijamin (misalnya, jumlah GPU, VRAM, atau jumlah CPU) daripada menggunakan satu armada heterogen dengan rentang yang luas.

  • Pastikan bahwa setiap pekerja dalam armada memenuhi atau melebihi minimum yang dinyatakan, bahkan jika pekerja tidak memiliki perangkat keras yang identik.

  • Kaitkan beberapa armada dengan satu antrian sehingga penjadwal memilih armada yang kompatibel berdasarkan setiap langkah. hostRequirements

Misalnya, jika Anda memiliki pekerja dengan 1 GPU (24 GiB VRAM) dan pekerja dengan 4 GPU (96 GiB VRAM), buat dua armada terpisah: satu mendeklarasikan minimal 1 GPU dan memori GPU 24 GiB, dan yang lain menyatakan minimal 4 GPU dan memori GPU 96 GiB. Kemudian kaitkan kedua armada dengan antrian yang sama. Langkah-langkah yang membutuhkan 4 GPU secara otomatis dialihkan ke armada GPU tinggi.

Untuk informasi selengkapnya tentang membuat armada yang dikelola pelanggan, lihat. Buat armada yang dikelola pelanggan

Kemampuan khusus

Selain kemampuan pekerja bawaan (vCPU, memori, GPU, sistem operasi, dan arsitektur CPU), Anda dapat menentukan jumlah kustom dan atribut khusus pada armada untuk mengungkapkan batasan penjadwalan tambahan:

  • Jumlah kustom — Nilai numerik seperti ruang disk yang tersedia atau penghitung perangkat keras khusus.

  • Atribut kustom — Nilai string seperti perangkat lunak yang diinstal, versi pemecah, atau label situs. Misalnya, Anda dapat menentukan attr.sw.solvers dengan nilai seperti mer ["vray-6", "arnold-7"] utekan pekerjaan yang memerlukan perangkat lunak tertentu.

Pada tingkat armada, nyatakan kombinasi perangkat lunak atau perangkat keras dalam kemampuan khusus hanya jika mereka dijamin ada pada semua pekerja di armada itu.

Fleet-level kemampuan kustom memiliki batasan sebagai berikut:

  • Maksimal 15 jumlah kustom per armada

  • Maksimal 15 atribut khusus per armada

Nama dalam formulir amount.worker.* dan attr.worker.* dicadangkan oleh layanan untuk kemampuan bawaan. Gunakan awalan lain untuk kemampuan kustom Anda.

Contoh berikut merutekan langkah-langkah yang memerlukan pemecah khusus ke armada yang menyediakannya. Armada menyatakan pemecah yang dipasang pada semua pekerjanya dalam atribut khusus. Konfigurasi armada ini adalah bagian dari CreateFleet permintaan:

"workerCapabilities": { "vCpuCount": {"min": 4}, "memoryMiB": {"min": 16384}, "osFamily": "linux", "cpuArchitectureType": "x86_64", "customAttributes": [ { "name": "attr.sw.solvers", "values": ["vray-6", "arnold-7"] } ] }

Langkah yang memerlukan salah satu nilai yang dinyatakan menyatakan persyaratan hostRequirements dalam template pekerjaan:

steps: - name: RenderWithVray hostRequirements: attributes: - name: attr.sw.solvers anyOf: - vray-6 script: actions: onRun: command: '{{Task.File.Render}}'

Persyaratan tersebut membuat RenderWithVray armada tidak mendeklarasikanvray-6. Kebalikannya tidak berlaku: langkah tanpa attr.sw.solvers persyaratan masih kompatibel dengan armada ini dan dapat dijadwalkan untuk itu.

catatan

Atribut khusus dan rute persyaratan host bekerja. Mereka bukan kontrol akses. Persyaratan host ditetapkan dalam template pekerjaan oleh siapa pun yang mengirimkan pekerjaan, dan armada yang menyatakan atribut masih menerima langkah-langkah yang tidak menyebutkannya. Untuk memesan pekerja untuk konten sensitif, masukkan mereka ke armada mereka sendiri dan kaitkan armada itu hanya dengan antrian yang disetujui. Untuk informasi selengkapnya, lihat Kontrol akses dan pemilihan pekerja dan Mengisolasi beban kerja dengan peternakan, armada, dan antrian.

Untuk informasi selengkapnya tentang mengonfigurasi kemampuan khusus saat membuat armada, lihatBuat armada yang dikelola pelanggan.

Pelaporan memori GPU

Saat Anda mengonfigurasi armada untuk GPU-intensive beban kerja yang memerlukan ambang VRAM per GPU tertentu, pahami cara agen pekerja melaporkan memori GPU.

Agen pekerja Deadline Cloud melaporkan memori GPU minimum di semua GPU pada pekerjaamount.worker.gpu.memory, bukan jumlah totalnya. Perilaku ini memastikan bahwa pekerjaan yang membutuhkan jumlah VRAM per GPU tertentu dialihkan ke pekerja di mana setiap GPU memenuhi persyaratan tersebut.

Misalnya, jika pekerja memiliki dua GPU dengan masing-masing 24 GiB dan 48 GiB VRAM, agen pekerja melaporkan 24 GiB sebagai nilai memori GPU.

Pada tingkat armada, atur acceleratorTotalMemoryMiB minimum ke VRAM per GPU terendah yang dijamin dimiliki oleh setiap pekerja di armada.

Per-worker kemampuan

Bila Anda perlu melacak status operasional untuk pekerja individual tanpa mempengaruhi keputusan penjadwalan, gunakan kemampuan per pekerja. Misalnya, Anda dapat menandai pekerja untuk pemeliharaan, melacak status peluncuran perangkat lunak, atau mencatat indikator pemeriksaan kesehatan.

Anda dapat mengatur kemampuan pada pekerja individual menggunakan operasi UpdateWorker API. Per-worker kemampuan tidak digunakan sebagai kontrak penjadwalan. Penjadwal mengevaluasi kompatibilitas secara eksklusif terhadap deklarasi tingkat armada. workerCapabilities

ListWorkersOper GetWorker asi dan tidak mengembalikan kemampuan pekerja yang telah ditetapkanUpdateWorker.

Untuk informasi selengkapnya, lihat UpdateWorker Referensi API Dead line Cloud.

Kontrol akses dan pemilihan pekerja

Deadline Cloud memisahkan siapa yang dapat menggunakan sumber daya dari tempat pekerjaan berjalan. Kebijakan IAM dan keanggotaan AWS IAM Identity Center pengguna dan grup mengontrol siapa yang dapat melihat, mengirimkan ke, dan mengelola peternakan, antrian, atau armada. Antrian—asosiasi armada dan persyaratan tuan rumah mengontrol pekerja mana yang menjalankan setiap pekerjaan.

Keanggotaan grup pada armada memberi orang akses untuk melihat dan mengelola armada itu di monitor. Keanggotaan tidak mengarahkan pekerjaan ke armada atau menghalangi pekerjaan itu. Untuk mengarahkan pekerjaan ke atau menjauh dari armada, gunakan asosiasi antrian-armada.

Persyaratan tuan rumah adalah bagian dari template pekerjaan, jadi siapa pun yang mengirimkan pekerjaan memilihnya. Mereka mengarahkan pekerjaan ke armada yang mampu, dan mereka bukan kontrol akses. Asosiasi antrian-armada adalah titik penegakan: layanan menjadwalkan langkah hanya untuk armada yang terkait dengan antrian pekerjaan, apa pun yang dikatakan persyaratan host langkah tersebut. Untuk mencegah pekerjaan yang tidak sah dari armada yang dibatasi, kaitkan armada hanya dengan antrian terbatas dan kendalikan siapa yang dapat menyerahkan diri ke antrian tersebut. Untuk informasi selengkapnya tentang batas keamanan antara antrian dan armada yang berbagi pekerja, lihat. Mengisolasi beban kerja dengan peternakan, armada, dan antrian

Penskalaan armada

Ketika pekerjaan ditugaskan ke armada yang dikelola layanan yang kompatibel, armada diskalakan secara otomatis. Jumlah pekerja dalam 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 Gunakan EventBridge untuk menangani peristiwa penskalaan otomatis di Panduan Pengguna Penskalaan Otomatis Amazon EC2.

Sesi

Tugas dalam 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 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 di on worker dan C:\Users\job-user\.conda-pkgs /home/job-user/.conda-pkgs on Windows Linux worker. Data ini tetap tersedia sampai pekerja mati.

Lampiran pekerjaan dibuat oleh pengirim yang Anda gunakan sebagai bagian dari bundel 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 template pekerjaan.

Ada empat jenis tindakan sesi:

  • syncInputJobAttachments— Mengunduh lampiran pekerjaan input ke pekerja.

  • envEnter— Melakukan onEnter tindakan untuk lingkungan.

  • taskRun— Melakukan onRun tindakan untuk suatu tugas.

  • envExit— Melakukan onExit tindakan untuk 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 }}

Pipelining tindakan sesi

Pipelining tindakan sesi memungkinkan penjadwal menetapkan beberapa tindakan sesi ke pekerja. Pekerja kemudian dapat menjalankan tindakan ini secara berurutan, mengurangi atau menghilangkan waktu idle antar tugas.

Untuk membuat penugasan awal, penjadwal membuat sesi dengan satu tugas, pekerja menyelesaikan tugas, dan kemudian penjadwal menganalisis durasi tugas untuk menentukan penugasan mendatang.

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 menetapkan 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

  • Hanya mempertimbangkan tugas dalam sesi yang sama

  • Tidak membagikan data durasi di seluruh pekerja

Dengan piplelining tindakan sesi, pekerja segera memulai tugas baru dan tidak ada waktu tunggu 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 baru dengan prioritas lebih tinggi yang tersedia, pekerja akan menyelesaikan semua pekerjaan yang ditugaskan sebelumnya sebelum sesi saat ini berakhir dan sesi baru dari pekerjaan prioritas lebih tinggi ditetapkan.

Ketergantungan langkah

Deadline Cloud mendukung penentuan dependensi antar langkah sehingga satu langkah menunggu sampai langkah lain selesai sebelum memulai. Anda dapat menentukan lebih dari satu ketergantungan untuk satu langkah. Langkah dengan dependensi tidak dijadwalkan sampai semua dependensinya selesai.

Jika template pekerjaan mendefinisikan ketergantungan melingkar, pekerjaan ditolak dan status pekerjaan disetel keCREATE_FAILED.

Template pekerjaan berikut membuat pekerjaan dengan dua langkah. StepBtergantung padaStepA. StepBhanya berjalan setelah selesai StepA 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 jika StepA 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 mulai 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!