我是一个新手试图安装/管理slurm。我想限制一个slurm工作可以做的分叉量。我使用了stress命令来查看slurm的CPU利用率。
当我运行这个批处理脚本时
#SBATCH -p Test -c 1
stress -c 1
这项工作运行良好,一个核心100%使用。但是这个剧本
#SBATCH -p Test -c 1
stress -c 20
也运行但top命令给出了20PID的列表,每个分配的CPU利用率为5%。这是有道理的,因为总利用率为1 CPU核心100%。这使得我通过谷歌搜索学习的负载平均值变得疯狂,不是正确的系统负载视图。我有两个问题
我尝试设置这些激烈的参数来检查是否有事情发生。
MaxStepCount = 1 MaxTasksPerNode = 2
但令人惊讶的是没有任何事情发生,在此之后我可以提交更多的工作
Slurm的工作是为用户工作分配计算资源。可管理的最低计算单位在文档中称为CPU。这指的是处理线程/执行核心,而不是物理核心。 Slurm不监督工作如何管理这些资源。所以不,Slurm中的任何内容都无法杀死具有太多用户态线程的作业。
运行那么多线程可能会影响效率,是的。除非作业有足够的CPU线程来处理它们,否则所有这些线程都会导致增加上下文切换。
MaxStepCount和MaxTasksPerNode用于作业。此上下文中的“任务”不是用户态线程,而是由作业步骤启动的单独进程。
我希望有所帮助。