我是一个尝试安装/管理slurm的新手。我想限制分叉的工作量。我使用了Stress命令来查看Slurm的CPU利用率。
当我运行此批处理脚本
#SBATCH -p Test -c 1
stress -c 1
工作正常,其中一个内核使用了100%。但是这个脚本
#SBATCH -p Test -c 1
stress -c 20
也可以运行,但是top命令列出了20个PID的列表,每个cpu利用率为5%。这很有意义,因为总利用率为1个CPU内核的100%。这使平均负载变得疯狂,我通过谷歌搜索了解到,这并不是对系统负载的正确了解。我有两个问题
是否可以通过终止第二次运行来限制admin配置中的此类行为。到目前为止,我的各种尝试都没有产生任何效果。 slurm配置了cgroup并杀死了内存作业。没有使用或配置MPI。
此行为是否由于流程等待时间而导致效率低下?
我尝试设置这些激烈的参数来检查是否发生了某些事情。
MaxStepCount = 1 MaxTasksPerNode = 2
但是令人惊讶的是没有任何反应,此后我可以提交更多工作。
答案 0 :(得分:0)
Slurm的工作是将计算资源分配给用户工作。可管理的最低计算单位在文档中称为CPU。这是指处理线程/执行核心,而不是物理核心。 Slurm不会监督作业如何管理这些资源。因此,没有,Slurm中的任何内容都无法杀死太多用户域线程的工作。
运行许多线程可能会影响效率,是的。除非作业具有足够的cpu线程来处理它们,否则所有这些线程都将导致上下文切换增加。
MaxStepCount和MaxTasksPerNode用于作业。在此上下文中,“任务”不是用户级线程,而是由作业步骤启动的单独进程。
我希望有帮助。