Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Slurry panduan untuk beberapa mode antrian
AWS ParallelCluster versi 2.9.0 memperkenalkan beberapa mode antrian dan arsitektur penskalaan baru untuk Slurm Workload Manager (Slurm).
Bagian berikut memberikan gambaran umum tentang penggunaan Slurm cluster dengan arsitektur penskalaan yang baru diperkenalkan.
Gambaran umum
Arsitektur penskalaan baru didasarkan pada Slurm Panduan Penjadwalan Cloud
Siklus hidup simpul cloud
Sepanjang siklus hidupnya, node cloud memasukkan beberapa jika tidak semua status berikut:POWER_SAVING, POWER_UP (pow_up), ALLOCATED (alloc), dan POWER_DOWN (pow_dn). Dalam beberapa kasus, node cloud mungkin memasuki OFFLINE status. Daftar berikut merinci beberapa aspek status ini dalam siklus hidup node cloud.
-
Sebuah node dalam
POWER_SAVINGkeadaan muncul dengan akh~iran (misalnyaidle~) disinfo. Dalam keadaan ini, tidak ada instance EC2 yang mendukung node. Namun, masih Slurm dapat mengalokasikan pekerjaan ke node. -
Sebuah node yang bertransisi ke
POWER_UPstatus muncul dengan akh#iran (misalnyaidle#) di.sinfo -
Ketika Slurm mengalokasikan pekerjaan ke node dalam
POWER_SAVINGkeadaan, node secara otomatis mentransfer ke status.POWER_UPJika tidak, node dapat ditempatkan dalamPOWER_UPstatus secara manual menggunakanscontrol update nodename=perintah. Pada tahap ini, instansnodenamestate=power_upResumeProgramdipanggil, dan instans EC2 diluncurkan dan dikonfigurasi untuk mendukung node.POWER_UP -
Node yang saat ini tersedia untuk digunakan muncul tanpa akhiran apa pun (misalnya
idle) disinfo. Setelah node diatur dan telah bergabung dengan cluster, itu menjadi tersedia untuk menjalankan pekerjaan. Pada tahap ini, node dikonfigurasi dengan benar dan siap digunakan. Sebagai aturan umum, kami menyarankan agar jumlah instance di EC2 sama dengan jumlah node yang tersedia. Dalam kebanyakan kasus, node statis selalu tersedia setelah cluster dibuat. -
Sebuah node yang sedang bertransisi ke
POWER_DOWNstatus muncul dengan akh%iran (misalnyaidle%) di.sinfoNode dinamis secara otomatis memasukiPOWER_DOWNstatus setelahnyascaledown_idletime. Sebaliknya, node statis dalam banyak kasus tidak dimatikan. Namun, node dapat ditempatkan dalamPOWER_DOWNstatus secara manual menggunakanscontrol update nodename=perintah. Dalam keadaan ini, instance yang terkait dengan node dihentikan, dan node diatur ulang kembali ke status untuk digunakan dinodenamestate=powering_downPOWER_SAVINGmasa mendatang setelahnyascaledown_idletime. Pengscaledown-idletimeaturan disimpan ke Slurm konfigurasi sebagaiSuspendTimeoutpengaturan. -
Node yang offline muncul dengan akh
*iran (misalnyadown*) disinfo. Node menjadi offline jika Slurm pengontrol tidak dapat menghubungi node atau jika node statis dinonaktifkan dan instance pendukung dihentikan.
Sekarang perhatikan status node yang ditunjukkan dalam sinfo contoh berikut.
$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELIST efa up infinite 4 idle~ efa-dy-c5n18xlarge-[1-4] efa up infinite 1 idle efa-st-c5n18xlarge-1 gpu up infinite 1 idle% gpu-dy-g38xlarge-1 gpu up infinite 9 idle~ gpu-dy-g38xlarge-[2-10] ondemand up infinite 2 mix# ondemand-dy-c52xlarge-[1-2] ondemand up infinite 18 idle~ ondemand-dy-c52xlarge-[3-10],ondemand-dy-t2xlarge-[1-10] spot* up infinite 13 idle~ spot-dy-c5xlarge-[1-10],spot-dy-t2large-[1-3] spot* up infinite 2 idle spot-st-t2large-[1-2]
efa-st-c5n18xlarge-1N spot-st-t2large-[1-2] ode dan sudah memiliki instans cadangan yang disiapkan dan tersedia untuk digunakan. N ondemand-dy-c52xlarge-[1-2] ode berada di POWER_UP negara bagian, dan mereka harus tersedia dalam beberapa menit. N gpu-dy-g38xlarge-1 ode berada dalam POWER_DOWN keadaan, dan akan beralih ke POWER_SAVING status setelahnya scaledown_idletime (default ke 120 detik).
Semua node lain dalam POWER_SAVING keadaan tanpa instans EC2 yang mendukungnya.
Bekerja dengan node yang tersedia
Node yang tersedia didukung oleh instance EC2. Secara default, nama node dapat digunakan untuk langsung SSH ke instance (misalnyassh efa-st-c5n18xlarge-1). Alamat IP pribadi dari instance dapat diambil menggunakan scontrol show nodes perintah dan memeriksa nodenameNodeAddr bidang. Untuk node yang tidak tersedia, NodeAddr bidang tidak boleh menunjuk ke instans EC2 yang sedang berjalan. Sebaliknya, itu harus sama dengan nama node.
Status pekerjaan dan pengajuan
Pekerjaan yang dikirimkan dalam banyak kasus segera dialokasikan ke node dalam sistem, atau ditempatkan dalam penundaan jika semua node dialokasikan.
Jika node yang dialokasikan untuk pekerjaan menyertakan node apa pun dalam POWER_SAVING status, pekerjaan dimulai denganCF, atau CONFIGURING state. Pada saat ini, pekerjaan menunggu node dalam status untuk POWER_SAVING beralih ke POWER_UP status dan menjadi tersedia.
Setelah semua node yang dialokasikan untuk pekerjaan tersedia, pekerjaan memasuki RUNNING status (R).
Secara default, semua pekerjaan dikirimkan ke antrian default (dikenal sebagai partisi diSlurm). Ini ditandai dengan akhiran setelah * nama antrian. Anda dapat memilih antrian menggunakan opsi pengiriman -p pekerjaan.
Semua node dikonfigurasi dengan fitur berikut, yang dapat digunakan dalam perintah pengiriman pekerjaan:
-
Jenis instance (misalnya
c5.xlarge) -
Jenis simpul (Ini adalah salah satu
dynamicataustatic.)
Anda dapat melihat semua fitur yang tersedia untuk node tertentu dengan menggunakan scontrol show nodes
perintah dan memeriksa nodenameAvailableFeatures daftar.
Pertimbangan lain adalah pekerjaan. Pertama pertimbangkan keadaan awal cluster, yang dapat Anda lihat dengan menjalankan sinfo perintah.
$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELIST efa up infinite 4 idle~ efa-dy-c5n18xlarge-[1-4] efa up infinite 1 idle efa-st-c5n18xlarge-1 gpu up infinite 10 idle~ gpu-dy-g38xlarge-[1-10] ondemand up infinite 20 idle~ ondemand-dy-c52xlarge-[1-10],ondemand-dy-t2xlarge-[1-10] spot* up infinite 13 idle~ spot-dy-c5xlarge-[1-10],spot-dy-t2large-[1-3] spot* up infinite 2 idle spot-st-t2large-[1-2]
Perhatikan bahwa itu spot adalah antrian default. Hal ini ditunjukkan oleh akh * iran.
Mengirimkan pekerjaan ke satu node statis ke antrean default (spot).
$sbatch --wrap "sleep 300" -N 1 -C static
Kirim pekerjaan ke satu node dinamis ke an EFA trian.
$sbatch --wrap "sleep 300" -p efa -C dynamic
Kirim pekerjaan ke delapan (8) c5.2xlarge node dan dua (2) t2.xlarge node ke ondemand antrian.
$sbatch --wrap "sleep 300" -p ondemand -N 10 -C "[c5.2xlarge*8&t2.xlarge*2]"
Kirim pekerjaan ke satu node GPU ke gpu antrian.
$sbatch --wrap "sleep 300" -p gpu -G 1
Sekarang pertimbangkan keadaan pekerjaan menggunakan squeue perintah.
$squeueJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 12 ondemand wrap ubuntu CF 0:36 10 ondemand-dy-c52xlarge-[1-8],ondemand-dy-t2xlarge-[1-2] 13 gpu wrap ubuntu CF 0:05 1 gpu-dy-g38xlarge-1 7 spot wrap ubuntu R 2:48 1 spot-st-t2large-1 8 efa wrap ubuntu R 0:39 1 efa-dy-c5n18xlarge-1
Pekerjaan 7 dan 8 (dalam an efa trian spot dan) sudah berjalan (R). Jobs 12 dan 13 masih mengkonfigurasi (CF), mungkin menunggu instans tersedia.
# Nodes states corresponds to state of running jobs$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELIST efa up infinite 3 idle~ efa-dy-c5n18xlarge-[2-4] efa up infinite 1 mix efa-dy-c5n18xlarge-1 efa up infinite 1 idle efa-st-c5n18xlarge-1 gpu up infinite 1 mix~ gpu-dy-g38xlarge-1 gpu up infinite 9 idle~ gpu-dy-g38xlarge-[2-10] ondemand up infinite 10 mix# ondemand-dy-c52xlarge-[1-8],ondemand-dy-t2xlarge-[1-2] ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[9-10],ondemand-dy-t2xlarge-[3-10] spot* up infinite 13 idle~ spot-dy-c5xlarge-[1-10],spot-dy-t2large-[1-3] spot* up infinite 1 mix spot-st-t2large-1 spot* up infinite 1 idle spot-st-t2large-2
Status simpul dan fitur
Dalam kebanyakan kasus, status node dikelola sepenuhnya AWS ParallelCluster sesuai dengan proses spesifik dalam siklus hidup node cloud yang dijelaskan sebelumnya dalam topik ini.
Namun, AWS ParallelCluster juga mengganti atau menghentikan node yang tidak sehat di DOWN dan status dan DRAINED node yang memiliki instance pendukung yang tidak sehat. Untuk informasi selengkapnya, lihat clustermgtd.
Status partisi
AWS ParallelCluster mendukung status partisi berikut. SlurmPartisi adalah antrian dalam AWS ParallelCluster.
-
UP: Menunjukkan bahwa partisi dalam keadaan aktif. Ini adalah status default dari sebuah partisi. Dalam keadaan ini, semua node di partisi aktif dan tersedia untuk digunakan. -
INACTIVE: Menunjukkan bahwa partisi dalam keadaan tidak aktif. Dalam keadaan ini, semua instance yang mendukung node dari partisi tidak aktif dihentikan. Instans baru tidak diluncurkan untuk node dalam partisi tidak aktif.
pcluster mulai dan berhenti
Ketika pcluster stop dijalankan, semua partisi ditempatkan dalam INACTIVE status, dan AWS ParallelCluster proses menjaga partisi dalam INACTIVE status.
Ketika pcluster start dijalankan, semua partisi awalnya ditempatkan di UP negara bagian. Namun, AWS ParallelCluster proses tidak menjaga partisi dalam UP keadaan. Anda perlu mengubah status partisi secara manual. Semua node statis tersedia setelah beberapa menit. Perhatikan bahwa menyetel partisi ke UP tidak menyalakan kapasitas dinamis apa pun. Jika initial_count lebih besar darimax_count, maka initial_count mungkin tidak terpenuhi ketika status partisi diubah menjadi UP status.
Saat pcluster start dan pcluster stop sedang berjalan, Anda dapat memeriksa keadaan cluster dengan menjalankan pcluster status perintah dan memeriksaComputeFleetStatus. Berikut daftar kemungkinan status:
-
STOP_REQUESTED: pcluster stop Permintaan dikirim ke cluster. -
STOPPING:pclusterProses saat ini menghentikan cluster. -
STOPPED: Prosespclustermenyelesaikan proses penghentian, semua partisi dalamINACTIVEkeadaan, dan semua instance komputasi dihentikan. -
START_REQUESTED: pcluster start Permintaan dikirim ke cluster. -
STARTING:pclusterProses saat ini sedang memulai cluster -
RUNNING:pclusterProses menyelesaikan proses awal, semua partisi dalamUPkeadaan, dan node statis akan tersedia setelah beberapa menit.
Kontrol manual pada antrian
Dalam beberapa kasus, Anda mungkin ingin memiliki beberapa kontrol manual atas node atau antrian (dikenal sebagai partisi diSlurm) dalam cluster. Anda dapat mengelola node dalam cluster melalui prosedur umum berikut.
-
Nyalakan node dinamis dalam
POWER_SAVINGstatus: Jscontrol update nodename=alankan perintah atau kirimkannodenamestate=power_upsleep 1pekerjaan placeholder yang meminta sejumlah node tertentu dan andalkan Slurm untuk menyalakan jumlah node yang diperlukan. -
Matikan node dinamis sebelumnyascaledown_idletime: Atur node dinamis ke
DOWNdenganscontrol update nodename=perintah. AWS ParallelCluster secara otomatis mengakhiri dan mengatur ulang node dinamis yang diturunkan. Secara umum, kami tidak merekomendasikan pengaturan node untuknodenamestate=downPOWER_DOWNlangsung menggunakanscontrol update nodename=perintah. Ini karena AWS ParallelCluster secara otomatis menangani proses pemadaman daya. Tidak diperlukan intervensi manual. Oleh karena itu, kami sarankan Anda mencoba mengatur node kenodenamestate=power_downDOWNbila memungkinkan. -
Nonaktifkan antrian (partisi) atau hentikan semua node statis di partisi tertentu: Atur antrian spesifik
INACTIVEdenganscontrol update partition=perintah. Melakukan hal ini mengakhiri semua instance yang mendukung node di partisi.queue namestate=inactive -
Aktifkan antrian (partisi): Atur antrian spesifik
INACTIVEdenganscontrol update partition=perintah.queue namestate=up
Perilaku dan penyesuaian penskalaan
Berikut adalah contoh alur kerja penskalaan normal:
-
Penjadwal menerima pekerjaan yang membutuhkan dua node.
-
Penjadwal mentransisi dua node ke
POWER_UPstatus, dan memangResumeProgramgil dengan nama node (misalnyaqueue1-dy-c5xlarge-[1-2]). -
ResumeProgrammeluncurkan dua instance EC2 dan menetapkan alamat IP pribadi dan nama hostqueue1-dy-c5xlarge-[1-2], menungguResumeTimeout(periode default adalah 60 menit (1 jam)) sebelum mengatur ulang node. -
Instans dikonfigurasi dan bergabung dengan cluster. Pekerjaan mulai berjalan pada instance.
-
Pekerjaan sudah selesai.
-
Setelah konfigurasi
SuspendTimetelah berlalu (yang disetel kescaledown_idletime), instance dimasukkan ke dalamPOWER_SAVINGstatus oleh penjadwal. Penjadwal menempatkanqueue1-dy-c5xlarge-[1-2]kePOWER_DOWNstatus dan memanggilSuspendProgramdengan nama node. -
SuspendProgramdisebut untuk dua node. Node tetap dalamPOWER_DOWNkeadaan, misalnya, dengan tetapidle%selamaSuspendTimeout(periode default adalah 120 detik (2 menit)). Setelahclustermgtdmendeteksi bahwa node dimatikan, itu mengakhiri instance pendukung. Kemudian, ia mengonfigurasiqueue1-dy-c5xlarge-[1-2]ke keadaan idle dan mengatur ulang alamat IP pribadi dan nama host sehingga mereka dapat dinyalakan untuk pekerjaan di masa mendatang lagi.
Sekarang, jika terjadi kesalahan dan instance untuk node tertentu tidak dapat diluncurkan karena alasan tertentu, maka hal berikut terjadi.
-
Scheduler menerima pekerjaan yang membutuhkan dua node.
-
Scheduler menempatkan dua cloud bursting node ke
POWER_UPstatus dan memanggilResumeProgramdengan nama node, (misalnya).queue1-dy-c5xlarge-[1-2] -
ResumeProgramhanya meluncurkan satu (1) instans EC2 dan mengonfigurqueue1-dy-c5xlarge-1asi, tetapi gagal meluncurkan instance untuk.queue1-dy-c5xlarge-2 -
queue1-dy-c5xlarge-1tidak akan terpengaruh dan akan online setelah mencapaiPOWER_UPnegara bagian. -
queue1-dy-c5xlarge-2ditempatkan dalamPOWER_DOWNstatus, dan pekerjaan diminta secara otomatis karena Slurm mendeteksi kegagalan node. -
queue1-dy-c5xlarge-2menjadi tersedia setelahSuspendTimeout(defaultnya adalah 120 detik (2 menit)). Sementara itu, pekerjaan diperlukan dan dapat mulai berjalan di node lain. -
Proses di atas diulang sampai pekerjaan dapat berjalan pada node yang tersedia tanpa kegagalan terjadi.
Ada dua parameter waktu yang dapat disesuaikan jika diperlukan.
-
ResumeTimeout(default Slurm nya adalah 60 menit (1 jam)):ResumeTimeoutmengontrol waktu menunggu sebelum menempatkan node ke status down.-
Mungkin berguna untuk memperpanjang ini jika proses pre/post instalasi Anda memakan waktu hampir selama itu.
-
Ini juga merupakan waktu maksimum yang AWS ParallelCluster menunggu sebelum mengganti atau mengatur ulang node jika ada masalah. Node komputasi dihentikan sendiri jika terjadi kesalahan selama peluncuran atau penyiapan. Selanjutnya, AWS ParallelCluster proses juga menggantikan node ketika melihat bahwa instance dihentikan.
-
-
SuspendTimeout(defaultnya adalah 120 detik (2 menit)):SuspendTimeoutmengontrol seberapa cepat node ditempatkan kembali ke sistem dan siap digunakan lagi.-
Yang lebih pendek
SuspendTimeoutberarti bahwa node akan diatur ulang lebih cepat, dan Slurm dapat mencoba meluncurkan instance lebih sering. -
Yang lebih lama
SuspendTimeoutmembuat node yang gagal diatur ulang lebih lambat. Sementara itu, Slurm ban menggunakan node lain. JikaSuspendTimeoutlebih dari beberapa menit, Slurm coba putar melalui semua node dalam sistem. Lebih lamaSuspendTimeoutmungkin bermanfaat bagi sistem skala besar (lebih dari 1.000 node) untuk mengurangi stres Slurm dengan sering mengantri ulang pekerjaan yang gagal. -
Perhatikan bahwa itu
SuspendTimeouttidak mengacu pada waktu AWS ParallelCluster menunggu untuk menghentikan instance pendukung untuk node. Instans pendukung untukpower downnode segera dihentikan. Proses penghentian biasanya selesai beberapa menit. Namun, selama waktu ini, node tetap dalam keadaan mati dan tidak tersedia untuk digunakan di penjadwal.
-
Log untuk arsitektur baru
Lit berikut berisi log kunci untuk arsitektur antrian ganda. Nama aliran log yang digunakan dengan Amazon CloudWatch Logs memiliki format, di mana {hostname}.{instance_id}.{logIdentifier}logIdentifier mengikuti nama log. Untuk informasi selengkapnya, lihat Integrasi dengan Amazon CloudWatch Logs.
-
ResumeProgram:/var/log/parallelcluster/slurm_resume.log(slurm_resume) -
SuspendProgram:/var/log/parallelcluster/slurm_suspend.log(slurm_suspend) -
clustermgtd:/var/log/parallelcluster/clustermgtd.log(clustermgtd) -
computemgtd:/var/log/parallelcluster/computemgtd.log(computemgtd) -
slurmctld:/var/log/slurmctld.log(slurmctld) -
slurmd:/var/log/slurmd.log(slurmd)
Masalah umum dan cara men-debug:
Node yang gagal meluncurkan, menghidupkan, atau bergabung dengan cluster:
-
Node dinamis:
-
Periksa
ResumeProgramlog untuk melihat apakah pernahResumeProgramdipanggil dengan node. Jika tidak, periksaslurmctldlog untuk menentukan apakah Slurm pernah mencoba menelepResumeProgramon dengan node. Perhatikan bahwa izin yang salah dapatResumeProgrammenyebabkannya gagal secara diam-diam. -
Jika
ResumeProgramdipanggil, periksa untuk melihat apakah sebuah instance diluncurkan untuk node. Jika instance tidak dapat diluncurkan, harus ada pesan kesalahan yang jelas mengapa instance gagal diluncurkan. -
Jika sebuah instance diluncurkan, mungkin ada beberapa masalah selama proses bootstrap. Temukan alamat IP pribadi dan ID instance yang sesuai dari
ResumeProgramlog dan lihat log bootstrap yang sesuai untuk instance tertentu di CloudWatch Log.
-
-
Node statis:
-
Periksa
clustermgtdlog untuk melihat apakah instance diluncurkan untuk node. Jika tidak, harus ada kesalahan yang jelas tentang mengapa instance gagal diluncurkan. -
Jika sebuah instance diluncurkan, ada beberapa masalah selama proses bootstrap. Temukan IP pribadi dan ID instance yang sesuai dari
clustermgtdlog dan lihat log bootstrap yang sesuai untuk instance tertentu di CloudWatch Log.
-
Node diganti atau dihentikan secara tidak terduga, kegagalan node
-
Node secara replaced/terminated tak terduga
-
Dalam kebanyakan kasus,
clustermgtdmenangani semua tindakan pemeliharaan node. Untuk memeriksa apakah nodeclustermgtddiganti atau dihentikan, periksaclustermgtdlog. -
Jika
clustermgtddiganti atau dihentikan node, harus ada pesan yang menunjukkan alasan tindakan. Jika alasannya terkait penjadwal (misalnya, simpul ituDOWN), periksaslurmctldlog untuk detail lebih lanjut. Jika alasannya terkait EC2, gunakan alat untuk memeriksa status atau log untuk contoh itu. Misalnya, Anda dapat memeriksa apakah instans memiliki kejadian terjadwal atau pemeriksaan status kesehatan EC2 yang gagal. -
Jika
clustermgtdtidak menghentikan node, periksa apakah nodecomputemgtddihentikan atau apakah EC2 menghentikan instance untuk merebut kembali Instans Spot.
-
-
Kegagalan simpul
-
Dalam kebanyakan kasus, pekerjaan secara otomatis diminta jika node gagal. Lihat di
slurmctldlog untuk melihat mengapa pekerjaan atau node gagal dan analisis situasi dari sana.
-
Kegagalan saat mengganti atau mengakhiri instance, kegagalan saat mematikan node
-
Secara umum,
clustermgtdmenangani semua tindakan penghentian instans yang diharapkan. Lihat diclustermgtdlog untuk melihat mengapa gagal mengganti atau menghentikan node. -
Untuk node dinamis gagalscaledown_idletime, lihat di
SuspendProgramlog untuk melihat apakah sebuah programslurmctldmenggunakan node tertentu sebagai argumen. Catatan sebenarnyaSuspendProgramtidak melakukan tindakan spesifik apa pun. Sebaliknya, itu hanya mencatat ketika dipanggil. Semua penghentian danNodeAddrpengaturan ulang instance diselesaikan olehclustermgtd. Slurmmenempatkan node ke setIDLEelahnyaSuspendTimeout.
Masalah lainnya
-
AWS ParallelCluster tidak membuat alokasi pekerjaan atau keputusan penskalaan. Ini sederhana mencoba untuk meluncurkan, menghentikan, dan memelihara sumber daya sesuai Slurm dengan instruksi.
Untuk masalah mengenai alokasi pekerjaan, alokasi node, dan keputusan penskalaan, lihat
slurmctldlog untuk kesalahan.