linux源码安装slurm以及mung

一、源码安装munge

1、编译安装munge

(1)下载munge地址:https://github.com/dun/munge/releases

(2)解压编译安装:

tar -Jxvf munge-0.5.15.tar.xz
./bootstrap
./configure --prefix=/usr/local/munge \
--sysconfdir=/usr/local/munge/etc \
--localstatedir=/usr/local/munge/local \
--with-runstatedir=/usr/local/munge/run \
--libdir=/usr/local/munge/lib64
make && make install

2、创建用户并修改权限

useradd -s /sbin/nologin -u 601 munge
sudo -u munge mkdir -p /usr/local/munge/run/munge
// sudo -u munge mkdir /usr/local/munge/var/munge /usr/local/munge/var/run
// sudo -u munge mkdir /usr/local/munge/var/run/munge
chown -R munge.munge /usr/local/munge/
chmod 700 /usr/local/munge/etc/
chmod 711 /usr/local/munge/local/ 
chmod 755 /usr/local/munge/run
chmod 711 /usr/local/munge/lib

3、配置文件及服务

(1)创建munge.key文件

执行以下命令完成以后,在/usr/local/munge/etc/munge/下面会生成munge.key,需修改munge.key的权限

sudo -u munge /usr/local/munge/sbin/mungekey --verbose
chmod 600 /usr/local/munge/etc/munge/munge.key

【注意】:如果有多台服务器,需将服务端的munge.key发给客户端,客户端无需自己生成

(2)生成链接文件并启动服务

ln -s /usr/local/munge/lib/systemd/system/munge.service /usr/lib/systemd/system/munge.service
(cp /usr/local/munge/lib/systemd/system/munge.service /usr/lib/systemd/system/)
systemctl daemon-reload
systemctl start munge
systemctl status munge
注:若是service服务
创建脚本链接(或者直接拷贝文件),通过'service munge start'启动服务,如下图:
ln -fs /usr/local/munge/etc/rc.d/init.d/munge /etc/init.d/munge
创建命令链接(或者直接拷贝文件),通过'munged'启动服务,如下图:
ln -fs /usr/local/munge/sbin/munged /usr/sbin/munged

4、安装中会出现的问题

(1)configure报错

【解决方式】:apt -y install openssl-devel   openssl
这里采用符合GPL许可的Open SSL加密库,如果是源码编译的此库环境,编译时需要通过--with-crypto-lib选择指定
或者源码安装openssl后--with-openssl-prefix=/usr/local/openssl
(2)文件权限和所有者有问题

/usr/local的文件权限和所有者有问题

【解决方式】:修改/usr/local的文件权限和所有者
chown -R root.root /usr/local
chmod -R 755 /usr/local

 二、源码安装slurm

apt-get install make hwloc libhwloc-dev libmunge-dev libmunge2 munge mariadb-server libmysalclient-dey -y

1、下载并安装

(1)下载地址:https://www.schedmd.com/downloads.phphttps://download.schedmd.com/slurm/

tar -jxvf slurm-22.05.8.tar.bz2
// find . -name "config.guess"   cp /usr/share/misc/config.* auxdir/ 
// cp /usr/share/libtool/build-aux/config.* .

(2)编译安装

./configure --prefix=/usr/local/slurm \
--with-munge=/usr/local/munge \
sysconfdir=/usr/local/slurm/etc \
--localstatedir=/usr/local/slurm/local \
--runstatedir=/usr/local/slurm/run \
--libdir=/usr/local/slurm/lib64
查看vim config.log文件是否有错误


如果下面显示no,则需要重新./configure并指定,--with-mysql_config=/usr/bin
make -j && make install
如果--with-mysql_config=/usr/bin指定后出现:
configure: error: *** mysql_config not found. Evidently no MySQL development libs installed on system.
sudo apt-get install libmysqlclient-dev  //Ubuntu/Debian系统
sudo yum install mysql-devel  //CentOS/RedHat系统
//输入以下命令来找到mysql_config的路径:
which mysql_config

2、配置数据库

mysql -u root -p 登录到数据库进行下面操作

// 生成slurm用户,以便该用户操作slurm_acct_db数据库,其密码是123456
create user 'slurm'@'localhost' identified by '123456';
// 生成账户数据库slurm_acct_db
create database slurm_acct_db;
// 赋予slurm从本机localhost采用密码123456登录具备操作slurm_acct_db数据下所有表的全部权限
// grant all privileges on slurm_acct_db.* to 'slurm'@'localhost' with grant option;
grant all on slurm_acct_db.* TO 'slurm'@'localhost' identified by '123456' with grant option;
// 生成作业信息数据库slurm_jobcomp_db
create database slurm_jobcomp_db;
// 赋予slurm从本机localhost采用密码123456登录具备操作slurm_jobcomp_db数据下所有表的全部权限
// GRANT ALL PRIVILEGES ON slurm_jobcomp_db.* TO 'slurm'@'localhost' with grant option;
grant all on slurm_jobcomp_db.* TO 'slurm'@'localhost' identified by '123456' with grant option;


