SLURM作业CPU负载过低排查:无法满负荷利用节点算力
问题排查思路
先确认程序是否支持并行运行
如果你的代码是串行编写的,哪怕SLURM给你分配了40个CPU核心,程序也只会占用其中一个,自然拉不起CPU负载。可以查看程序文档,确认它是否支持多进程/多线程并行。检查作业是否正确启动多进程
你的SLURM脚本申请了--ntasks-per-node=40,但如果脚本里只是直接运行程序(比如./your_program),没有用对应并行启动方式——比如MPI程序需要加mpirun ./your_program,OpenMP程序需要先设置环境变量export OMP_NUM_THREADS=40——那只会启动一个进程,剩下的39个核都会处于空闲状态。排查程序是否受限于IO或其他资源
如果程序运行时大部分时间都在等待磁盘读写、网络传输或者外部资源响应,CPU就会处于空闲状态,负载上不去。可以用iostat查看磁盘IO使用率,或者查看程序日志里是否有大量等待操作的记录。验证节点资源分配是否生效
可以在脚本里加入srun hostname或者nproc命令,查看实际分配的CPU数量是否符合预期,确认SLURM的资源配置是否正确应用到了作业中。
内容的提问来源于stack exchange,提问作者comp-era
相关产品推荐
相关产品推荐

