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
Di sini Anda dapat mempelajari cara AWS ParallelCluster dan Slurm mengelola node antrian (partisi) dan bagaimana Anda dapat memantau status antrian dan node.
Gambaran umum
Arsitektur penskalaan 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 instans 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.sinfoSebuah node secara otomatis bertransisi kePOWER_UPstatus, ketika Slurm mengalokasikan pekerjaan ke node dalam keadaanPOWER_SAVING.Atau, Anda dapat mentransisikan node ke
POWER_UPstatus secara manual sebagai penggunasuroot dengan perintah:$scontrol update nodename=nodenamestate=power_upPada tahap ini,
ResumeProgramdipanggil, instance EC2 diluncurkan dan dikonfigurasi, dan transisi node kePOWER_UPstatus. -
Node yang saat ini tersedia untuk digunakan muncul tanpa akhiran (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 instans Amazon EC2 sama dengan jumlah node yang tersedia. Dalam kebanyakan kasus, node statis tersedia setelah cluster dibuat.
-
Sebuah node yang sedang bertransisi ke
POWER_DOWNstatus muncul dengan akh%iran (misalnyaidle%) di.sinfoNode dinamis secara otomatis memasukiPOWER_DOWNstatus setelahnya ScaledownIdletime. Sebaliknya, node statis dalam banyak kasus tidak dimatikan. Namun, Anda dapat menempatkan node dalamPOWER_DOWNstatus secara manual sebagai penggunasuroot dengan perintah:$scontrol update nodename=nodenamestate=down reason="manual draining"Dalam keadaan ini, instance yang terkait dengan node dihentikan, dan node diatur kembali ke
POWER_SAVINGstatus dan tersedia untuk digunakan setelahnya ScaledownIdletime.Peng ScaledownIdletime aturan disimpan ke
SuspendTimeoutpengaturan Slurm konfigurasi. -
Node yang offline muncul dengan akh
*iran (misalnyadown*) disinfo. Node menjadi offline jika peng Slurm ontrol tidak dapat menghubungi node atau jika node statis dinonaktifkan dan instance pendukung dihentikan.
Pertimbangkan status node yang ditunjukkan dalam sinfo contoh berikut.
$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELIST efa up infinite 4 idle~ efa-dy-efacompute1-[1-4] efa up infinite 1 idle efa-st-efacompute1-1 gpu up infinite 1 idle% gpu-dy-gpucompute1-1 gpu up infinite 9 idle~ gpu-dy-gpucompute1-[2-10] ondemand up infinite 2 mix# ondemand-dy-ondemandcompute1-[1-2] ondemand up infinite 18 idle~ ondemand-dy-ondemandcompute1-[3-10],ondemand-dy-ondemandcompute2-[1-10] spot* up infinite 13 idle~ spot-dy-spotcompute1-[1-10],spot-dy-spotcompute2-[1-3] spot* up infinite 2 idle spot-st-spotcompute2-[1-2]
efa-st-efacompute1-1N spot-st-spotcompute2-[1-2] ode dan sudah memiliki instans cadangan yang disiapkan dan tersedia untuk digunakan. N ondemand-dy-ondemandcompute1-[1-2] ode berada dalam POWER_UP keadaan dan harus tersedia dalam beberapa menit. N gpu-dy-gpucompute1-1 ode berada dalam POWER_DOWN keadaan, dan transisi ke POWER_SAVING status setelahnya ScaledownIdletime (default ke 10 menit).
Semua node lain dalam POWER_SAVING keadaan tanpa instans EC2 yang mendukungnya.
Bekerja dengan node yang tersedia
Node yang tersedia didukung oleh instans Amazon EC2. Secara default, nama node dapat digunakan untuk langsung SSH ke instance (misalnyassh
efa-st-efacompute1-1). Alamat IP pribadi dari instance dapat diambil menggunakan perintah:
$scontrol show nodesnodename
Periksa alamat IP di NodeAddr bidang yang dikembalikan.
Untuk node yang tidak tersedia, NodeAddr bidang tidak boleh menunjuk ke instans Amazon 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 transisi ke POWER_UP status dan menjadi tersedia. POWER_SAVING
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 fitur untuk node tertentu dengan menggunakan perintah:
$scontrol show nodesnodename
Sebagai gantinya, periksa AvailableFeatures daftarnya.
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-efacompute1-[1-4] efa up infinite 1 idle efa-st-efacompute1-1 gpu up infinite 10 idle~ gpu-dy-gpucompute1-[1-10] ondemand up infinite 20 idle~ ondemand-dy-ondemandcompute1-[1-10],ondemand-dy-ondemandcompute2-[1-10] spot* up infinite 13 idle~ spot-dy-spotcompute1-[1-10],spot-dy-spotcompute2-[1-3] spot* up infinite 2 idle spot-st-spotcompute2-[1-2]
Perhatikan bahwa itu spot adalah antrian default. Hal ini ditunjukkan oleh akh * iran.
Mengirimkan pekerjaan ke satu node statis dalam antrean default (spot).
$sbatch --wrap"sleep 300"-N1-Cstatic
Kirim pekerjaan ke satu node dinamis dalam an EFA trian.
$sbatch --wrap"sleep 300"-pefa-Cdynamic
Kirim pekerjaan ke delapan (8) c5.2xlarge node dan dua (2) t2.xlarge node dalam ondemand antrian.
$sbatch --wrap"sleep 300"-pondemand-N10-C "[c5.2xlarge*8&t2.xlarge*2]"
Kirim pekerjaan ke satu node GPU dalam gpu antrian.
$sbatch --wrap"sleep 300"-pgpu-G1
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-ondemandcompute1-[1-8],ondemand-dy-ondemandcompute2-[1-2] 13 gpu wrap ubuntu CF 0:05 1 gpu-dy-gpucompute1-1 7 spot wrap ubuntu R 2:48 1 spot-st-spotcompute2-1 8 efa wrap ubuntu R 0:39 1 efa-dy-efacompute1-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-efacompute1-[2-4] efa up infinite 1 mix efa-dy-efacompute1-1 efa up infinite 1 idle efa-st-efacompute1-1 gpu up infinite 1 mix~ gpu-dy-gpucompute1-1 gpu up infinite 9 idle~ gpu-dy-gpucompute1-[2-10] ondemand up infinite 10 mix# ondemand-dy-ondemandcompute1-[1-8],ondemand-dy-ondemandcompute2-[1-2] ondemand up infinite 10 idle~ ondemand-dy-ondemandcompute1-[9-10],ondemand-dy-ondemandcompute2-[3-10] spot* up infinite 13 idle~ spot-dy-spotcompute1-[1-10],spot-dy-spotcompute2-[1-3] spot* up infinite 1 mix spot-st-spotcompute2-1 spot* up infinite 1 idle spot-st-spotcompute2-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.
armada pembaruan-komputasi pcluster
-
Menghentikan armada kom putasi - Ketika perintah berikut dijalankan, semua partisi beralih ke
INACTIVEstatus, dan AWS ParallelCluster proses menjaga partisi tetap dalamINACTIVEstatus.$pcluster update-compute-fleet --cluster-nametestSlurm\ --regioneu-west-1--status STOP_REQUESTED -
Memulai armada komput asi - Ketika perintah berikut dijalankan, semua partisi awalnya beralih ke
UPstatus. Namun, AWS ParallelCluster proses tidak menjaga partisi dalamUPkeadaan. Anda perlu mengubah status partisi secara manual. Semua node statis tersedia setelah beberapa menit. Perhatikan bahwa mengatur partisi keUPtidak menyalakan kapasitas dinamis apa pun.$pcluster update-compute-fleet --cluster-nametestSlurm\ --regioneu-west-1--status START_REQUESTED
Ketika update-compute-fleet dijalankan, Anda dapat memeriksa keadaan cluster dengan menjalankan pcluster describe-compute-fleet perintah dan memeriksaStatus. Berikut daftar kemungkinan status:
-
STOP_REQUESTED: Permintaan armada penghentian komputasi dikirim ke cluster. -
STOPPING:pclusterProses saat ini menghentikan armada komputasi. -
STOPPED: Prosespclustermenyelesaikan proses penghentian, semua partisi dalamINACTIVEkeadaan, dan semua instance komputasi dihentikan. -
START_REQUESTED: Permintaan armada komputasi awal dikirim ke cluster. -
STARTING:pclusterProses saat ini sedang memulai cluster. -
RUNNING:pclusterProses menyelesaikan proses awal, semua partisi dalamUPkeadaan, dan node statis tersedia setelah beberapa menit. -
PROTECTED: Status ini menunjukkan bahwa beberapa partisi memiliki kegagalan bootstrap yang konsisten. Partisi yang terkena dampak tidak aktif. Silakan selidiki masalah ini dan kemudian jalankanupdate-compute-fleetuntuk mengaktifkan kembali armada.
Kontrol antrian secara manual
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 menggunakan scontrol perintah.
-
Nyalakan node dinamis dalam
POWER_SAVINGstatusJalankan perintah sebagai pengguna
suroot:$scontrol update nodename=nodenamestate=power_upAnda juga dapat mengirimkan
sleep 1pekerjaan placeholder yang meminta sejumlah node dan kemudian mengandalkan Slurm untuk meningkatkan jumlah node yang diperlukan. -
Matikan node dinamis sebelumnya ScaledownIdletime
Kami menyarankan Anda mengatur node dinamis
DOWNsebagai penggunasuroot dengan perintah:$scontrol update nodename=nodenamestate=down reason="manually draining"AWS ParallelCluster secara otomatis mengakhiri dan mengatur ulang node dinamis yang diturunkan.
Secara umum, kami tidak menyarankan Anda mengatur node untuk
POWER_DOWNlangsung menggunakanscontrol update nodename=perintah. Ini karena AWS ParallelCluster secara otomatis menangani proses power down.nodenamestate=power_down -
Nonaktifkan antrian (partisi) atau hentikan semua node statis di partisi tertentu
Tetapkan antrian tertentu
INACTIVEsebagai penggunasuroot dengan perintah:$scontrol update partition=queuenamestate=inactiveMelakukan hal ini mengakhiri semua instance yang mendukung node di partisi.
-
Aktifkan antrian (partisi)
Tetapkan antrian tertentu ke
UPpenggunasuroot dengan perintah:$scontrol update partition=queuenamestate=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-spotcompute1-[1-2]). -
ResumeProgrammeluncurkan dua instans Amazon EC2 dan menetapkan alamat IP pribadi dan nama host dariqueue1-dy-spotcompute1-[1-2], menungguResumeTimeout(periode default adalah 30 menit sebelum mengatur ulang node. -
Instans dikonfigurasi dan bergabung dengan cluster. Pekerjaan mulai berjalan pada instance.
-
Pekerjaan selesai dan berhenti berjalan.
-
Setelah konfigurasi
SuspendTimetelah berlalu (yang disetel ke ScaledownIdletime), penjadwal menetapkan instance kePOWER_SAVINGstatus. Penjadwal kemudian mengaturqueue1-dy-spotcompute1-[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 mati, itu mengakhiri instance pendukung. Kemudian, ia beralihqueue1-dy-spotcompute1-[1-2]ke status idle dan mengatur ulang alamat IP pribadi dan nama host sehingga siap untuk dinyalakan untuk pekerjaan di masa mendatang.
Jika terjadi kesalahan dan instance untuk node tertentu tidak dapat diluncurkan karena alasan tertentu, maka hal berikut terjadi:
-
Penjadwal menerima pekerjaan yang membutuhkan dua node.
-
Penjadwal mentransisi dua node cloud bursting ke
POWER_UPstatus dan memanggilResumeProgramdengan nama simpul, (misalnya).queue1-dy-spotcompute1-[1-2] -
ResumeProgramhanya meluncurkan satu (1) instans Amazon EC2 dan mengonfigurasiqueue1-dy-spotcompute1-1, dengan satu (1) instansqueue1-dy-spotcompute1-2, gagal diluncurkan. -
queue1-dy-spotcompute1-1tidak terpengaruh dan online setelah mencapaiPOWER_UPnegara bagian. -
queue1-dy-spotcompute1-2transisi kePOWER_DOWNstatus, dan pekerjaan diminta secara otomatis karena Slurm mendeteksi kegagalan node. -
queue1-dy-spotcompute1-2menjadi tersedia setelahSuspendTimeout(defaultnya adalah 120 detik (2 menit)). Sementara itu, pekerjaan diperlukan dan dapat mulai berjalan di node lain. -
Proses di atas berulang 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 30 menit):ResumeTimeoutmengontrol waktu tunggu sebelum mentransisikan node ke status down.-
Mungkin berguna untuk memperpanjang
ResumeTimeoutjika proses pre/post instalasi Anda memakan waktu hampir selama itu. -
ResumeTimeoutjuga 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. AWS ParallelCluster proses menggantikan node setelah deteksi instance yang dihentikan.
-
-
SuspendTimeout(defaultnya adalah 120 detik (2 menit)):SuspendTimeoutmengontrol seberapa cepat node ditempatkan kembali ke sistem dan siap digunakan lagi.-
Yang lebih pendek
SuspendTimeoutberarti node diatur ulang lebih cepat, dan Slurm dapat mencoba meluncurkan instance lebih sering. -
Lebih lama
SuspendTimeoutberarti node yang gagal diatur ulang lebih lambat. Sementara itu, Slurm coba gunakan node lain. JikaSuspendTimeoutlebih dari beberapa menit, Slurm coba putar melalui semua node dalam sistem. Yang lebih lamaSuspendTimeoutmungkin bermanfaat bagi sistem skala besar (lebih dari 1.000 node) untuk mengurangi tekanan Slurm ketika mencoba untuk sering mengantri ulang pekerjaan yang gagal. -
Perhatikan bahwa
SuspendTimeoutitu tidak mengacu pada waktu AWS ParallelCluster menunggu untuk mengakhiri instance pendukung untuk node. Instans pendukung untukPOWER_DOWNnode segera dihentikan. Proses penghentian biasanya selesai dalam beberapa menit. Namun, selama waktu ini, node tetap dalamPOWER_DOWNstatus dan tidak tersedia untuk penggunaan penjadwal.
-
Log untuk arsitektur
Daftar berikut berisi log kunci. Nama aliran log yang digunakan dengan Amazon CloudWatch Logs memiliki format, di mana {hostname}.{instance_id}.{logIdentifier}logIdentifier mengikuti nama log.
-
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 apakahResumeProgramdipanggil dengan node. Jika tidak, periksaslurmctldlog untuk menentukan apakah Slurm 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 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 instance tidak diluncurkan, harus ada kesalahan yang jelas tentang mengapa instance gagal diluncurkan. -
Jika sebuah instance diluncurkan, ada beberapa masalah dengan 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, dan kegagalan node
-
Node replaced/terminated secara 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 Amazon EC2, gunakan alat seperti Amazon CloudWatch atau konsol Amazon EC2, CLI, atau SDK, untuk memeriksa status atau log untuk contoh tersebut. Misalnya, Anda dapat memeriksa apakah instans memiliki kejadian yang dijadwalkan atau gagal dalam pemeriksaan status kesehatan Amazon EC2. -
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 menilai 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 ScaledownIdletime yang gagal, lihat di
SuspendProgramlog untuk melihat apakahslurmctldproses melakukan panggilan dengan node tertentu sebagai argumen. Catatan sebenarnyaSuspendProgramtidak melakukan tindakan tertentu. Sebaliknya, itu hanya mencatat ketika dipanggil. Semua penghentian danNodeAddrpengaturan ulang instance diselesaikan olehclustermgtd. Slurmtransisi node ke setIDLEelahnyaSuspendTimeout.
Masalah lainnya:
-
AWS ParallelCluster tidak membuat alokasi pekerjaan atau keputusan penskalaan. Itu hanya mencoba meluncurkan, menghentikan, dan memelihara sumber daya sesuai Slurm dengan instruksi.
Untuk masalah mengenai alokasi pekerjaan, alokasi node, dan keputusan penskalaan, lihat
slurmctldlog untuk kesalahan.