计算化学公社

标题: Ubuntu20.04 安装单机slurm教程 [打印本页]

作者
Author:
wxyhgk    时间: 2022-10-13 17:14
标题: Ubuntu20.04 安装单机slurm教程
本帖最后由 wxyhgk 于 2022-11-20 23:18 编辑

=========== 视频教程 ==========
http://b23.tv/mSXWBjI

=========== 文字稿 ===========
配置 slurm 的主要目的是为了用他的这个作业的邮件通知,我平时使用 Gaussian 09 软件,运行的时候不知道啥时候运行完成了,每次都需要自己去看,就很烦,所以我的需求是当我的作业完成的时候可以邮件提醒我啥时候完成了,效率就会提高很多。



最终效果:


(, 下载次数 Times of downloads: 108)


1.准备工作

本教程不需要任何linux基础

2.安装和配置Slurm
2.1 安装 slurm
首先使用 MobaXterm 软件,用 root 用户登录 ssh 。
  1. sudo apt install slurm-wlm slurm-wlm-doc -y
复制代码

检查是否安装成功
  1. slurmd --version
复制代码
会得到:slurm-wlm 19.05.5

2.2 配置 slurm
配置文件是放在/etc/slurm-llnl/ 下面的,MobaXterm 左边是sftp ,进入后,新建一个 slurm.conf 文件即可


(, 下载次数 Times of downloads: 98)

如果你会使用 vi ,也可以使用命令
  1. sudo vi /etc/slurm-llnl/slurm.conf
复制代码


接下来就是编辑 slurm.conf 文件了,像我下面一样(有点长别害怕)
  1. ClusterName=cool
  2. ControlMachine=master
  3. #ControlAddr=
  4. #BackupController=
  5. #BackupAddr=
  6. #
  7. MailProg=/usr/bin/s-nail
  8. SlurmUser=root
  9. #SlurmdUser=root
  10. SlurmctldPort=6817

  11. SlurmdPort=6818
  12. AuthType=auth/munge
  13. #JobCredentialPrivateKey=
  14. #JobCredentialPublicCertificate=
  15. StateSaveLocation=/var/spool/slurmctld
  16. SlurmdSpoolDir=/var/spool/slurmd
  17. SwitchType=switch/none
  18. MpiDefault=none
  19. SlurmctldPidFile=/var/run/slurmctld.pid
  20. SlurmdPidFile=/var/run/slurmd.pid
  21. ProctrackType=proctrack/pgid
  22. #PluginDir=
  23. #FirstJobId=
  24. ReturnToService=0
  25. #MaxJobCount=
  26. #PlugStackConfig=
  27. #PropagatePrioProcess=
  28. #PropagateResourceLimits=
  29. #PropagateResourceLimitsExcept=
  30. #Prolog=
  31. #Epilog=
  32. #SrunProlog=
  33. #SrunEpilog=
  34. #TaskProlog=
  35. #TaskEpilog=
  36. #TaskPlugin=
  37. #TrackWCKey=no
  38. #TreeWidth=50
  39. #TmpFS=
  40. #UsePAM=
  41. #
  42. # TIMERS
  43. SlurmctldTimeout=300
  44. SlurmdTimeout=300
  45. InactiveLimit=0
  46. MinJobAge=300
  47. KillWait=30
  48. Waittime=0
  49. #
  50. # SCHEDULING
  51. SchedulerType=sched/backfill
  52. #SchedulerAuth=
  53. #SelectType=select/linear
  54. #PriorityType=priority/multifactor
  55. #PriorityDecayHalfLife=14-0
  56. #PriorityUsageResetPeriod=14-0
  57. #PriorityWeightFairshare=100000
  58. #PriorityWeightAge=1000
  59. #PriorityWeightPartition=10000
  60. #PriorityWeightJobSize=1000
  61. #PriorityMaxAge=1-0
  62. #
  63. # LOGGING

  64. SlurmctldDebug=info
  65. SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
  66. SlurmdDebug=info
  67. SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
  68. JobCompType=jobcomp/none
  69. #JobCompLoc=
  70. #
  71. # ACCOUNTING
  72. #JobAcctGatherType=jobacct_gather/linux
  73. #JobAcctGatherFrequency=30
  74. #
  75. #AccountingStorageType=accounting_storage/slurmdbd
  76. #AccountingStorageHost=
  77. #AccountingStorageLoc=
  78. #AccountingStoragePass=
  79. #AccountingStorageUser=
  80. #
  81. # COMPUTE NODES

  82. PartitionName=master Nodes=master Default=NO MaxTime=INFINITE State=UP
  83. #NodeName=master State=UNKNOWN
  84. NodeName=master Sockets=2 CoresPerSocket=16 ThreadsPerCore=1 State=UNKNOWN
复制代码
上面代码中,

ControlMachine=master
PartitionName=master Nodes=master Default=NO MaxTime=INFINITE State=UP
#NodeName=master State=UNKNOWN
NodeName=master Sockets=2 CoresPerSocket=16 ThreadsPerCore=1 State=UNKNOWN

我标记的 红色部分 绿色部分 是需要修改的。

红色部分的修改 :
使用 hostname 命令查看你的名字,然后把得到的名字替换上面的 master


绿色部分修改:
这部分稍微有点复杂,首先来解释各个名字的意思




2.3 启动 slurm
完成上述所有步骤后,就能启动了
  1. sudo systemctl enable slurmctld --now
  2. sudo systemctl enable slurmd --now
复制代码


查看队列 slurm 队列信息:

  1. sinfo
复制代码

(, 下载次数 Times of downloads: 110)

