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
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_Memory
di slurm.conf
. Opsi ini mengonfigurasi memori node menjadi sumber daya habis pakai di. Slurm -
ConstrainRAMSpace=yes
di Slurm cgroup.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 menyertakan memori sebagai sumber daya dalam algoritme penjadwalannya 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
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, meskipun 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 DefMemPerNode
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
Slurm RealMemory dan AWS ParallelCluster SchedulableMemory
Dengan Slurm konfigurasi yang disertakan AWS ParallelCluster, Slurm menafsirkan RealMemoryRealMemory
ke 95 persen memori yang tercantum dalam Jenis Instans Amazon EC2
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 RealMemory
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.