集群使用最佳实践
Last modified: September 02, 2024
每次登录集群时,您都会看到当前系统状态、用户信息以及存储使用情况的摘要。这些信息不仅能帮助您了解集群的当前负载和您的资源使用情况,还能指导您更好地遵循集群的最佳实践,确保集群资源的高效利用。
-
合理分配资源
- 查看系统状态:在登录时,您可以看到当前机器的CPU负载和内存使用情况。登录计算节点,查看计算节点的负载和内存使用情况。如果集群负载较高,请尽量避免提交大规模计算任务,或者考虑调整作业的优先级和资源请求。
- 优化作业提交:通过监控您的作业在SLURM系统中的运行状态,合理分配计算资源。避免同时提交大量高负载作业,特别是在集群资源紧张时。
-
高效管理存储
- 检查存储配额:每次登录时,您都能看到
/home
和/scratch
目录的使用情况。这些信息能够提醒您及时清理不再需要的文件,避免超出配额限制。定期清理无用数据,尤其是/scratch
目录中的临时文件,以确保充足的存储空间。 - 分配合理存储:在使用存储空间时,优先使用/scratch进行临时数据存储,确保/home目录有足够空间存放重要文件。
- 检查存储配额:每次登录时,您都能看到
-
遵循维护通知
- 关注公告信息:登录Banner中可能包含重要的系统公告 [📢 Announcement],例如维护时间或系统更新信息。请务必留意这些公告,并相应调整您的作业计划,以免造成不必要的中断。
你可能已经注意到了, 服务器上有很多用户在使用资源, 有时你提交作业后, squeue
会显示你的作业状态是 PD (Pending), 表示作业正在排队. 作业排队的原因有很多, 你可以通过 scontrol show job <jobid>
的方式查看具体原因, 在输出内容中, JobState=PENDING 后面会跟着一个 Reason, 显示作业未被执行的原因. 常见的作业未开始执行的原因是 Resources, 即你所申请的资源不可用. 比如, 你申请了 bigMem1
上32核的资源, 但当前已有一个用户使用了 bigMem1
上48核, 这时你的作业就会进入队列排队. 如果对排队的原因有所疑问, 请直接联系服务器管理员.
当你在 loginNode
上使用 squeue
命令时, 你可以看到 END_TIME
, 对于正在运行的作业, 这个时间表示作业最晚可能结束的时间, 作业可能比这个时间更早结束, 但绝不会晚于这个时间点 (除非计算节点崩溃, 任务重新排队). 对于正在排队的作业, END_TIME
表示作业预计结束的时间, 并不保证一定会在这个时间点前结束, 且会根据队列的状态实时更新相应的估计. 所以, 如果你希望能在某个确切的时间点前完成任务, 请使用预约制度.
另一种常见的情况是出于测试程序和算法性能的需求, 你想要独占节点资源. 通常, 你可以在 srun
/salloc
/sbatch
的时候加上选项 --exclusive
, 这保证了我们的作业独占这个节点. 下面是关于 --exclusive
的说明 (使用方式请参考申请资源选项)
如果当前有完全空闲 (IDLE) 的计算节点, 则你的作业可以立刻运行. 否则, 你的任务将在队列中排队. 在排队的过程中, 如果有其他用户希望不独占节点地运行任务, 出于计算资源最大化利用的考量, 他们可以插队运行他们的任务. 考虑最坏的情况下, 我们对你的任务最终开始运行的时间没有任何保障. 因此, 如果你对作业运行的时间有所需求, 我们同样建议使用预约制度. 请参考预约节点资源.