Slurmpenjadwalan berbasis memori - AWS ParallelCluster

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Slurmpenjadwalan berbasis memori

Dimulai dengan versi 3.2.0, AWS ParallelCluster mendukung penjadwalan Slurm berbasis memori dengan parameter SlurmSettingsEnableMemoryBasedSchedulingkonfigurasi/cluster.

catatan

Dimulai dengan AWS ParallelCluster versi 3.7.0, EnableMemoryBasedScheduling dapat diaktifkan jika Anda mengonfigurasi beberapa jenis instans di Instans.

Untuk AWS ParallelCluster versi 3.2.0 hingga 3.6. x, tidak EnableMemoryBasedScheduling dapat diaktifkan jika Anda mengonfigurasi beberapa jenis instance di Instance.

Awas

Bila Anda menentukan beberapa jenis instance dalam sumber daya komputasi Slurm antrian dengan EnableMemoryBasedScheduling diaktifkan, RealMemory nilainya adalah jumlah minimum memori yang tersedia untuk semua jenis instans. Ini dapat menyebabkan sejumlah besar memori yang tidak digunakan jika Anda menentukan jenis instance dengan kapasitas memori yang sangat berbeda.

DenganEnableMemoryBasedScheduling: true, Slurm penjadwal melacak jumlah memori yang dibutuhkan setiap pekerjaan pada setiap node. Kemudian, Slurm penjadwal menggunakan informasi ini untuk menjadwalkan beberapa pekerjaan pada node komputasi yang sama. Jumlah total memori yang dibutuhkan pekerjaan pada node tidak bisa lebih besar dari memori node yang tersedia. Penjadwal mencegah pekerjaan menggunakan lebih banyak memori daripada yang diminta saat pekerjaan dikirimkan.

DenganEnableMemoryBasedScheduling: false, pekerjaan mungkin bersaing untuk mendapatkan memori pada node bersama dan menyebabkan kegagalan pekerjaan dan out-of-memory peristiwa.

Awas

Slurmmenggunakan kekuatan 2 notasi untuk labelnya, seperti MB atau GB. Baca label ini sebagai MiB dan GiB, masing-masing.

Slurmkonfigurasi dan penjadwalan berbasis memori

DenganEnableMemoryBasedScheduling: true, Slurm atur parameter Slurm konfigurasi berikut:

  • SelectTypeParameters=CR_CPU_Memorydislurm.conf. Opsi ini mengonfigurasi memori node menjadi sumber daya habis pakai di. Slurm

  • ConstrainRAMSpace=yesdi Slurmcgroup.conf. Dengan opsi ini, akses pekerjaan ke memori terbatas pada jumlah memori yang diminta pekerjaan saat dikirimkan.

catatan

Beberapa parameter Slurm konfigurasi lainnya dapat memengaruhi perilaku Slurm penjadwal dan pengelola sumber daya saat kedua opsi ini disetel. Untuk informasi selengkapnya, lihat Dokumentasi Slurm.

Slurmpenjadwal dan penjadwalan berbasis memori

EnableMemoryBasedScheduling: false(default)

Secara default, EnableMemoryBasedScheduling diatur ke false. Ketika false, Slurm tidak termasuk memori sebagai sumber daya dalam algoritma penjadwalan dan tidak melacak memori yang digunakan pekerjaan. Pengguna dapat menentukan --mem MEM_PER_NODE opsi untuk mengatur jumlah minimum memori per node yang dibutuhkan pekerjaan. Ini memaksa penjadwal untuk memilih node dengan RealMemory nilai setidaknya MEM_PER_NODE saat menjadwalkan pekerjaan.

Misalnya, anggaplah bahwa pengguna mengirimkan dua pekerjaan dengan--mem=5GB. Jika sumber daya yang diminta seperti CPU atau GPU tersedia, pekerjaan dapat berjalan pada saat yang sama pada node dengan memori 8 GiB. Kedua pekerjaan tidak dijadwalkan pada node komputasi dengan kurang dari 5 RealMemory GiB.

Awas

Saat penjadwalan berbasis memori dinonaktifkan, Slurm tidak melacak jumlah memori yang digunakan pekerjaan. Pekerjaan yang berjalan pada node yang sama mungkin bersaing untuk sumber daya memori dan menyebabkan pekerjaan lain gagal.

Ketika penjadwalan berbasis memori dinonaktifkan, kami menyarankan agar pengguna tidak menentukan atau opsi. --mem-per-cpu--mem-per-gpu Opsi ini dapat menyebabkan perilaku yang berbeda dari apa yang dijelaskan dalam Dokumentasi Slurm.

EnableMemoryBasedScheduling: true

Ketika EnableMemoryBasedScheduling disetel ke true, Slurm melacak penggunaan memori setiap pekerjaan dan mencegah pekerjaan menggunakan lebih banyak memori daripada yang diminta dengan opsi --mem pengiriman.