// 赋予slurm从system0采用密码123456登录具备操作slurm_acct_db数据下所有表的全部权限
grant all on slurm_acct_db.* TO 'slurm'@'system0' identified by '123456' with grant option;
// 赋予slurm从system0采用密码123456登录具备操作slurm_jobcomp_db数据下所有表的全部权限
grant all on slurm_jobcomp_db.* TO 'slurm'@'system0' identified by '123456' with grant option;

3、配置slurm文件及服务

(1)编辑配置文件(示例配置文件在源码包中的etc下)

cp slurm.conf.example /usr/local/slurm/etc/slurm.conf
cp slurmdbd.conf.example /usr/local/slurm/etc/ slurmdbd.conf
cp cgroup.conf.example /usr/local/slurm/etc/cgroup.conf
chmod 600 slurmdbd.conf
cd /usr/local/slurm    
mkdir run slurm log
【注意】:客户端只需要把服务端修改好的slurm.conf发过去即可,具体配置内容可在文末参考

(2)配置环境变量

vim /etc/profile.d/slurm.sh
SLURM=/usr/local/slurm
export PATH=${SLURM}/bin:${SLURM}/sbin:$PATH
export LD_LIBRARY_PATH=${SLURM}/lib64:$LD_LIBRARY_PATH

(3)启动服务(服务启动文件在源码包中的etc下)

cp etc/slurmctld.service etc/slurmdbd.service etc/slurmd.service /etc/systemd/system/
// cp etc/slurmctld.service etc/slurmdbd.service etc/slurmd.service /usr/lib/systemd/system/
systemctl daemon-reload    // 重新加载systemd守护进程配置文件
systemctl start slurmd slurmdbd slurmctld   // 开启服务
systemctl enable slurmd slurmdbd slurmctld  // 开机自启动

【注意】:客户端只需要slurmd
正常情况下显示绿色的active状态;如果失败,则用下面命令查看错误日志

slurmctld -Dvvvvv    slurmdbd -Dvvvvv    slurmd -Dvvvvv
启动后如果节点状态是down,可用下面命令启动节点:
scontrol update nodename=sw01 state=idle

4、slurm排错

重启slurmctld服务
systemctl restart slurmctld
scp -r /usr/local/slurm test10:/usr/local/
scp /etc/profile.d/slurm.sh test10:/etc/profile.d/
scp /etc/systemd/system/slurmd.service test10:/etc/systemd/system/

 (1)错误:mysql_real_connect failed: 2003 Can't connect to MySQL server on 'Intel:3306' (111)

 数据库连接失败
查看3306端口是否开放远程连接

 没有开放3306端口
修改vim /etc/my.cnf,添加port=3306,然后重启mysql;

(2)error: Database settings not recommended values: innodb_buffer_pool_size innodb_lock_wait_timeout max_allowed_packet

修改mysql的配置文件/etc/my.cnf,添加innodb_buffer_pool_size和innodb_lock_wait_timeout的大小

[mysqld]
innodb_buffer_pool_size=2G
innodb_log_file_size=64M
innodb_lock_wait_timeout=900

 

(3)slurm_load_partitions: Zero Bytes were transmitted or received
客户端sinfo查看时出现x上面错误,一般是时间不一致,可用date查看时间日期。
解决:节点时间未同步,安装NTP后,启动ntpd服务即可。

(4)Slurm使用OpenMPI编译的可执行程序时出错

如果想在Slurm集群中使用OpenMPI需要提前构建,在指南中指出想使用 srun 命令直接启动MPI需要指定PMIx库

在没有安装PMIx库的情况下安装了Slurm,使用srun命令查看mpi插件时将无法得到PMIx的信息,srun命令需要在启动 slurmd服务以后运行才会有输出,否则会报错。

需要注意的是: 编译OpenMPI时如果使用了外部PMIx,则需要和PMIx使用相同的libevent 和 hwloc库,正好Slrum的cgroup插件也需要hwloc库, 所以编译OpenMPI一共要安装的库以下四个:

hwloc

libevent

PMIx

UCX

UCX库好像是利用高速网络进行通信的,支持RDMA的网卡好像是可以使用相应的API什么的。不安装UCX后续也不会报错,所以安不安都可以。 

三、连网yum安装munge

1、配置并安装munge

(1)添加munge用户

groupadd -g 972 munge
useradd -g 972 -u 972 munge

(2)安装munge

apt-get install munge -y

(3)执行以下命令,创建munge.key文件:

create-munge-key

2、修改文件权限

执行完以后,在/etc/munge/下面会生成munge.key,需修改munge.key的权限以及所属用户,把所属用户改成munge(/etc和/usr应为root权限)
chown -R munge: /etc/munge/ /var/log/munge/ /var/lib/munge/ /var/run/munge/
chmod 400 /etc/munge/munge.key 
ps -ef | grep munge
kill -9 16730

四、Slurm常用命令以及基本用法

1、查看可用资源sinfo

idle

节点空闲,可接受作业

alloacted

该节点已经分配作业且所有核心用满,在作业释放前不能再被分配作业

mix

使用部分核心,仍可以被分配作业

drain

