Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Slurm panduan untuk beberapa mode antrian
Di sini Anda dapat mempelajari bagaimana AWS ParallelCluster dan Slurm mengelola node antrian (partisi) dan bagaimana Anda dapat memantau status antrian dan node.
Gambaran Umum
Arsitektur penskalaan didasarkan pada SlurmPanduan Penjadwalan Cloud
Siklus hidup simpul awan
Sepanjang siklus hidupnya, node cloud memasukkan beberapa jika tidak semua status berikut:POWER_SAVING, POWER_UP (pow_up), (), dan ALLOCATED POWER_DOWN (allocpow_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~akhiran (misalnyaidle~) disinfo. Dalam keadaan ini, tidak ada EC2 instance yang mendukung node. Namun, Slurm masih dapat mengalokasikan pekerjaan ke node. -
Sebuah simpul yang beralih ke
POWER_UPstatus muncul dengan#akhiran (misalnyaidle#) di.sinfoSebuah node secara otomatis bertransisi kePOWER_UPkeadaan, ketika Slurm mengalokasikan pekerjaan ke node dalam keadaan.POWER_SAVINGAtau, Anda dapat mentransisikan node ke
POWER_UPstatus secara manual sebagai penggunasuroot dengan perintah:$scontrol update nodename=nodenamestate=power_upPada tahap ini,
ResumeProgramdipanggil, EC2 instance diluncurkan dan dikonfigurasi, dan node transisi ke status.POWER_UP -
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 merekomendasikan bahwa jumlah EC2 instans Amazon sama dengan jumlah node yang tersedia. Dalam kebanyakan kasus, node statis tersedia setelah cluster dibuat.
-
Node yang bertransisi ke
POWER_DOWNstatus muncul dengan%akhiran (misalnyaidle%) di.sinfoNode dinamis secara otomatis memasukiPOWER_DOWNstatus setelahnya ScaledownIdletime. Sebaliknya, node statis dalam banyak kasus tidak dimatikan. Namun, Anda dapat menempatkan node dalamPOWER_DOWNkeadaan 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. ScaledownIdletimeScaledownIdletimePengaturan disimpan ke Slurm
SuspendTimeoutpengaturan konfigurasi. -
Node yang offline muncul dengan
*akhiran (misalnyadown*) disinfo. Sebuah node offline jika Slurm controller tidak dapat menghubungi node atau jika node statis dinonaktifkan dan instance dukungan dihentikan.
Pertimbangkan status simpul yang ditunjukkan pada 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-1Node spot-st-spotcompute2-[1-2] dan sudah memiliki instance pendukung yang disiapkan dan tersedia untuk digunakan. ondemand-dy-ondemandcompute1-[1-2]Node berada dalam POWER_UP keadaan dan harus tersedia dalam beberapa menit. gpu-dy-gpucompute1-1Node dalam POWER_DOWN keadaan, dan transisi ke POWER_SAVING keadaan setelah ScaledownIdletime(default ke 10 menit).
Semua node lain dalam POWER_SAVING keadaan tanpa EC2 instance yang mendukungnya.
Bekerja dengan node yang tersedia
Node yang tersedia didukung oleh EC2 instance Amazon. 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 mengarah ke EC2 instance Amazon yang sedang berjalan. Sebaliknya, itu harus sama dengan nama node.
Status pekerjaan dan pengajuan
Pekerjaan yang diajukan dalam banyak kasus segera dialokasikan ke node dalam sistem, atau ditempatkan di pending jika semua node dialokasikan.
Jika node yang dialokasikan untuk pekerjaan menyertakan node apa pun dalam suatu POWER_SAVING keadaan, pekerjaan dimulai denganCF, atau CONFIGURING status. Pada saat ini, pekerjaan menunggu node di POWER_SAVING negara bagian untuk beralih ke negara POWER_UP bagian dan menjadi tersedia.
Setelah semua node yang dialokasikan untuk pekerjaan tersedia, pekerjaan memasuki status RUNNING (R).
Secara default, semua pekerjaan dikirimkan ke antrian default (dikenal sebagai partisi di Slurm). 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:
-
Tipe instance (misalnya
c5.xlarge) -
Tipe 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 status 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 spot adalah antrian default. Hal ini ditunjukkan oleh * sufiks.
Kirim pekerjaan ke satu node statis dalam antrian default (spot).
$sbatch --wrap"sleep 300"-N1-Cstatic
Kirim pekerjaan ke satu node dinamis dalam EFA antrian.
$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 spot dan efa antrian) sudah berjalan (R). Pekerjaan 12 dan 13 masih mengkonfigurasi (CF), mungkin menunggu instance 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 dan fitur simpul
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 menggantikan atau mengakhiri node yang tidak sehat di DOWN dan DRAINED status dan node yang memiliki instance dukungan yang tidak sehat. Untuk informasi selengkapnya, lihat clustermgtd.
Status partisi
AWS ParallelCluster mendukung status partisi berikut. A Slurm partisi adalah antrian di AWS ParallelCluster.
-
UP: Menunjukkan bahwa partisi dalam keadaan aktif. Ini adalah keadaan default 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 backing node dari partisi yang tidak aktif dihentikan. Instance baru tidak diluncurkan untuk node di partisi yang tidak aktif.
pcluster update-compute-fleet
-
Menghentikan armada komputasi - Ketika perintah berikut dijalankan, semua partisi beralih ke
INACTIVEstatus, dan AWS ParallelCluster proses menjaga partisi dalam keadaan.INACTIVE$pcluster update-compute-fleet --cluster-nametestSlurm\ --regioneu-west-1--status STOP_REQUESTED -
Memulai armada komputasi - Ketika perintah berikut dijalankan, semua partisi awalnya beralih ke negara.
UPNamun, AWS ParallelCluster proses tidak menjaga partisi dalamUPkeadaan. Anda perlu mengubah status partisi secara manual. Semua node statis menjadi tersedia setelah beberapa menit. Perhatikan bahwa menyetel 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 status cluster dengan menjalankan pcluster describe-compute-fleet perintah dan memeriksaStatus. Berikut daftar kemungkinan status:
-
STOP_REQUESTED: Permintaan armada stop compute dikirim ke cluster. -
STOPPING:pclusterProses saat ini menghentikan armada komputasi. -
STOPPED:pclusterProses menyelesaikan proses penghentian, semua partisi dalamINACTIVEkeadaan, dan semua instance komputasi dihentikan. -
START_REQUESTED: Permintaan armada komputasi awal dikirim ke cluster. -
STARTING:pclusterProses saat ini 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 terpengaruh 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 di Slurm) dalam sebuah cluster. Anda dapat mengelola node dalam cluster melalui prosedur umum berikut menggunakan scontrol perintah.
-
Nyalakan node dinamis dalam
POWER_SAVINGkeadaanJalankan 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 me-reset node dinamis yang jatuh.
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 untuk
INACTIVEsebagai penggunasuroot dengan perintah:$scontrol update partition=queuenamestate=inactiveMelakukan hal ini mengakhiri semua instance backing 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 mentransisikan dua node ke
POWER_UPstatus, dan memanggilResumeProgramdengan nama node (misalnyaqueue1-dy-spotcompute1-[1-2]). -
ResumeProgrammeluncurkan dua EC2 instance Amazon 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. Sebuah pekerjaan mulai berjalan pada instance.
-
Pekerjaan selesai dan berhenti berjalan.
-
Setelah konfigurasi
SuspendTimetelah berlalu (yang diatur ke ScaledownIdletime), penjadwal menyetel instance ke status.POWER_SAVINGScheduler kemudian menetapkanqueue1-dy-spotcompute1-[1-2]kePOWER_DOWNstatus dan memanggilSuspendProgramdengan nama node. -
SuspendProgramdisebut untuk dua node. Node tetap dalamPOWER_DOWNkeadaan, misalnya, dengan tetapidle%selama aSuspendTimeout(periode default adalah 120 detik (2 menit)). Setelahclustermgtdmendeteksi bahwa node dimatikan, itu mengakhiri instance dukungan. Kemudian, transisiqueue1-dy-spotcompute1-[1-2]ke keadaan idle dan me-reset alamat IP pribadi dan nama host sehingga siap untuk power up untuk pekerjaan masa depan.
Jika ada yang salah dan instance untuk node tertentu tidak dapat diluncurkan karena alasan tertentu, maka hal berikut terjadi:
-
Penjadwal menerima pekerjaan yang membutuhkan dua node.
-
Penjadwal mentransisikan dua node cloud bursting ke
POWER_UPstatus dan memanggilResumeProgramdengan nama node, (misalnya).queue1-dy-spotcompute1-[1-2] -
ResumeProgrammeluncurkan hanya satu (1) EC2 instans Amazon dan mengonfigurasiqueue1-dy-spotcompute1-1, dengan satu (1) instancequeue1-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 ulang secara otomatis karena Slurm mendeteksi kegagalan node. -
queue1-dy-spotcompute1-2menjadi tersedia setelahSuspendTimeout(defaultnya adalah 120 detik (2 menit)). Sementara itu, pekerjaan tersebut diminta ulang dan dapat mulai berjalan di node lain. -
Proses di atas berulang sampai pekerjaan dapat berjalan pada node yang tersedia tanpa terjadi kegagalan.
Ada dua parameter waktu yang dapat disesuaikan jika diperlukan:
-
ResumeTimeout(defaultnya adalah 30 menit):ResumeTimeoutmengontrol waktu Slurm menunggu sebelum transisi node ke keadaan turun.-
Mungkin berguna untuk memperpanjang
ResumeTimeoutjika proses instalasi pra/pasca Anda memakan waktu hampir selama itu. -
ResumeTimeoutjuga merupakan waktu maksimum yang AWS ParallelCluster menunggu sebelum mengganti atau mengatur ulang node jika ada masalah. Menghitung node berhenti sendiri jika ada kesalahan yang terjadi selama peluncuran atau penyiapan. AWS ParallelCluster proses menggantikan node pada 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. -
Yang lebih lama
SuspendTimeoutberarti bahwa node yang gagal diatur ulang lebih lambat. Sementara itu, Slurm mencoba menggunakan node lain. JikaSuspendTimeoutlebih dari beberapa menit, Slurm mencoba untuk siklus melalui semua node dalam sistem. Yang lebih lamaSuspendTimeoutmungkin bermanfaat untuk sistem skala besar (lebih dari 1.000 node) untuk mengurangi stres Slurm ketika mencoba untuk sering mengantri ulang pekerjaan yang gagal. -
Perhatikan bahwa
SuspendTimeouttidak mengacu pada waktu AWS ParallelCluster menunggu untuk mengakhiri instance dukungan untuk sebuah node. Instance 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 diluncurkan, dinyalakan, atau bergabung dengan cluster
-
Node dinamis:
-
Periksa
ResumeProgramlog untuk melihat apakahResumeProgramdipanggil dengan node. Jika tidak, periksaslurmctldlog untuk menentukan apakah Slurm mencoba meneleponResumeProgramdengan node. Perhatikan bahwa izin yang salahResumeProgramdapat menyebabkannya 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 tak terduga, dan kegagalan node
-
Node diganti/dihentikan secara tak terduga:
-
Dalam kebanyakan kasus,
clustermgtdmenangani semua tindakan pemeliharaan node. Untuk memeriksa apakahclustermgtddiganti atau dihentikan node, periksaclustermgtdlog. -
Jika
clustermgtddiganti atau dihentikan node, harus ada pesan yang menunjukkan alasan tindakan. Jika alasannya terkait penjadwal (misalnya, simpulnyaDOWN), periksaslurmctldlog untuk lebih jelasnya. Jika alasannya EC2 terkait Amazon, gunakan alat seperti Amazon CloudWatch atau EC2 konsol Amazon, CLI, atau SDKs, untuk memeriksa status atau log untuk contoh itu. Misalnya, Anda dapat memeriksa apakah instans memiliki acara terjadwal atau gagal pemeriksaan status EC2 kesehatan Amazon. -
Jika
clustermgtdtidak mengakhiri node, periksa apakah nodecomputemgtddihentikan atau jika EC2 menghentikan instance untuk merebut kembali Instance Spot.
-
-
Kegagalan simpul:
-
Dalam kebanyakan kasus, pekerjaan secara otomatis diminta ulang jika node gagal. Lihat di
slurmctldlog untuk melihat mengapa pekerjaan atau node gagal dan menilai situasi dari sana.
-
Kegagalan saat mengganti atau menghentikan instance, kegagalan saat mematikan node
-
Secara umum,
clustermgtdmenangani semua tindakan penghentian instance yang diharapkan. Lihat diclustermgtdlog untuk melihat mengapa gagal mengganti atau mengakhiri node. -
Untuk node dinamis gagal ScaledownIdletime, lihat di
SuspendProgramlog untuk melihat apakahslurmctldproses membuat panggilan dengan node tertentu sebagai argumen. CatatanSuspendProgramtidak benar-benar melakukan tindakan tertentu. Sebaliknya, itu hanya log ketika dipanggil. Semua penghentian danNodeAddrpenyetelan ulang instans diselesaikan olehclustermgtd. Slurm transisi node keIDLEsetelahnyaSuspendTimeout.
Masalah lainnya:
-
AWS ParallelCluster tidak membuat alokasi pekerjaan atau keputusan penskalaan. Itu hanya mencoba untuk meluncurkan, menghentikan, dan memelihara sumber daya sesuai dengan Slurminstruksi.
Untuk masalah terkait alokasi pekerjaan, alokasi node, dan keputusan penskalaan, lihat
slurmctldlog untuk kesalahan.