如果这部分是 idle 就说明是可以的,至此就已经安装完成了,如果不是idle请看这个


3.配置邮件提醒
3.1 安装 s-nail


使用命令
  1. sudo apt install s-nail
复制代码


3.2 配置 s-nail
  1. vi /etc/s-nail.rc
复制代码
在末尾添加
  1. set from="你的qq邮箱"
  2. set smtp="smtps://smtp.qq.com:465"
  3. set smtp-auth-user="你的qq邮箱"
  4. set smtp-auth-password="qq邮箱授权码"
  5. set smtp-auth=login
复制代码
qq邮箱授权码如何得到?点我查看

配置好之后,使用测试命令:echo "邮件内容" | s-nail -s "邮件主题" 你的qq邮箱地址 看看qq邮箱是否得到消息

3.3 测试 sbatch 服务
在你 linux 含有Gaussian计算文件夹下面,使用
  1. vi g09.slurm
复制代码
填写如下内容
  1. #!/bin/bash
  2. #SBATCH -J GaussianJob
  3. #SBATCH -p master
  4. #SBATCH -N 1
  5. #SBATCH -n 1
  6. #SBATCH --mail-user=你的qq邮箱
  7. #SBATCH --mail-type=ALL

  8. g09 $1
复制代码
上面的 master 是你的机器名字,每个人都不一样,需要你自己修改,上面已经说了是运行 hostname 得到的名字,替换 master

配置好上面所有之后,使用命令
  1. sbatch g09.slurm 你的gjf文件名字
复制代码


愉快地看看你 QQ 邮箱是否受到邮件了。

更多的 slurm 教程可以看这个:

中科大超级计算机用户文档
自己编写的超简单运行文档

原文章地址 https://wxyhgk.com/article/ubuntu-slurm

作者
Author:
wxyhgk    时间: 2022-10-13 17:17
编辑器很不方便,后面再修改吧
作者
Author:
abin    时间: 2022-10-13 18:10
本帖最后由 abin 于 2022-10-13 19:06 编辑

这个教程应该可以操作成功.
只要有耐心即可.

hpc4you toolkit solo

适用于不想自己动手的朋友.

单机工作站快速自动部署slurm调度器.

如何使用?
上传工具包,
输入
  1. unzip -qo hpc4you*zip ; source code
复制代码

即可自动完成安装.

操作演示, BV1Gg411R7tt.

作者
Author:
wxyhgk    时间: 2022-10-13 18:58
abin 发表于 2022-10-13 18:10
hpc4you toolkit solo

适用于不想自己动手的朋友.

看了下你这个后续的要钱
作者
Author:
abin    时间: 2022-10-13 19:07
wxyhgk 发表于 2022-10-13 18:58
看了下你这个后续的要钱

要么自己花时间,

要么花钱, 就这么简单.

有闲功夫, 又有兴趣的, 建议自己动手.
整个配置过程也很有意思的.
作者
Author:
wxyhgk    时间: 2022-10-13 19:12
abin 发表于 2022-10-13 19:07
要么自己花时间,

要么花钱, 就这么简单.

半个小时可以搞定的事情得花几百,个人感觉你这个比较坑了
作者
Author:
abin    时间: 2022-10-13 19:54
wxyhgk 发表于 2022-10-13 19:12
半个小时可以搞定的事情得花几百,个人感觉你这个比较坑了

坑不坑的,我不评价。

来找我要工具的,
我都是建议自己动手。

实在不想自己动手,
那就付钱。

觉得价格有问题,那就找别人。
一切皆自愿。


作者
Author:
想不想该不该    时间: 2022-10-31 17:09
实测可以~~~多谢楼主
作者
Author:
sun35mr    时间: 2022-11-8 00:34
想请教一下楼主,关于 SchedulerType=sched/backfill,这里用 backfill 好还是 buildin 好呢?
作者
Author:
wxyhgk    时间: 2022-11-8 09:57
sun35mr 发表于 2022-11-8 00:34
想请教一下楼主,关于 SchedulerType=sched/backfill,这里用 backfill 好还是 buildin 好呢?

自己不懂就不用管这些,不修改,如果你想改到这里看:https://slurm.schedmd.com/sched_config.html
作者
Author:
wxyhgk    时间: 2022-11-8 10:01
sun35mr 发表于 2022-11-8 00:34
想请教一下楼主,关于 SchedulerType=sched/backfill,这里用 backfill 好还是 buildin 好呢?
  1. SchedulerType=sched/backfill # 要使用的调度程序的类型。注意,slurmctld守护程序必须重新启动才能使调度程序类型的更改生效(重新配置正在运行的守护程序对此参数无效)。如果需要,可以使用scontrol命令手动更改作业优先级。可接受的类型为:
  2.      # sched/backfill # 用于回填调度模块以增加默认FIFO调度。如这样做不会延迟任何较高优先级作业的预期启动时间,则回填调度将启动较低优先级作业。回填调度的有效性取决于用户指定的作业时间限制,否则所有作业将具有相同的时间限制,并且回填是不可能的。注意上面SchedulerParameters选项的文档。这是默认配置
  3.      # sched/builtin # 按优先级顺序启动作业的FIFO调度程序。如队列中的任何作业无法调度,则不会调度该队列中优先级较低的作业。对于作业的一个例外是由于队列限制(如时间限制)或关闭/耗尽节点而无法运行。在这种情况下,可以启动较低优先级的作业,而不会影响较高优先级的作业。
  4.      # sched/hold # 如果 /etc/slurm.hold 文件存在,则暂停所有新提交的作业,否则使用内置的FIFO调度程序。
复制代码