对应节点已经下线

drng

节点已下线但仍有作业在运行

2、slurm提交作业命令

(1)交互式作业srun

        srun命令属于交互式提交作业,有屏幕输出,但容易受网络波动影响,断网或关闭窗口会导致作业中断。

srun -n 4 hostname

-N 2 指定使用2个节点;
-n 12 指定运行的任务数为12, 默认情况下一个CPU核一个任务
-p debug 指定提交作业到debug队列;
-w x86[13-16] 指定使用节点x86[13-16];
-x  x86[11-12] 排除x8611、x8612节点;
-o out.log  指定标准输出到out.log文件;
-e err.log  指定重定向错误输出到err.log文件;
-J JOBNAME  指定作业名为JOBNAME;
-t 20 指定作业运行时间限制为20分钟;
--gres=gpu:2 为作业分配2块GPU显卡资源(最大值为8);

(2)批处理作业脚本sbatch

        sbatch一般情况下与srun一起提交作业到后台运行,需要将srun写到脚本中,再用sbatch 提交脚本。这种方式不受本地网络波动影响,提交作业后可以关闭本地电脑。sbatch命令没有屏幕输出,默认输出日志为提交目录下的slurm-xxx.out文件,可以使用tail -f slurm-xxx.out实时查看日志,其中xxx为作业号。
<i、一个简单的Slurm脚本(job_run.sh)如下:

#!/bin/bash
#SBATCH -J xujb         #指定作业名
#SBATCH -p q_x86        #指定队列
#SBATCH -N 2            #请求节点总数
#SBATCH -n 24           #请求进程总数
#SBATCH -w x86b,x86c    #指定运行作业的节点
#SBATCH -x x86a         #指定不使用x86a运行作业
#SBATCH -o slurm-%j.out #标准输出文件
#SBATCH -e slurm-%j.log #错误输出文件

# 设置运行环境
#module load mpich/4.1.1
export PATH=/usr/local/mpich-4.1.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/mpich-4.1.1/lib:$LD_LIBRARY_PATH

echo ${SLURM_JOB_NODELIST} #作业占用节点列表
echo start on $(date)      #开始时间

# 输入要执行的命令
srun ../funs9/main
#mpirun -n ${SLURM_NTASKS} ../funs9/main

echo end on $(date)        #结束时间

<ii、sbatch提交作业

sbatch -n 2 ./job.sh

3、查看作业状态squeue

// 参数示例
squeue l:以长列表显示更多信息。
squeue -u username:仅显示属于用户username的任务。
squeue -t state:仅显示处于state状态的任务。
squeue -n job name:仅显示名称为job name的作业。
squeue -p partition:仅显示partition分区的任务。
squeue -jobs job id:仅显示作业id为job id的作业。

4、删除作业scancel

scancel 17

// 参数示例
scancel jobid:删除jobid的作业。
scancel -u username:删除username的全部作业。
scancel -s state:删除处于state状态的作业。
scancel -p partition:仅显示partition分区的任务

5、查看任务信息scontrol

// 参数示例
scontrol show partition partition_name:详细显示partition name分区的信息。
scontrol show node node_name:详细显示node name节点信息。
scontrol show job job_id:详细显示job id作业的信息。 
(1)scontrol对节点进行控制
scontrol命令可以管理Slurm集群中的节点,例如关机、重启和修改属性等操作。例如,要关闭节点x86b,可以使用以下命令:
scontrol update NodeName=x86b State=DOWN
(2)scontrol修改队列属性
scontrol命令可以管理Slurm队列,例如修改队列的最大CPU数、最大内存大小等属性。例如,要将q_x86队列最大CPU数更改为48,可以使用以下命令:
scontrol update PartitionName=q_x86 MaxCPUs=48

6、查询包括已完成作业信息sacct

输出内容会包括,作业号,作业名,分区,计费账户,申请的CPU数量,状态,结束代码
// 参数示例
-b,--brief:显示简要信息,主要包含: 作业号jobid、状态status和退出码exitcode。
-c,--completion:显示作业完成信息而非记账信息。
-e,--helpformat:显示当采用 --format指定格式化输出的可用格式。
-E end_time,--endtime-end time:显示在end time时间之前(不限作业状态)的作业。
-i,--nnodes=N:显示在特定节点数上运行的作业。
-j job(step),--jobs=job(.step):限制特定作业号(步)的信息,作业号(步)可以以,分隔.
-l,--long:显示详细信息。
-N node list,--nodelist-node list:显示运行在特定节点的作业记账信息。
-R reason list,-reason=reason list:显示由于XX原因没有被调度的作业记账信息。
-s state_list,-state-state list:显示state list(以,分隔)状态的作业记账信息。
-S,--starttime:显示特定时间之后开始运行的作业记账信息,有效时间格式参见

7、sacctmgr集群管理

