Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Slurmpanduan 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 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, masih Slurm dapat mengalokasikan pekerjaan ke node. -
Sebuah simpul yang beralih ke
POWER_UPstatus muncul dengan#akhiran (misalnyaidle#) di.sinfo -
Ketika Slurm mengalokasikan pekerjaan ke node dalam
POWER_SAVINGkeadaan, node secara otomatis mentransfer ke keadaan.POWER_UPJika tidak, node dapat ditempatkan dalamPOWER_UPkeadaan secara manual menggunakanscontrol update nodename=perintah. Pada tahap ini,nodenamestate=power_upResumeProgramdipanggil, dan EC2 instance 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 merekomendasikan bahwa jumlah instance sama dengan jumlah node yang tersedia. EC2 Dalam kebanyakan kasus, node statis selalu tersedia setelah cluster dibuat. -
Node yang bertransisi ke
POWER_DOWNstatus muncul dengan%akhiran (misalnyaidle%) di.sinfoNode dinamis secara otomatis memasukiPOWER_DOWNstatus setelahnyascaledown_idletime. Sebaliknya, node statis dalam banyak kasus tidak dimatikan. Namun, node dapat ditempatkan dalamPOWER_DOWNkeadaan secara manual menggunakanscontrol update nodename=perintah. Dalam keadaan ini, instance yang terkait dengan node dihentikan, dan node diatur ulang kembali kenodenamestate=powering_downPOWER_SAVINGstatus ke future use afterscaledown_idletime.scaledown-idletimePengaturan disimpan ke Slurm konfigurasi sebagaiSuspendTimeoutpengaturan. -
Node yang offline muncul dengan
*akhiran (misalnyadown*) disinfo. Sebuah node akan offline jika Slurm controller tidak dapat menghubungi node atau jika node statis dinonaktifkan dan instance backing 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-1Node spot-st-t2large-[1-2] dan sudah memiliki instance pendukung yang disiapkan dan tersedia untuk digunakan. ondemand-dy-c52xlarge-[1-2]Node berada dalam POWER_UP keadaan, dan mereka akan tersedia dalam beberapa menit. gpu-dy-g38xlarge-1Node dalam POWER_DOWN keadaan, dan akan bertransisi ke POWER_SAVING keadaan setelah scaledown_idletime (default ke 120 detik).
Semua node lain dalam POWER_SAVING keadaan tanpa EC2 instance yang mendukungnya.
Bekerja dengan node yang tersedia
Sebuah node yang tersedia didukung oleh sebuah EC2 instance. Secara default, nama node dapat digunakan untuk langsung SSH ke dalam 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 EC2 instance 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 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 POWER_UP status 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 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) -
Tipe 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 spot adalah antrian default. Ini ditunjukkan oleh * sufiks.
Kirim pekerjaan ke satu node statis ke antrian default (spot).
$sbatch --wrap "sleep 300" -N 1 -C static
Kirim pekerjaan ke satu node dinamis ke EFA antrian.
$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 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-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 dan fitur simpul
Dalam kebanyakan kasus, status node sepenuhnya dikelola oleh 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. SlurmPartisi 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 tidak aktif dihentikan. Instance baru tidak diluncurkan untuk node di partisi yang tidak aktif.
pcluster mulai dan berhenti
Ketika pcluster stop dijalankan, semua partisi ditempatkan dalam INACTIVE keadaan, dan AWS ParallelCluster proses menjaga partisi dalam keadaan. INACTIVE
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 menjadi 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 puas ketika status partisi diubah ke UP status.
Kapan pcluster start dan pcluster stop sedang berjalan, Anda dapat memeriksa status 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:pclusterProses menyelesaikan proses penghentian, semua partisi dalamINACTIVEkeadaan, dan semua instance komputasi dihentikan. -
START_REQUESTED: pcluster start Permintaan dikirim ke cluster. -
STARTING:pclusterProses saat ini 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 sebuah cluster. Anda dapat mengelola node dalam cluster melalui prosedur umum berikut.
-
Nyalakan node dinamis dalam
POWER_SAVINGstatus: Jalankanscontrol update nodename=perintah atau kirimkannodenamestate=power_upsleep 1pekerjaan placeholder yang meminta sejumlah node tertentu dan mengandalkan Slurm untuk meningkatkan jumlah node yang diperlukan. -
Matikan node dinamis sebelumnyascaledown_idletime: Atur node dinamis
DOWNdenganscontrol update nodename=perintah. AWS ParallelCluster secara otomatis mengakhiri dan me-reset node dinamis yang jatuh. Secara umum, kami tidak menyarankan pengaturan node untuknodenamestate=downPOWER_DOWNlangsung menggunakanscontrol update nodename=perintah. Ini karena AWS ParallelCluster secara otomatis menangani proses power down. Tidak diperlukan intervensi manual. Oleh karena itu, kami menyarankan Anda mencoba mengatur nodenodenamestate=power_downDOWNkapan pun memungkinkan. -
Nonaktifkan antrian (partisi) atau hentikan semua node statis di partisi tertentu: Tetapkan antrian tertentu
INACTIVEdengan perintah.scontrol update partition=Melakukan hal ini mengakhiri semua instance backing node di partisi.queue namestate=inactive -
Aktifkan antrian (partisi): Tetapkan antrian tertentu
INACTIVEdengan perintah.scontrol update partition=queue namestate=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-c5xlarge-[1-2]). -
ResumeProgrammeluncurkan dua EC2 instance dan menetapkan alamat IP pribadi dan nama host dariqueue1-dy-c5xlarge-[1-2], menungguResumeTimeout(periode default adalah 60 menit (1 jam)) sebelum mengatur ulang node. -
Instans dikonfigurasi dan bergabung dengan cluster. Job mulai berjalan pada instance.
-
Job sudah selesai.
-
Setelah konfigurasi
SuspendTimetelah berlalu (yang diatur kescaledown_idletime), instance dimasukkan kePOWER_SAVINGstatus oleh penjadwal. Scheduler menempatkanqueue1-dy-c5xlarge-[1-2]kePOWER_DOWNstatus dan panggilanSuspendProgramdengan 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, mengkonfigurasiqueue1-dy-c5xlarge-[1-2]ke dalam keadaan idle dan mengatur ulang alamat IP pribadi dan nama host sehingga mereka dapat diaktifkan untuk pekerjaan masa depan lagi.
Sekarang, jika ada yang salah 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 node cloud bursting ke
POWER_UPstatus dan memanggilResumeProgramdengan nama node, (misalnya).queue1-dy-c5xlarge-[1-2] -
ResumeProgrammeluncurkan hanya satu (1) EC2 instance dan mengkonfigurasiqueue1-dy-c5xlarge-1, 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_DOWNkeadaan, dan pekerjaan diminta ulang secara otomatis karena Slurm mendeteksi kegagalan node. -
queue1-dy-c5xlarge-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 diulang sampai pekerjaan dapat berjalan pada node yang tersedia tanpa terjadi kegagalan.
Ada dua parameter waktu yang dapat disesuaikan jika diperlukan.
-
ResumeTimeout(defaultnya adalah 60 menit (1 jam)):ResumeTimeoutmengontrol waktu Slurm menunggu sebelum meletakkan node 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. Menghitung node berhenti sendiri jika ada kesalahan yang terjadi 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. -
SuspendTimeoutYang lebih lama membuat node yang gagal diatur ulang lebih lambat. Sementara itu, Slurm ban menggunakan node lain. JikaSuspendTimeoutlebih dari beberapa menit, cobalah Slurm untuk menelusuri semua node dalam sistem. Yang lebih lamaSuspendTimeoutmungkin bermanfaat untuk sistem skala besar (lebih dari 1.000 node) untuk mengurangi stres Slurm dengan 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 beberapa menit. Namun, selama waktu ini, node tetap dalam keadaan mati daya dan tidak tersedia untuk digunakan dalam 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 diluncurkan, dinyalakan, atau bergabung dengan cluster:
-
Node dinamis:
-
Periksa
ResumeProgramlog untuk melihat apakahResumeProgrampernah dipanggil dengan node. Jika tidak, periksaslurmctldlog untuk menentukan apakah Slurm pernah mencoba memanggilResumeProgramdengan 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 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 tak terduga, kegagalan node
-
Node secara replaced/terminated 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, gunakan alat untuk memeriksa status atau log untuk contoh itu. Misalnya, Anda dapat memeriksa apakah instans memiliki acara terjadwal atau pemeriksaan status EC2 kesehatan yang gagal. -
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 sebuah node gagal. Lihat di
slurmctldlog untuk melihat mengapa pekerjaan atau node gagal dan analisis 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 gagalscaledown_idletime, lihat di
SuspendProgramlog untuk melihat apakah sebuah programslurmctlddengan node tertentu sebagai argumen. Catatan sebenarnyaSuspendProgramtidak melakukan tindakan spesifik apa pun. Sebaliknya, itu hanya log ketika dipanggil. Semua penghentian danNodeAddrreset instans diselesaikan olehclustermgtd. Slurmmenempatkan node ke dalamIDLEsetelahSuspendTimeout.
Masalah lainnya
-
AWS ParallelCluster tidak membuat alokasi pekerjaan atau keputusan penskalaan. Sederhana mencoba meluncurkan, menghentikan, dan memelihara sumber daya sesuai dengan Slurm instruksi.
Untuk masalah terkait alokasi pekerjaan, alokasi node, dan keputusan penskalaan, lihat
slurmctldlog untuk kesalahan.