来源: http://hmli.ustc.edu.cn/doc/linu ... /slurm-install.html
作者
Author:
阿司匹林泡腾片    时间: 2022-11-8 15:16
这个邮件提醒很nice,感谢楼主
作者
Author:
wxyhgk    时间: 2022-11-8 17:28
阿司匹林泡腾片 发表于 2022-11-8 15:16
这个邮件提醒很nice,感谢楼主

觉得不错就给我点个赞,增加点积分,不然以后没动力写教程了
作者
Author:
paramecium86    时间: 2022-11-9 17:11
感谢楼主教程。您好请问这种设置下如果想要slurm同时跑几个任务该怎么设置。我看了下现在这样一次运行一个任务其它在排队。
作者
Author:
wxyhgk    时间: 2022-11-9 18:39
paramecium86 发表于 2022-11-9 17:11
感谢楼主教程。您好请问这种设置下如果想要slurm同时跑几个任务该怎么设置。我看了下现在这样一次运行一个 ...

到这里自己配置 https://docs.hpc.sjtu.edu.cn/job/slurm.html
作者
Author:
shenzekai    时间: 2022-11-9 19:20
楼主好,可以问一下在输入sinfo之后出现下面这种报错应该如何解决呢?


sinfo: error: If munged is up, restart with --num-threads=10
sinfo: error: Munge encode failed: Failed to access "/run/munge/munge.socket.2": No such file or directory
sinfo: error: authentication: Socket communication error
slurm_load_partitions: Protocol authentication error

作者
Author:
wxyhgk    时间: 2022-11-9 21:30
shenzekai 发表于 2022-11-9 19:20
楼主好,可以问一下在输入sinfo之后出现下面这种报错应该如何解决呢?

首先停止掉上面的slurm两个服务,卸载两个包,然后重新安装
作者
Author:
paramecium86    时间: 2022-11-10 19:52
本帖最后由 paramecium86 于 2022-11-10 19:55 编辑
wxyhgk 发表于 2022-11-9 18:39
到这里自己配置 https://docs.hpc.sjtu.edu.cn/job/slurm.html

您好。我看着这个链接依然没有找到如何让单一node同时队列里运行多个任务的方法。都是提交上去一个在run 剩下的都在priority或者resource。
大概就是这个帖子里的情形 http://bbs.keinsci.com/forum.php ... 774&highlight=slurm

我想加入这个帖子里提到的几个slurm.config 里的控制选项 ,不过都提示错误。

作者
Author:
abin    时间: 2022-11-10 20:14
paramecium86 发表于 2022-11-10 19:52
您好。我看着这个链接依然没有找到如何让单一node同时队列里运行多个任务的方法。都是提交上去一个在run  ...

楼上提到的科大李会民先生写的手册,就很详细了。
如果你看了后,还是不知所云,那么问问你们的IT支持吧。

或者查阅 https://gitee.com/hpc4you/hpc 里面doc目录下的PDF文档,
里面有一部分 Slurm的自我修养,
这部分我罗列了我认为写得通俗易懂而且有很多示例的讲解类的参考资料。
自己看看吧。

作者
Author:
wxyhgk    时间: 2022-11-10 23:04
paramecium86 发表于 2022-11-10 19:52
您好。我看着这个链接依然没有找到如何让单一node同时队列里运行多个任务的方法。都是提交上去一个在run  ...