调度配置信息sacctmgr:主要负责管理账号,用户,集群分区等资源

        在进行管理之前,必须知道Slurm调度系统分为两个基本层面:Account(账户)和User(用户)。基于这两个基本层面,Slurm形成了“关联”(Assoc)。
        Account类似于group的概念,是由多个User(用户)组成,在大集群上可以用来统一计算用户组的机时,通过对Account设置,可以对该用户组的全部用户进行条件约束。例如:在集群上需要限制某个用户组的使用总核数,则可以将这些用户放置在一个Account下,设置其可用的CPU总数、GRES等资源的限制。
        User则落实到具体的某个用户,除了可以在Account上对全体用户进行限制外,还可以单独限制某个用户的最大资源。

       用户分3级 ClusterAccountUser

// 查看关联关系
sacctmgr list assoc

sacctmgr add account new_account Cluster=new_cluster  // 这个只是分一下账户
sacctmgr add user new_user Account=new_account        // 这个才是用户

// 查看
sacctmgr list Cluster
sacctmgr list Account
sacctmgr list User
scontrol show partition   //显示全部队列信息

(1)Account账户管理

// 管理账户
sacctmgr show account withassoc    // 直询账户信息 sacctmgr show account
sacctmgr add account [账户名]       // 添加账户信息 
sacctmgr modify account [账户名] set Parent=root  // 将父账户设置为root
sacctmgr delete account [账户名]    // 删除账户信息
// 限制Account包含的全部用户累计总和不得超过最大限制
sacctmgr modify account [账户名] set Grptres="cpu=40,node=2,gres/gpu=4"
// 重置该Account的全部限制为:
sacctmgr modify account [账户名] set Grptres="cpu=-1,node=-1,gres/gpu=-1" 

(2) QOS管理

// 管理QOS
sacctmgr show qos            // 查询QOS
sacctmgr add qos [QOS名]     // 添加QOS
sacctmgr modify qos [QOS名] set MaxJobsPerUser=4  // 修改QOS,如用户使用核心数,作业数
sacctmgr delete qos [QOS名]  // 删除QOS

(3) User用户管理

// 用户管理
sacctmgr show user withassoc   // 查询用户 sacctmgr show user
sacctmgr add user [用户名]  Account=[账户名]  QOS=[QOS名]    // 添加用户
sacctmgr -i add user test1 account=test       // 增加test1用户属于test账户
sacctmgr update user [用户名] set QOS=[QOS名]  // 修改用户信息
sacctmgr delete user [用户名]   // 删除用户信
// 限制test1用户的CPU核数为40,节点数为2,GPU最大使用为4
sacctmgr modify user [用户名] set Grptres="cpu=40,node=2,gres/gpu=4"
// 重置该用户全部限制则为
sacctmgr modify user [用户名] set Grptres="cpu=-1,node=-1,gres/gpu=-1"
// 将用户从某一账户删除
sacctmgr remove user where user=[用户名] account=[账户名]

(4)其它管理员常用命令

// node1节点排空,不再接受程序提交
scontrol update nodename=node1 state=drain reason='机器维护'
scontrol show node node1
// node1节点恢复
scontrol update nodename=node1 state=resume

// q_test队列程序最大运行时间20160分钟。即14天
scontrol update partition=q_test MaxTime=20160
// 彻底修改某个队列运行时间
vim slurm.conf  //最后几行
PartitionName=q_test Nodes=node[5-8] MaxTime=20160 State=UP

// 查看某些用户user的账户account信息以及cpu限制
sacctmgr list assoc format=Clusters,Account,User,qos,partition,GrpTRES,Priority

(5)限制用户在指定队列提交作业

vim slurm.conf

// 在PartitionName处添加如下(账户名为sacctmgr add account中所添加名字)
PartitionName=q_test Nodes=node[5-8] AllowAccounts=[账户名]

// scontrol show partition  显示全部队列信息
PartitionName:队列名。 ​                   
AllowGroups:允许的用户组。 ​          
AllowAccounts:允许的账户。 ​           
AllowQos:允许的QoS。 ​            
AllocNodes:允许的节点。
Default:是否为默认队列。 
Hidden:是否为隐藏队列。
DenyGroups:指定不允许在队列中提交作业的用户组
DenyAccounts:指定不允许在队列中提交作业的账户

五、slurm配置文件

1、配置GPU集群环境

(1)在slurm.conf中,修改如下两项

GresTypes=gpu
NodeName=fm2024 Gres=gpu:2 CPUs=112 Sockets=2 CoresPerSocket=28 ThreadsPerCore=2 RealMemory=32041 State=UNKNOWN
//NodeName=fm2024 Gres=gpu:a100:2 CPUs=112 Sockets=2 CoresPerSocket=28 ThreadsPerCore=2 RealMemory=32041 State=UNKNOWN

第一行是指明通用资源的类型为gpu

第二行中,重要的参数是 `Gres=gpu:1`   gpu代表类型,冒号后的数字代表数量,1个GPU就是1,8个就是8。

(2)计算节点修改gres.conf

计算节点除了要 slurm.conf还需要gres.conf,slurm官方文档说,把 gres.conf中的东西写到slurm.conf中也未尝不可

// vim gres.conf
NodeName=fm2024 Name=gpu Type=a100 File=/dev/nvidia[0-1]
// NodeName=fm2024 Name=gpu File=/dev/nvidia[0-1]

