Hướng dẫn chi tiết quy trình làm việc và cấu hình tệp slurm.conf trong Slurm

I. Quy trình điều phối tác vụ Slurm

Hệ thống Slurm thực hiện các giai đoạn chính sau khi xử lý yêu cầu:

1. Gửi tác vụ (Submission)

  • Người dùng sử dụng công cụ dòng lệnh (ví dụ: sbatch, srun) để gửi script. Ví dụ:
sbatch -N 2 --tasks-per-node=4 -p test script.sh
  • Hệ thống lưu thông tin vào hàng đợi để chờ phân bổ tài nguyên.

2. Phân bổ tài nguyên (Resource Allocation)

  • Dịch vụ slurmctld phân tích trạng thái hiện tại và chiến lược điều phối (như backfill, fairshare) để chọn node phù hợp.
  • Kiểm tra cấu hình trong slurm.conf để đảm bảo yêu cầu CPU, RAM, GPU được đáp ứng.

3. Khởi động tác vụ (Task Launch)

  • Sau khi phân bổ, slurmd trên node tính toán sẽ chạy nhiệm vụ. Với MPI:
srun -N 2 -n 8 program_mpi

4. Thực thi và giám sát (Execution & Monitoring)

  • slurmd theo dõi tiến trình và gửi trạng thái về slurmctld.
  • Người dùng dùng squeue hoặc sacct để kiểm tra tiến độ.

5. Hoàn tất và giải phóng (Completion)

  • Tài nguyên được tự động giải phóng sau khi tác vụ kết thúc.
  • Tập tin nhật ký mặc định lưu tại slurm-<jobid>.out.

II. Giải thích tham số tệp cấu hình slurm.conf

Tệp slurm.conf định nghĩa toàn bộ cấu hình hệ thống. Các tham số quan trọng bao gồm:

1. Cấu hình cơ bản

Tham số Mô tả Ví dụ
ControlNode Địa chỉ máy chủ chính (chạy slurmctld) ControlNode=central
ClusterID Mã định danh cụm (dùng cho quản lý đa cụm) ClusterID=hpc01
Port Cổng kết nối dịch vụ Port=6817
AuthMech Cơ chế xác thực (thường dùng munge) AuthMech=munge

2. Định nghĩa node và partition

Tham số Mô tả Ví dụ
NodeList Thiết lập node và tài nguyên NodeList=node[1-10] CPU=48 Socket=2 CorePerSocket=12 ThreadPerCore=2
Partition Phân vùng tài nguyên (queue) Partition=debug NodeList=node[1-5] Default=YES TimeLimit=24h
MemPerNode RAM mặc định mỗi node (MB) MemPerNode=65536
Gres Tài nguyên đặc biệt (GPU, FPGA) Gres=gpu:rtx3090:1 (1 GPU RTX 3090)

3. Chiến lược điều phối

Tham số Mô tả Ví dụ
Scheduler Loại điều phối (ví dụ backfill hỗ trợ phân bổ trước) Scheduler=sched/backfill
Priority Chính sách ưu tiên (ví dụ multifactor) Priority=priority/multifactor
Preempt Chính sách chiếm ưu tiên (cần bật ưu tiên) Preempt=preempt/qos

Các chiến lược phổ biến bao gồm: • Fair Share: Phân bổ dựa trên lịch sử sử dụng. • Backfill: Tận dụng tài nguyên rảnh khi tác vụ lớn đang chờ. • Priority: Ưu tiên theo mức độ khẩn cấp. • Multifactor: Kết hợp nhiều yếu tố.

4. Quản lý tài nguyên nâng cao

Tham số Mô tả Ví dụ
SelectType Plugin chọn tài nguyên (ví dụ select/linear) SelectType=select/cons_res
SelectParam Tham số chọn tài nguyên SelectParam=CPU
Accounting Cách lưu trữ dữ liệu (cần slurmdbd) Accounting=accounting/slurmdbd

5. Sao lưu cao độ tin cậy (HA)

Tham số Mô tả Ví dụ
MasterNode Danh sách node chính/phụ (chế độ HA) MasterNode=primary,secondary
Timeout Thời gian chờ phát hiện lỗi (giây) Timeout=30

III. Ví dụ cấu hình slurm.conf

# Cấu hình cơ bản
ControlNode=central
ClusterID=my_cluster
Port=6817
AuthMech=munge

# Định nghĩa node
NodeList=node[1-10] CPU=48 Socket=2 CorePerSocket=12 ThreadPerCore=2 State=UNKNOWN
NodeList=gpu[1-2] CPU=32 Gres=gpu:rtx3090:1

# Phân vùng
Partition=cpu NodeList=node[1-10] Default=YES TimeLimit=24h
Partition=gpu NodeList=gpu[1-2] TimeLimit=12h

# Chiến lược điều phối
Scheduler=sched/backfill
Preempt=preempt/qos
Priority=priority/multifactor

# Ghi nhật ký
Accounting=accounting/slurmdbd
AccountingHost=db_server

IV. Lưu ý quan trọng

  1. Tính nhất quán: Tất cả node phải có cùng tệp slurm.conf.
  2. Khởi động lại dịch vụ: Sau khi sửa đổi:
systemctl restart slurmctld slurmd
  1. Kiểm tra cú pháp:
slurmctld -C
  1. Đường dẫn log:
  • Log master: /var/log/slurmctld.log
  • Log node: /var/log/slurmd.log

Việc cấu hình chính xác slurm.conf giúp tối ưu hóa việc quản lý tài nguyên từ đơn giản đến đa người dùng. Nên tham khảo tài liệu man slurm.conf để điều chỉnh phù hợp với nhu cầu cụm.

Thẻ: Slurm configuration files resource management HPC cluster scheduling

Đăng vào ngày 4 tháng 10 lúc 08:28