Menggunakan contoh sebelumnya, pengguna mengirimkan dua pekerjaan dengan--mem=5GB. Pekerjaan tidak dapat berjalan pada saat yang sama pada node dengan memori 8 GiB. Ini karena jumlah total memori yang dibutuhkan lebih besar daripada memori yang tersedia di node.

Dengan penjadwalan berbasis memori diaktifkan, --mem-per-cpu dan --mem-per-gpu berperilaku konsisten dengan apa yang dijelaskan dalam dokumentasi. Slurm Misalnya, pekerjaan diserahkan--ntasks-per-node=2 -c 1 --mem-per-cpu=2GB. Dalam hal ini, Slurm berikan pekerjaan total 4 GiB untuk setiap node.

Awas

Ketika penjadwalan berbasis memori diaktifkan, kami menyarankan agar pengguna menyertakan --mem spesifikasi saat mengirimkan pekerjaan. Dengan Slurm konfigurasi default yang disertakan AWS ParallelCluster, jika tidak ada opsi memori yang disertakan (--mem,--mem-per-cpu, atau--mem-per-gpu), Slurm menetapkan seluruh memori node yang dialokasikan ke pekerjaan, bahkan jika itu hanya meminta sebagian dari sumber daya lain, seperti CPU atau GPU. Ini secara efektif mencegah berbagi node sampai pekerjaan selesai karena tidak ada memori yang tersedia untuk pekerjaan lain. Ini terjadi karena Slurm menyetel memori per node untuk pekerjaan DefMemPerNodeketika tidak ada spesifikasi memori yang disediakan pada waktu pengiriman pekerjaan. Nilai default untuk parameter ini adalah 0 dan menentukan akses tak terbatas ke memori node.

Jika beberapa jenis sumber daya komputasi dengan jumlah memori yang berbeda tersedia dalam antrian yang sama, pekerjaan yang dikirimkan tanpa opsi memori mungkin diberikan jumlah memori yang berbeda pada node yang berbeda. Ini tergantung pada node mana yang disediakan oleh penjadwal untuk pekerjaan itu. Pengguna dapat menentukan nilai kustom untuk opsi, seperti DefMemPerNode atau DefMemPerCPU, pada tingkat cluster atau partisi dalam file Slurm konfigurasi untuk mencegah perilaku ini.

Slurm RealMemory dan AWS ParallelCluster SchedulableMemory

Dengan Slurm konfigurasi yang disertakan AWS ParallelCluster, Slurm menafsirkan RealMemorysebagai jumlah memori per node yang tersedia untuk pekerjaan. Dimulai dengan versi 3.2.0, secara default, AWS ParallelCluster disetel RealMemory ke 95 persen memori yang tercantum dalam Jenis Instans Amazon EC2 dan dikembalikan oleh Jenis API Amazon EC2. DescribeInstance

Saat penjadwalan berbasis memori dinonaktifkan, Slurm penjadwal menggunakan RealMemory untuk memfilter node saat pengguna mengirimkan pekerjaan dengan yang ditentukan. --mem

Ketika penjadwalan berbasis memori diaktifkan, Slurm scheduler menafsirkan RealMemory sebagai jumlah maksimum memori yang tersedia untuk pekerjaan yang berjalan pada node komputasi.

Pengaturan default mungkin tidak optimal untuk semua jenis instans:

  • Pengaturan ini mungkin lebih tinggi dari jumlah memori yang sebenarnya dapat diakses oleh node. Hal ini dapat terjadi ketika node komputasi adalah tipe instance kecil.

  • Pengaturan ini mungkin lebih rendah dari jumlah memori yang sebenarnya dapat diakses oleh node. Hal ini dapat terjadi ketika node komputasi adalah tipe instance besar dan dapat menyebabkan sejumlah besar memori yang tidak digunakan.

Anda dapat menggunakan SlurmQueues/ComputeResources/SchedulableMemoryuntuk menyempurnakan nilai yang RealMemory dikonfigurasi oleh AWS ParallelCluster untuk node komputasi. Untuk mengganti default, tentukan nilai kustom SchedulableMemory khusus untuk konfigurasi klaster Anda.

Untuk memeriksa memori aktual node komputasi yang tersedia, jalankan /opt/slurm/sbin/slurmd -C perintah pada node. Perintah ini mengembalikan konfigurasi perangkat keras node, termasuk RealMemorynilainya. Untuk informasi selengkapnya, lihat slurmd -C.

Pastikan bahwa proses sistem operasi node komputasi memiliki memori yang cukup. Untuk melakukan ini, batasi memori yang tersedia untuk pekerjaan dengan menetapkan SchedulableMemory nilai lebih rendah dari RealMemory nilai yang dikembalikan slurmd -C perintah.