这一行重要的就是知名节点名字和GPU  File的位置 。

2、验证GPU 调度

测试脚本test_gpus.py如下:

import torch                                                                                                                                                               
import os                                                                                                                                                                  
                                                                                                                                                                           
print('hostname', end=' ')                                                                                                                                                 
os.system('hostname')
# Check if GPU is available
if torch.cuda.is_available():
    device = torch.device("cuda")
    print(f"GPU device name: {torch.cuda.get_device_name(0)}")
    print(torch.cuda.device_count())
else:
    print("No GPU available, switching to CPU.")
    device = torch.device("cpu")

# Sample tensor operations
x = torch.rand(3, 3).to(device)
y = torch.rand(3, 3).to(device)
z = x + y

print(z)

使用以下命令运行脚本

run --gres=gpu:2 python3 test_gpus.py

3、slurm配置文件

(1)slurm.conf配置文件

文件里是slurm用户
########################################################
#  Configuration file for Slurm - 2021-08-20T10:27:23  #
########################################################
#
#
#
################################################
#                   CONTROL                    #
################################################
ClusterName=Sunway    #集群名称
SlurmUser=slurm
SlurmctldHost=fm2024    #主控制器的主机名
#SlurmctldHost=localhost  #备控制器的主机名
SlurmctldPort=6817    #slurctld的监听端口
SlurmdPort=6818       #slurmd的通信端口
SlurmdUser=root
#
################################################
#            LOGGING & OTHER PATHS             #
################################################
SlurmctldLogFile=/usr/games/slurm-munge/slurm-24.11.2/log/slurmctld.log
SlurmdLogFile=/usr/games/slurm-munge/slurm-24.11.2/log/slurmd.log
SlurmdPidFile=/usr/games/slurm-munge/slurm-24.11.2/run/slurmd.pid
SlurmdSpoolDir=/usr/games/slurm-munge/slurm-24.11.2/slurm/d
#SlurmSchedLogFile=
SlurmctldPidFile=/usr/games/slurm-munge/slurm-24.11.2/run/slurmctld.pid
StateSaveLocation=/usr/games/slurm-munge/slurm-24.11.2/slurm/state  #集群状态文件存放位置(全局文件系统)
#
################################################
#                  ACCOUNTING                  #
################################################
#AccountingStorageBackupHost=Intel  #slurmdbd备机
#AccountingStorageEnforce=none
AccountingStorageEnforce=associations,limits,qos
AccountingStorageHost=localhost #fm2024  #slurmdbd主机,为数据库管理服务器,即slurmdbd运行的服务器
AccountingStoragePort=6819
AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageUser=slurm
#AccountingStoreJobComment=Yes
AcctGatherEnergyType=acct_gather_energy/none
AcctGatherFilesystemType=acct_gather_filesystem/none
AcctGatherInterconnectType=acct_gather_interconnect/none
AcctGatherNodeFreq=0
AcctGatherProfileType=acct_gather_profile/none
#ExtSensorsType=ext_sensors/none
#ExtSensorsFreq=0
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/linux
#
################################################
#           SCHEDULING & ALLOCATION            #
################################################
PreemptMode=OFF
PreemptType=preempt/none
PreemptExemptTime=00:00:00
PriorityType=priority/basic
#SchedulerParameters=
SchedulerTimeSlice=30
SchedulerType=sched/backfill
SelectType=select/cons_tres
#SelectType=select/linear  #为资源选择类型,参见资源选择说明
SelectTypeParameters=CR_Core #CR_CPU #CR_Core_Memory
SlurmSchedLogLevel=0
#
################################################
#                   TOPOLOGY                   #
################################################
TopologyPlugin=topology/none
#
################################################
#                    TIMERS                    #
################################################
BatchStartTimeout=10
CompleteWait=0
EpilogMsgTime=2000
GetEnvTimeout=2
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=60  #控制器通信超时
SlurmdTimeout=60     #slurmd通信超时
WaitTime=0
#
################################################
#                    POWER                     #
################################################
#ResumeProgram=
ResumeRate=300
ResumeTimeout=60
#SuspendExcNodes=
#SuspendExcParts=
#SuspendProgram=
SuspendRate=60
SuspendTime=NONE
SuspendTimeout=30
#
################################################
#                    DEBUG                     #
################################################
DebugFlags=NO_CONF_HASH
SlurmctldDebug=info
SlurmdDebug=info
#
################################################
#               EPILOG & PROLOG                #
################################################
#Epilog=/usr/local/etc/epilog
#Prolog=/usr/local/etc/prolog
#SrunEpilog=/usr/local/etc/srun_epilog
#SrunProlog=/usr/local/etc/srun_prolog
#TaskEpilog=/usr/local/etc/task_epilog
#TaskProlog=/usr/local/etc/task_prolog
#
################################################
#               PROCESS TRACKING               #
################################################
#ProctrackType=proctrack/pgid
ProctrackType=proctrack/linuxproc
#
################################################
#             RESOURCE CONFINEMENT             #
################################################
TaskPlugin=task/affinity
#TaskPlugin=task/cgroup
#TaskPluginParam=verbose
#TaskPluginParam=Sched
#
################################################
#                    OTHER                     #
################################################
#AccountingStorageExternalHost=
#AccountingStorageParameters=
AccountingStorageTRES=cpu,mem,energy,node,billing,fs/disk,vmem,pages
AllowSpecResourcesUsage=No
#AuthAltTypes=
#AuthAltParameters=
#AuthInfo=
AuthType=auth/munge
#BurstBufferType=
#CliFilterPlugins=
#CommunicationParameters=
#CoreSpecPlugin=core_spec/none
#CpuFreqDef=
CpuFreqGovernors=Performance,OnDemand,UserSpace
CredType=cred/munge
#DefMemPerNode=
#DependencyParameters=
DisableRootJobs=No
EioTimeout=60
EnforcePartLimits=NO
#EpilogSlurmctld=
#FederationParameters=
FirstJobId=1
#GresTypes=
GpuFreqDef=high,memory=high
GroupUpdateForce=1
GroupUpdateTime=600
HealthCheckInterval=0
HealthCheckNodeState=ANY
#HealthCheckProgram=
InteractiveStepOptions=--interactive
#JobAcctGatherParams=
JobCompHost=localhost
JobCompLoc=/var/log/slurm_jobcomp.log
JobCompPort=0
#JobCompType=jobcomp/none
JobCompType=jobcomp/mysql
JobCompUser=slurm
JobCompPass=123456
JobContainerType=job_container/none
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
#JobDefaults=
JobFileAppend=0
JobRequeue=1
#JobSubmitPlugins=
#KeepAliveTime=
KillOnBadExit=0
#LaunchParameters=
LaunchType=launch/slurm
#Licenses=
LogTimeFormat=iso8601_ms
#MailDomain=
MailProg=/bin/mail
MaxArraySize=1001
MaxDBDMsgs=20012
MaxJobCount=28      #最大的作业数
MaxJobId=67043328
MaxMemPerNode=UNLIMITED
MaxStepCount=40000
MaxTasksPerNode=512
MCSPlugin=mcs/none
#MCSParameters=
MessageTimeout=10
MpiDefault=pmi2 #pmix  ##启用MPI
#MpiParams=
#NodeFeaturesPlugins=
OverTimeLimit=0
PluginDir=/usr/games/slurm-munge/slurm-24.11.2/lib64/slurm
#PlugStackConfig=
#PowerParameters=
#PowerPlugin=
#PrEpParameters=
PrEpPlugins=prep/script
#PriorityParameters=
#PrioritySiteFactorParameters=
#PrioritySiteFactorPlugin=
PrivateData=none
PrologEpilogTimeout=65534
#PrologSlurmctld=
#PrologFlags=
PropagatePrioProcess=0
PropagateResourceLimits=ALL
#PropagateResourceLimitsExcept=
#RebootProgram=
#ReconfigFlags=
#RequeueExit=
#RequeueExitHold=
#ResumeFailProgram=
#ResvEpilog=
ResvOverRun=0
#ResvProlog=
ReturnToService=0
RoutePlugin=route/default
#SbcastParameters=
#ScronParameters=
#SlurmctldAddr=
#SlurmctldSyslogDebug=
#SlurmctldPrimaryOffProg=
#SlurmctldPrimaryOnProg=
#SlurmctldParameters=
#SlurmdParameters=
#SlurmdSyslogDebug=
#SlurmctldPlugstack=
SrunPortRange=0-0
SwitchType=switch/none
TCPTimeout=2
TmpFS=/tmp
#TopologyParam=
TrackWCKey=No
TreeWidth=50
UsePam=No
#UnkillableStepProgram=
UnkillableStepTimeout=60
VSizeFactor=0
#X11Parameters=
#
################################################
#                    NODES                     #
################################################