举 g16 来说,我自己写一个配置吧

  1. #!/bin/bash
  2. ##===任务名字====
  3. #SBATCH -J 5950x-g16

  4. #===计算节点===
  5. #SBATCH -p Ubuntu-5950x

  6. #===总核数和数量设定 ===
  7. #SBATCH -N 1
  8. #SBATCH -n 1

  9. #===输入和输出文件===
  10. #SBATCH --output=g16Job%j.out
  11. #SBATCH --error=g16Job%j.err

  12. #===邮件通知===
  13. #SBATCH --mail-user=wxyhgk@qq.com
  14. #SBATCH --mail-type=ALL

  15. #=============== 加载 g16 环境变量 ===========

  16. export g16root=/home/wxyhgk
  17. export GAUSS_SCRDIR=/home/wxyhgk/g16/scratch
  18. source /home/wxyhgk/g16/bsd/g16.profile
  19. export PGI_FASTMATH_CPU=sandybridge
  20. #---------------------分割线-----------------
  21. #---------------------分割线-----------------
  22. #====运行命令====
  23. rm -f $HOME/g16/scratch/* #每次计算清空缓存文件

  24. # 运行任务1
  25. g16 $1

  26. # 运行任务2
  27. g16 $2
复制代码
上面的计算节点中的 Ubuntu-5950x 修改成你的计算节点

运行 sbatch g16.slurm name1.gjf name2.gjf 修改name1和name2名字即可
作者
Author:
paramecium86    时间: 2022-11-11 09:46
wxyhgk 发表于 2022-11-10 23:04
举 g16 来说,我自己写一个配置吧

上面的计算节点中的 Ubuntu-5950x 修改成你的计算节点

谢谢您的回复。我用了这种写法,不过是我没形容好问题。这样写脚本,这样两个任务还是排在同一个slurm的job里, 这俩高斯任务是先算完第一个然后再算第二个。而我问题想要问的是 我可不可以 比如在队列里提交多个任务到同一个节点。让它们同时算。 比如如图 我现在提交多个任务就是一个job在算其它的在等。能不能通过设置slurm,当我只有一个节点的时候也让多个任务都在算呢 而不是一个任务算 其它的PD

作者
Author:
biogon    时间: 2022-11-11 09:57
paramecium86 发表于 2022-11-11 09:46
谢谢您的回复。我用了这种写法,不过是我没形容好问题。这样写脚本,这样两个任务还是排在同一个slurm的j ...

发你的slurm.conf上来看看,还有你这个任务用了多少核
作者
Author:
paramecium86    时间: 2022-11-11 10:10
biogon 发表于 2022-11-11 09:57
发你的slurm.conf上来看看,还有你这个任务用了多少核

谢谢您,这是我的 slurm.conf  这几个任务我就是测试用,脚本里设置是调用2个核心。

作者
Author:
wxyhgk    时间: 2022-11-11 16:32
paramecium86 发表于 2022-11-11 09:46
谢谢您的回复。我用了这种写法,不过是我没形容好问题。这样写脚本,这样两个任务还是排在同一个slurm的j ...

我查过了似乎是不行的这样的,slrum 一个节点只能运行一个脚本
作者
Author:
biogon    时间: 2022-11-11 22:30
paramecium86 发表于 2022-11-11 10:10
谢谢您,这是我的 slurm.conf  这几个任务我就是测试用,脚本里设置是调用2个核心。

不要注释掉SelectTypeParameters=CR_Core
作者
Author:
paramecium86    时间: 2022-11-13 10:40
wxyhgk 发表于 2022-11-11 16:32
我查过了似乎是不行的这样的,slrum 一个节点只能运行一个脚本

好的好的 感谢
作者
Author:
paramecium86    时间: 2022-11-13 10:41
biogon 发表于 2022-11-11 22:30
不要注释掉SelectTypeParameters=CR_Core

我试过这个 一提交到队列马上就结束了 跑不上任务。
作者
Author:
mxh    时间: 2022-11-16 16:00
老师,您好。使用测试命令:echo "邮件内容" | s-nail -s "邮件主题" 你的qq邮箱地址,我可以收到qq邮箱的消息。但使用排队系统收不到邮件提醒,脚本如图所示。是否有其他的额外设置我没注意到,请老师赐教。
作者
Author:
wxyhgk    时间: 2022-11-17 00:33
mxh 发表于 2022-11-16 16:00
老师,您好。使用测试命令:echo "邮件内容" | s-nail -s "邮件主题" 你的qq邮箱地址,我可以收到qq邮箱的 ...

不应该啊,你是不是提交错了还是什么?使用
  1. squeue
复制代码

看看是不是在运行
作者
Author:
mxh    时间: 2022-11-17 09:37
本帖最后由 mxh 于 2022-11-17 09:38 编辑
wxyhgk 发表于 2022-11-17 00:33
不应该啊,你是不是提交错了还是什么?使用

看看是不是在运行

老师,运行成功了,我之前一直用slurm,看到您的配置邮件的帖子,觉得非常有用进行了尝试,但没有收到邮件。所以,我现在用了一个笨拙的方法,我把这个写到提交脚本了,echo "邮件内容" | s-nail -s "邮件主题" 你的qq邮箱地址,也能收到提示邮件,勉强作为一个提醒,也很有帮助,再次感谢老师写帖子付出的工作和解答。
作者
Author:
wxyhgk    时间: 2022-11-17 10:21
mxh 发表于 2022-11-17 09:37
老师,运行成功了,我之前一直用slurm,看到您的配置邮件的帖子,觉得非常有用进行了尝试,但没有收到邮 ...

是忘记重启 slurm 服务了吗
作者
Author:
乐平    时间: 2022-11-20 17:13
编写以下脚本:
#!/bin/bash
cpuhx=`cat /proc/cpuinfo | grep "cores" | uniq | awk -F":" '{print $2}'`
echo "CPU 核心数:$cpuhx" ;
cpuxc=`cat /proc/cpuinfo | grep "processor" | wc -l`
echo "CPU 线程数:$cpuxc" ;
echo "如果线程数是核心数的两倍,为开启了超线程"
复制代码
然后使用命令 bash cxc.sh 运行脚本,看看线程数是不是核心数的两倍,如果是就开启了,没有就没开启。


楼主您好!

关于脚本里的线程数与 CPU 核心数有个疑问。由于是双路 CPU(我的塔式服务器有两个 CPU),脚本给出的核心数只是单个 CPU 的核心数,所有,还需要考虑 CPU 的个数 * CPU 核心数。

也许可以加上您前面提到的
  1. cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
复制代码


作者
Author:
wxyhgk    时间: 2022-11-20 20:20
本帖最后由 wxyhgk 于 2022-11-20 20:31 编辑
乐平 发表于 2022-11-20 17:13
楼主您好!

关于脚本里的线程数与 CPU 核心数有个疑问。由于是双路 CPU(我的塔式服务器有两个 CPU ...

这个脚本我博客里面更新了,之前的 bash 水平不高,写了个临时的,可以使用新脚本
  1. #!/bin/bash
  2. cpunum=`cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l`
  3. echo "CPU 个数: $cpunum";
  4. cpuhx=`cat /proc/cpuinfo | grep "cores" | uniq | awk -F":" '{print $2}'`
  5. echo "CPU 核心数:$cpuhx" ;
  6. cpuxc=`cat /proc/cpuinfo | grep "processor" | wc -l`
  7. echo "CPU 线程数:$cpuxc" ;

  8. if [[ `expr $cpunum\*$[cpuhx*2] ` -eq $cpuxc ]];
  9. then
  10.     echo "开启了超线程"
  11. else
  12.     echo "未开启超线程"
  13. fi
复制代码



作者
Author:
Reminder    时间: 2022-11-20 23:21
楼主您好,请问输入sinfo后出现如下报错应如何解决?

作者
Author:
wxyhgk    时间: 2022-11-20 23:27
Reminder 发表于 2022-11-20 23:21
楼主您好,请问输入sinfo后出现如下报错应如何解决?

看看自己是不是替换错了,把所有 master 替换成你的 hostname,本人已经发了视频教程, http://b23.tv/mSXWBjI,可以看看
作者
Author:
乐平    时间: 2022-11-21 10:50
wxyhgk 发表于 2022-11-20 20:20
这个脚本我博客里面更新了,之前的 bash 水平不高,写了个临时的,可以使用新脚本

谢谢更新的脚本!
作者
Author:
myzpku    时间: 2022-11-21 17:08
wxyhgk 发表于 2022-11-20 20:20
这个脚本我博客里面更新了,之前的 bash 水平不高,写了个临时的,可以使用新脚本

请问楼主:当如图中线程数是CPU核数4倍时ThreadsPerCore还是写2么?
作者
Author:
wxyhgk    时间: 2022-11-21 18:41
myzpku 发表于 2022-11-21 17:08
请问楼主:当如图中线程数是CPU核数4倍时ThreadsPerCore还是写2么?

1 代表没开启超线程
2 代表开启了超线程

所以填 2
作者
Author:
0620DAN    时间: 2022-12-3 11:22
wxyhgk 发表于 2022-11-9 18:39
到这里自己配置 https://docs.hpc.sjtu.edu.cn/job/slurm.html



作者
Author:
0620DAN    时间: 2022-12-3 11:24
wxyhgk 发表于 2022-11-9 18:39
到这里自己配置 https://docs.hpc.sjtu.edu.cn/job/slurm.html

请问解决了吗,不太会啊
作者
Author:
mxh    时间: 2023-3-30 09:08
请问各位老师,我们用的超算squeue可以显示所用的CPUs,我照这个教程在组内服务器安装slurm,可以运行,如果想要和超算一样的效果,可以显示CPUs,请问各位老师如何设置。
作者
Author:
乐平    时间: 2023-4-24 14:36
本帖最后由 乐平 于 2023-4-24 14:37 编辑

Ubuntu 22.04 系统按照您的方法用
  1. sudo apt install slurm-wlm slurm-wlm-doc -y
复制代码

安装后可以显示 slurmd 的版本号
  1. (base) huan@grape:~/scitools$ slurmd --version
  2. slurm-wlm 21.08.5
复制代码


但是配置好 slurm.conf 并且启动
  1. (base) huan@grape:/etc/slurm$ sudo systemctl enable slurmctld --now
  2. Synchronizing state of slurmctld.service with SysV service script with /lib/systemd/systemd-sysv-install.
  3. Executing: /lib/systemd/systemd-sysv-install enable slurmctld
  4. (base) huan@grape:/etc/slurm$ sudo systemctl enable slurmd --now
  5. Synchronizing state of slurmd.service with SysV service script with /lib/systemd/systemd-sysv-install.
  6. Executing: /lib/systemd/systemd-sysv-install enable slurmd
复制代码



查看队列信息时候,出现通讯失败
  1. (base) huan@grape:/etc/slurm$ sinfo
  2. slurm_load_partitions: Unable to contact slurm controller (connect failure)
复制代码



不知道是不是系统的原因……
作者
Author:
wxyhgk    时间: 2023-4-24 15:00
乐平 发表于 2023-4-24 14:36
Ubuntu 22.04 系统按照您的方法用

安装后可以显示 slurmd 的版本号

仔细检查配置文件是否有问题,Ubuntu 22.04 我也测试过,应该没问题才对
作者
Author:
乐平    时间: 2023-4-24 17:28
wxyhgk 发表于 2023-4-24 15:00
仔细检查配置文件是否有问题,Ubuntu 22.04 我也测试过,应该没问题才对

谢谢回复。

Ubuntu 22.04 系统里 slurm 配置文件的路径和您的帖子不一样,没有 /etc/slurm-llnl 这个路径,我只能找到 /etc/slurm,于是把 slurm.conf 放在了 /etc/slurm 路径下。

不知道是不是这个原因?
作者
Author:
wxyhgk    时间: 2023-4-24 19:06
乐平 发表于 2023-4-24 17:28
谢谢回复。

Ubuntu 22.04 系统里 slurm 配置文件的路径和您的帖子不一样,没有 /etc/slurm-llnl 这个 ...

确实,Ubuntu 22.04 路径改变了,可以使用下面两种方法
1.方法1使用我的 CDN 远程脚本
下面的脚本会替换你 slurm.conf 文件里面的内容,然后正确配置
(确保你安装了 curl 命令,如果没有就是用 sudo apt install
curl-y
  1. cd /etc/slurm && curl -s http://pic.wxyh.top/ubuntu-slurm-replace.sh | bash
复制代码


2. 方法2.自己写脚本
这里给出我的 CDN 远程脚本,
使用
  1. cd /etc/slurm && sudo vi ubuntu-slurm-repalce.sh
复制代码

建立一个脚本,内容填写下面的


  1. #!/bin/bash

  2. # 输入文件名
  3. input_file="slurm.conf"
  4. # 备份文件名
  5. backup_file="slurm-beifen.conf"

  6. # 备份原始文件
  7. cp "$input_file" "$backup_file"

  8. # 获取主机名
  9. hostname=$(hostname)

  10. # 获取 CPU 个数
  11. cpu_count=$(cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l)

  12. # 获取每个 CPU 的核数
  13. cores_per_socket=$(cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F ":" '{print $2}' | xargs)

  14. # 检查是否开启超线程
  15. thread_count=$(cat /proc/cpuinfo | grep "processor" | wc -l)
  16. threads_per_core=1
  17. if [[ $((cpu_count * cores_per_socket * 2)) -eq $thread_count ]]; then
  18.     threads_per_core=2
  19. fi

  20. # 使用 sed 命令替换主机名、CPU 个数、每个 CPU 的核数和是否开启超线程
  21. sed -i -e "s/ControlMachine=master/ControlMachine=$hostname/g" \
  22.     -e "s/NodeName=master/NodeName=$hostname/g" \
  23.     -e "s/PartitionName=master Nodes=master/PartitionName=$hostname Nodes=$hostname/g" \
  24.     -e "s/Sockets=2/Sockets=$cpu_count/g" \
  25.     -e "s/CoresPerSocket=16/CoresPerSocket=$cores_per_socket/g" \
  26.     -e "s/ThreadsPerCore=1/ThreadsPerCore=$threads_per_core/g" \
  27.     "$input_file"

  28. # 将 slurm-llnl 全部替换成 slurm
  29. sed -i 's/slurm-llnl/slurm/g' slurm.conf


  30. # 输出成功信息
  31. echo "文件 $input_file 已经更新.原文件备份为 $backup_file"

复制代码


建立好了之后,使用
  1. sudo bash ubuntu-slurm-repalce.sh
复制代码





作者
Author:
teikouni    时间: 2023-4-26 16:25
您好,请问安装完之后提交任务发现计算一直没进行,运行时间一直是0,然后取消任务后状态一直处于CG状态是什么原因呢,求大佬指点
作者
Author:
wxyhgk    时间: 2023-4-26 16:58
本帖最后由 wxyhgk 于 2023-4-26 17:00 编辑
teikouni 发表于 2023-4-26 16:25
您好,请问安装完之后提交任务发现计算一直没进行,运行时间一直是0,然后取消任务后状态一直处于CG状态是 ...

我不清楚你做的什么任务,但是可以给你解释 CG 和 PD 的含义

CG (Completing):这表示作业正在完成阶段。作业已经完成执行,但在正式标记为已完成之前,SLURM 仍在处理一些后期管理任务,例如清理、数据收集等。

PD (Pending):这表示作业正在等待执行。作业已经提交,但由于各种原因(例如,没有足够的资源、优先级较低等)尚未开始执行。在有资源可用并且符合调度策略时,作业将从等待状态变为运行状态。
取消任务用
  1. scancel 任务job的id
复制代码



作者
Author:
teikouni    时间: 2023-4-26 21:12
wxyhgk 发表于 2023-4-26 16:58
我不清楚你做的什么任务,但是可以给你解释 CG 和 PD 的含义

CG (Completing):这表示作业正在完成阶 ...

试着运行了一下您教程中的这个任务,然后还是出现了类似的问题,似乎是运行不了,然后一直处于CG状态也结束不了
作者
Author:
wxyhgk    时间: 2023-4-27 10:04
teikouni 发表于 2023-4-26 21:12
试着运行了一下您教程中的这个任务,然后还是出现了类似的问题,似乎是运行不了,然后一直处于CG状态也结 ...

可以加我qq给你远程解决 3123624718
作者
Author:
abin    时间: 2023-4-27 12:05
如果是Ubuntu 22.04,
在某次系统升级之后,
会出现无法使用的问题。

楼上应该可以解决这个问题。

或者用我的工具包,刷完之后,立即可用,不过有偿。
作者
Author:
乐平    时间: 2023-5-9 22:49
安装完之后启动 slurm

  1. (base) huan@grape:~/scitools$ sinfo --long
  2. Tue May 09 22:43:49 2023
  3. PARTITION AVAIL  TIMELIMIT   JOB_SIZE ROOT OVERSUBS     GROUPS  NODES       STATE NODELIST
  4. debug*       up   infinite 1-infinite   no       NO        all      1    unknown* grape
复制代码


STATE 的状态是 unknown* ,不是 idle


提交计算任务始终在 PANDDING 的状态
  1. (base) huan@grape:~/scitools$ squeue
  2.              JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
  3.                  1     debug      h2o     huan PD       0:00      1 (Nodes required for job are DOWN, DRAINED or reserved for jobs in higher priority partitions)
复制代码



查看了 slurmd 和 slurmctld 的状态,显示如下:
应该是 slurmd 没正常运行(Active: failed ), slurmctld 似乎是正常运行的(Active: active (running) )。

  1. (base) huan@grape:~/scitools$ sudo systemctl status slurmd
  2. × slurmd.service - Slurm node daemon
  3.      Loaded: loaded (/lib/systemd/system/slurmd.service; enabled; vendor preset: enabled)
  4.      Active: failed (Result: exit-code) since Tue 2023-05-09 22:35:32 CST; 24s ago
  5.        Docs: man:slurmd(8)
  6.     Process: 145145 ExecStart=/usr/sbin/slurmd -D -s $SLURMD_OPTIONS (code=exited, status=1/FAILURE)
  7.    Main PID: 145145 (code=exited, status=1/FAILURE)
  8.         CPU: 152ms

  9. May 09 22:35:31 grape systemd[1]: Started Slurm node daemon.
  10. May 09 22:35:32 grape systemd[1]: slurmd.service: Main process exited, code=exited, status=1/FAILURE
  11. May 09 22:35:32 grape systemd[1]: slurmd.service: Failed with result 'exit-code'.
  12. (base) huan@grape:~/scitools$


  13. (base) huan@grape:~/scitools$ sudo systemctl status slurmctld
  14. ● slurmctld.service - Slurm controller daemon
  15.      Loaded: loaded (/lib/systemd/system/slurmctld.service; enabled; vendor preset: enabled)
  16.      Active: active (running) since Tue 2023-05-09 22:35:25 CST; 1min 12s ago
  17.        Docs: man:slurmctld(8)
  18.    Main PID: 145054 (slurmctld)
  19.       Tasks: 10
  20.      Memory: 2.3M
  21.         CPU: 83ms
  22.      CGroup: /system.slice/slurmctld.service
  23.              ├─145054 /usr/sbin/slurmctld -D -s
  24.              └─145055 "slurmctld: slurmscriptd" "" ""

  25. May 09 22:35:25 grape slurmctld[145054]: slurmctld: Recovered information about 1 jobs
  26. May 09 22:35:25 grape slurmctld[145054]: slurmctld: select/cons_tres: part_data_create_array: select/cons_tres: preparing for 1 partitions
  27. May 09 22:35:25 grape slurmctld[145054]: slurmctld: Recovered state of 0 reservations
  28. May 09 22:35:25 grape slurmctld[145054]: slurmctld: read_slurm_conf: backup_controller not specified
  29. May 09 22:35:25 grape slurmctld[145054]: slurmctld: select/cons_tres: select_p_reconfigure: select/cons_tres: reconfigure
  30. May 09 22:35:25 grape slurmctld[145054]: slurmctld: select/cons_tres: part_data_create_array: select/cons_tres: preparing for 1 partitions
  31. May 09 22:35:25 grape slurmctld[145054]: slurmctld: Running as primary controller
  32. May 09 22:35:25 grape slurmctld[145054]: slurmctld: No parameter for mcs plugin, default values set
  33. May 09 22:35:25 grape slurmctld[145054]: slurmctld: mcs: MCSParameters = (null). ondemand set.
  34. May 09 22:36:25 grape slurmctld[145054]: slurmctld: SchedulerParameters=default_queue_depth=100,max_rpc_cnt=0,max_sched_time=2,partition_job_depth=0,sched_max_job_start=0,sched>
  35. (base) huan@grape:~/scitools$
复制代码

作者
Author:
乐平    时间: 2023-5-10 16:51
本帖最后由 乐平 于 2023-5-10 16:52 编辑
mxh 发表于 2023-3-30 09:08
请问各位老师,我们用的超算squeue可以显示所用的CPUs,我照这个教程在组内服务器安装slurm,可以运行,如 ...

你可以在 squeue 命令后面自定义显示的内容,比如
  1. squeue -o"%.10i %.9P %.8j %.15u %.4t %.12M %.6D %.6C %.10R"
复制代码


这里的 %是占位符,后面的小数点数字代表用几个字符显示,紧随其后的字母代表要显示的项目,比如 i 代表 JOBID, p 代表 PARTITION,j 代表 JOBNAME, u 代表 USER,t 代表 STATE, M 代表时间,D 代表 NODE,C 代表 CPU, R 代表 NODELIST(REASON)

如果你觉得每次都输入这么一长串很麻烦,可以在环境变量里设置别名
  1. 打开环境变量文件
  2. vi ~/.bashrc

  3. 输入别名
  4. alias sqa='squeue -o"%.10i %.9P %.8j %.15u %.4t %.12M %.6D %.6C %.10R"'


  5. 保存关闭环境变量文件

  6. 激活环境变量
  7. source ~/.bashrc
复制代码

然后,你输入 squeue 就能显示你希望的 CPU 信息了。当然,各个项目的顺序你可以根据自己偏好进行调整。


作者
Author:
乐平    时间: 2023-5-10 22:17
乐平 发表于 2023-5-9 22:49
安装完之后启动 slurm

终于解决了!

其实主要是 slurm.conf 文件配置的细节问题。

之前没有注意到 “ProctrackType:”我选的是 Cgroup ,但是没有给出 cgroup.conf 设置,所以 slurmd 和 slurmctld 启动有问题。
“ProctrackType:”选为 Pgid 之后,再重新启动 slurmd 和 slurmctld 就正常了。

作者
Author:
llity    时间: 2023-5-15 13:24
本帖最后由 llity 于 2023-5-15 13:54 编辑

谢谢分享,发现邮件通知功能出错。Ubuntu server 22.04
  1. vi g09.slurm
  2. s-nail: Warning: variable superseded or obsoleted: smtp
  3. s-nail: Warning: variable superseded or obsoleted: smtp-auth-user
  4. s-nail: Warning: variable superseded or obsoleted: smtp-auth-password
  5. s-nail: Obsoletion warning: please do not use *smtp*, instead assign a smtp:// URL to *mta*!
  6. s-nail: Obsoletion warning: Use of old-style credentials, which will vanish in v15!
  7. s-nail:   Please read the manual section "On URL syntax and credential lookup"
  8. s-nail: Cannot find a usable character set to encode message: No such entry, file or directory
复制代码

作者
Author:
wxyhgk    时间: 2023-5-15 20:03
llity 发表于 2023-5-15 13:24
谢谢分享,发现邮件通知功能出错。Ubuntu server 22.04

你前面做了测试了吗,给出你的 g09.slurm 代码
作者
Author:
llity    时间: 2023-5-22 14:13
wxyhgk 发表于 2023-5-15 20:03
你前面做了测试了吗,给出你的 g09.slurm 代码

重新安装一遍可以了,谢谢。一个疑问:
安装slurm和slurm-wlm slurm-wlm-doc有什么区别,谢谢
作者
Author:
乐平    时间: 2023-5-22 21:33
llity 发表于 2023-5-22 14:13
重新安装一遍可以了,谢谢。一个疑问:
安装slurm和slurm-wlm slurm-wlm-doc有什么区别,谢谢

顾名思义,doc 应该是文档
作者
Author:
llity    时间: 2023-5-22 23:27
乐平 发表于 2023-5-22 21:33
顾名思义,doc 应该是文档

这个是的,还有一个slurm安装包,没有wlm后缀
作者
Author:
乐平    时间: 2023-5-23 10:38
本帖最后由 乐平 于 2023-5-23 10:40 编辑
llity 发表于 2023-5-22 23:27
这个是的,还有一个slurm安装包,没有wlm后缀

如果你自己动手查一下官网,就知道了。

https://slurm.schedmd.com/download.html


Download Slurm
Slurm source can be downloaded from https://www.schedmd.com/downloads.php.
Slurm has also been packaged for Debian and Ubuntu (named slurm-wlm), Fedora, and NetBSD (in pkgsrc) and FreeBSD.
slurm-wlm 是给 Debian 和 Ubuntu 定制的包。
作者
Author:
star2128    时间: 2023-6-16 15:52
wxyhgk 发表于 2022-10-13 19:12
半个小时可以搞定的事情得花几百,个人感觉你这个比较坑了

强烈赞同。试了版主的方法,已经成功安装,邮件也可以收到了。
作者
Author:
Weldingspock    时间: 2023-8-18 17:34
请问这个方法在Rocky linux9可以用吗
作者
Author:
tanglei    时间: 2023-9-7 14:05
paramecium86 发表于 2022-11-11 09:46
谢谢您的回复。我用了这种写法,不过是我没形容好问题。这样写脚本,这样两个任务还是排在同一个slurm的j ...

请问一下您最后解决这个问题了吗
作者
Author:
lurensan    时间: 2023-10-22 04:31
老师好,一个节点请问只能一次运行一个job吗
作者
Author:
QingquanMa    时间: 2024-6-1 01:11
vasp 能用吗
作者
Author:
wxyhgk    时间: 2024-6-3 09:07
QingquanMa 发表于 2024-6-1 01:11
vasp 能用吗

和软件无关,本质上,就是个把本地软件,通过网络分发到各个机器上用
作者
Author:
lurensan    时间: 2024-7-11 01:22
wxyhgk 发表于 2022-11-9 18:39
到这里自己配置 https://docs.hpc.sjtu.edu.cn/job/slurm.html

感谢大佬的教程,请问关于一次只能跑一个任务的问题怎样解决呢?上面的网址看过了,仍然没有头绪
作者
Author:
wxyhgk    时间: 2024-7-11 08:34
本帖最后由 wxyhgk 于 2024-7-11 08:36 编辑
lurensan 发表于 2024-7-11 01:22
感谢大佬的教程,请问关于一次只能跑一个任务的问题怎样解决呢?上面的网址看过了,仍然没有头绪

这个需要改成 mix 模式才会比较好,晚点我更新下
作者
Author:
lurensan    时间: 2024-7-11 09:08
wxyhgk 发表于 2024-7-11 08:34
这个需要改成 mix 模式才会比较好,晚点我更新下

好的,期待大佬的操作
作者
Author:
wxyhgk    时间: 2024-7-11 13:43
lurensan 发表于 2024-7-11 09:08
好的,期待大佬的操作

你按照我这个配置文件来修改:

  1. # Slurm.conf file generated by configurator easy.html.
  2. # Put this file on all nodes of your cluster.
  3. # See the slurm.conf man page for more information.
  4. #
  5. SlurmctldHost=master
  6. #
  7. #MailProg=/bin/mail
  8. MpiDefault=none
  9. MailProg=/usr/bin/s-nail
  10. #MpiParams=ports=#-#
  11. ProctrackType=proctrack/cgroup
  12. ReturnToService=1
  13. SlurmctldPidFile=/var/run/slurmctld.pid
  14. #SlurmctldPort=6817
  15. SlurmdPidFile=/var/run/slurmd.pid
  16. #SlurmdPort=6818
  17. SlurmdSpoolDir=/var/spool/slurmd
  18. SlurmUser=slurm
  19. #SlurmdUser=root
  20. StateSaveLocation=/var/spool/slurmctld
  21. SwitchType=switch/none
  22. TaskPlugin=task/affinity
  23. #
  24. #
  25. # TIMERS
  26. #KillWait=30
  27. #MinJobAge=300
  28. #SlurmctldTimeout=120
  29. #SlurmdTimeout=300
  30. #
  31. #
  32. # SCHEDULING
  33. SchedulerType=sched/backfill
  34. SelectType=select/cons_tres
  35. SelectTypeParameters=CR_Core
  36. #
  37. #
  38. # LOGGING AND ACCOUNTING
  39. AccountingStorageType=accounting_storage/none
  40. ClusterName=cluster
  41. #JobAcctGatherFrequency=30
  42. JobAcctGatherType=jobacct_gather/none
  43. #SlurmctldDebug=info
  44. SlurmctldLogFile= /var/log/slurmctld.log
  45. #SlurmdDebug=info
  46. SlurmdLogFile=/var/log/slurmd.log
  47. #
  48. #
  49. # COMPUTE NODES
  50. PartitionName=batch Nodes=master Default=YES MaxTime=INFINITE State=UP
  51. NodeName=master CPUs=192 Boards=1 SocketsPerBoard=2 CoresPerSocket=48 ThreadsPerCore=2 RealMemory=257722
复制代码
其中里面的 master 改成你自己的主机的 hostname,然后就是最后一行中的
  1. NodeName=master CPUs=192 Boards=1 SocketsPerBoard=2 CoresPerSocket=48 ThreadsPerCore=2 RealMemory=257722
复制代码
改成你自己的





欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3