GresTypes=gpu
NodeName=fm2024 Gres=gpu:a100:2 CPUs=112 Sockets=2 CoresPerSocket=28 ThreadsPerCore=2 RealMemory=32041 State=UNKNOWN

#
################################################
#                  PARTITIONS                  #
################################################
PartitionName=q_GPU AllowGroups=all MinNodes=0 Nodes=fm2024 Default=YES State=UP

  

(2)slurmdbd.conf配置文件

文件里是root用户
#
# Example slurmdbd.conf file.
#
# See the slurmdbd.conf man page for more information.
#
# Archive info
#ArchiveJobs=yes
#ArchiveDir="/tmp"
#ArchiveSteps=yes
#ArchiveScript=
#JobPurge=12
#StepPurge=1
#
# Authentication info
AuthType=auth/munge
#AuthInfo=/var/run/munge/munge.socket.2
#
# slurmDBD info为启用slurmdbd的管理服务器,与slurm.conf中的AccountingStorageHost一致
DbdHost=sw01
#DbdBackupAddr=172.17.0.2
#DbdBackupHost=mn02
DbdPort=6819
SlurmUser=root
MessageTimeout=30
DebugLevel=7
#DefaultQOS=normal,standby
LogFile=/usr/local/slurm/log/slurmdbd.log
PidFile=/usr/local/slurm/run/slurmdbd.pid
#PluginDir=/usr/lib/slurm
#PrivateData=accounts,users,usage,jobs
PrivateData=jobs
#TrackWCKey=yes
#
# Database info
StorageType=accounting_storage/mysql
StorageHost=localhost
#StorageBackupHost=mn02
StoragePort=3306
StoragePass=123456
StorageUser=slurm
StorageLoc=slurm_acct_db
CommitDelay=1

  

(2)文件里是root用户

########################################################
#  Configuration file for Slurm - 2021-08-20T10:27:23  #
########################################################
#
#
#
################################################
#                   CONTROL                    #
################################################
ClusterName=Sunway    #集群名称
SlurmUser=root
SlurmctldHost=Dell    #主控制器的主机名
#SlurmctldHost=Intel  #备控制器的主机名
SlurmctldPort=6817    #slurctld的监听端口
SlurmdPort=6818       #slurmd的通信端口
SlurmdUser=root
#
################################################
#            LOGGING & OTHER PATHS             #
################################################
SlurmctldLogFile=/var/log/slurmctld.log
SlurmdLogFile=/var/log/slurmd.log
SlurmdPidFile=/var/run/slurmd.pid
SlurmdSpoolDir=/var/spool/slurmd
#SlurmSchedLogFile=
SlurmctldPidFile=/var/run/slurmctld.pid
StateSaveLocation=/var/spool/slurmctld  #集群状态文件存放位置(全局文件系统)
#
################################################
#                  ACCOUNTING                  #
################################################
#AccountingStorageBackupHost=Intel  #slurmdbd备机
#AccountingStorageEnforce=none 
AccountingStorageEnforce=associations,limits,qos
AccountingStorageHost=Dell  #slurmdbd主机,为数据库管理服务器,即slurmdbd运行的服务器
AccountingStoragePort=6819
AccountingStorageType=accounting_storage/slurmdbd
#AccountingStorageUser=
#AccountingStoreJobComment=Yes
AcctGatherEnergyType=acct_gather_energy/none
AcctGatherFilesystemType=acct_gather_filesystem/none
AcctGatherInterconnectType=acct_gather_interconnect/none
AcctGatherNodeFreq=0
AcctGatherProfileType=acct_gather_profile/none
ExtSensorsType=ext_sensors/none
ExtSensorsFreq=0
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/linux
#
################################################
#           SCHEDULING & ALLOCATION            #
################################################
PreemptMode=OFF
PreemptType=preempt/none
PreemptExemptTime=00:00:00
PriorityType=priority/basic
#SchedulerParameters=
SchedulerTimeSlice=30
SchedulerType=sched/backfill
SelectType=select/cons_tres
#SelectType=select/linear  #为资源选择类型,参见资源选择说明
SelectTypeParameters=CR_CPU #CR_Core_Memory
SlurmSchedLogLevel=0
#
################################################
#                   TOPOLOGY                   #
################################################
TopologyPlugin=topology/none
#
################################################
#                    TIMERS                    #
################################################
BatchStartTimeout=10
CompleteWait=0
EpilogMsgTime=2000
GetEnvTimeout=2
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=60  #控制器通信超时
SlurmdTimeout=60     #slurmd通信超时
WaitTime=0
#
################################################
#                    POWER                     #
################################################
#ResumeProgram=
ResumeRate=300
ResumeTimeout=60
#SuspendExcNodes=
#SuspendExcParts=
#SuspendProgram=
SuspendRate=60
SuspendTime=NONE
SuspendTimeout=30
#
################################################
#                    DEBUG                     #
################################################
DebugFlags=NO_CONF_HASH
SlurmctldDebug=info
SlurmdDebug=info
#
################################################
#               EPILOG & PROLOG                #
################################################
#Epilog=/usr/local/etc/epilog
#Prolog=/usr/local/etc/prolog
#SrunEpilog=/usr/local/etc/srun_epilog
#SrunProlog=/usr/local/etc/srun_prolog
#TaskEpilog=/usr/local/etc/task_epilog
#TaskProlog=/usr/local/etc/task_prolog
#
################################################
#               PROCESS TRACKING               #
################################################
ProctrackType=proctrack/pgid
#
################################################
#             RESOURCE CONFINEMENT             #
################################################
TaskPlugin=task/affinity
#TaskPlugin=task/cgroup
#TaskPluginParam=verbose
#TaskPluginParam=Sched
#
################################################
#                    OTHER                     #
################################################
#AccountingStorageExternalHost=
#AccountingStorageParameters=
AccountingStorageTRES=cpu,mem,energy,node,billing,fs/disk,vmem,pages
AllowSpecResourcesUsage=No
#AuthAltTypes=
#AuthAltParameters=
#AuthInfo=
AuthType=auth/munge
#BurstBufferType=
#CliFilterPlugins=
#CommunicationParameters=
CoreSpecPlugin=core_spec/none
#CpuFreqDef=
CpuFreqGovernors=Performance,OnDemand,UserSpace
CredType=cred/munge
#DefMemPerNode=
#DependencyParameters=
DisableRootJobs=No
EioTimeout=60
EnforcePartLimits=NO
#EpilogSlurmctld=
#FederationParameters=
FirstJobId=1
#GresTypes=
GpuFreqDef=high,memory=high
GroupUpdateForce=1
GroupUpdateTime=600
HealthCheckInterval=0
HealthCheckNodeState=ANY
#HealthCheckProgram=
InteractiveStepOptions=--interactive
#JobAcctGatherParams=
JobCompHost=localhost
JobCompLoc=/var/log/slurm_jobcomp.log
JobCompPort=0
#JobCompType=jobcomp/none
JobCompType=jobcomp/mysql
JobCompUser=slurm
JobCompPass=Nvmetest@123
JobContainerType=job_container/none
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
#JobDefaults=
JobFileAppend=0
JobRequeue=1
#JobSubmitPlugins=
#KeepAliveTime=
KillOnBadExit=0
#LaunchParameters=
LaunchType=launch/slurm
#Licenses=
LogTimeFormat=iso8601_ms
#MailDomain=
MailProg=/bin/mail
MaxArraySize=1001
MaxDBDMsgs=20012
MaxJobCount=10000      #最大的作业数
MaxJobId=67043328
MaxMemPerNode=UNLIMITED
MaxStepCount=40000
MaxTasksPerNode=512
MCSPlugin=mcs/none
#MCSParameters=
MessageTimeout=10
MpiDefault=pmi2  ##启用MPI
#MpiParams=
#NodeFeaturesPlugins=
OverTimeLimit=0
PluginDir=/usr/local/lib/slurm
#PlugStackConfig=
#PowerParameters=
#PowerPlugin=
#PrEpParameters=
PrEpPlugins=prep/script
#PriorityParameters=
#PrioritySiteFactorParameters=
#PrioritySiteFactorPlugin=
PrivateData=none
PrologEpilogTimeout=65534
#PrologSlurmctld=
#PrologFlags=
PropagatePrioProcess=0
PropagateResourceLimits=ALL
#PropagateResourceLimitsExcept=
#RebootProgram=
#ReconfigFlags=
#RequeueExit=
#RequeueExitHold=
#ResumeFailProgram=
#ResvEpilog=
ResvOverRun=0
#ResvProlog=
ReturnToService=0
RoutePlugin=route/default
#SbcastParameters=
#ScronParameters=
#SlurmctldAddr=
#SlurmctldSyslogDebug=
#SlurmctldPrimaryOffProg=
#SlurmctldPrimaryOnProg=
#SlurmctldParameters=
#SlurmdParameters=
#SlurmdSyslogDebug=
#SlurmctldPlugstack=
SrunPortRange=0-0
SwitchType=switch/none
TCPTimeout=2
TmpFS=/tmp
#TopologyParam=
TrackWCKey=No
TreeWidth=50
UsePam=No
#UnkillableStepProgram=
UnkillableStepTimeout=60
VSizeFactor=0
#X11Parameters=
#
################################################
#                    NODES                     #
################################################
NodeName=intel CPUs=32 Sockets=2 CoresPerSocket=16 ThreadsPerCore=1 State=UNKNOWN
#NodeName=Dell Sockets=2 CoresPerSocket=24 ThreadsPerCore=1 RealMemory=100000
#NodeName=sw5a0[1-3] CPUS=4 Sockets=4 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1
NodeName=phytium CPUs=128 SocketsPerBoard=2 CoresPerSocket=64 ThreadsPerCore=1 State=UNKNOWN
NodeName=swa CPUS=16 Sockets=16 CoresPerSocket=1 ThreadsPerCore=1 State=UNKNOWN
NodeName=sw2cpu CPUs=64  Sockets=2 CoresPerSocket=32 ThreadsPerCore=1 State=UNKNOWN
NodeName=mcn[01-02] CPUs=6  Sockets=6 CoresPerSocket=1 ThreadsPerCore=1 State=UNKNOWN
NodeName=x86a,x86b,x86c CPUs=32 Sockets=2 CoresPerSocket=8 ThreadsPerCore=2 State=UNKNOWN
#
################################################
#                  PARTITIONS                  #
################################################
#PartitionName=manycore Default=YES AllowGroups=all MinNodes=0 Nodes=sw5a0[1-3] State=UP
PartitionName=q_Intel AllowGroups=all MinNodes=0 Nodes=intel State=UP 
PartitionName=q_Kylin AllowGroups=all MinNodes=0 Nodes=phytium State=UP
PartitionName=q_sw6a AllowGroups=all MinNodes=0 Nodes=swa State=UP
PartitionName=q_sw6b AllowGroups=all MinNodes=0 Nodes=sw2cpu State=UP 
PartitionName=q_sw9a AllowGroups=all MinNodes=0 Nodes=mcn[01-02] State=UP DEFAULT=YES
PartitionName=q_x86 AllowGroups=all MinNodes=0 Nodes=x86a,x86b,x86c State=UP 

  

  

 

结束

 -

posted @ 2023-04-06 21:39  惊小呆  阅读(3678)  评论(3)    收藏  举报