从我记事起,我们就一直在使用 cron 来处理我们所有的作业调度需求。从存储克隆/快照到数据库报告、日常系统报告再到监控检查,所有内容都通过 cron 安排在数百台服务器上。
缺点非常明显:难以管理作业,没有简单的方法来创建依赖项(尤其是跨不同服务器),当然,不可避免地有人“暂时”跳过作业但后来忘记删除注释。
我们尝试了一个商业产品,但最终它被认为是从 cron 升级的太贵了。
我看到了其他选项,例如 SLURM、Oracle Grid Engine、Torque/Maui、Quartz、DIET、Condor,它们似乎面向更大、更同质的集群环境,其作业可以在任意数量的类似节点上运行:网格计算之类的。我们的环境相当混合(各种 Linux、AIX 和 FreeBSD),我们需要在不同类型的系统之间创建依赖关系(例如,Linux 机器上的作业可能需要确定 AIX 机器上的作业是否应该运行。)
有没有人有从 cron 迁移到更集中管理的产品的经验?有什么选择软件的技巧,还是开源或商业化更好?
我想知道其他人如何处理这种情况。
如果您的作业计划在凌晨 1:30 运行,该怎么办?在秋季,当时间发生变化时,1:00:00 到 1:59:59 的时间会重复,因此该作业将运行两次。
可以是 Windows 任务计划程序、SQL 代理或任何其他计划工具。大多数这些工具似乎基于机器时间,而不是 UTC 时间。如果我告诉它每晚在 UTC 时间运行作业,那么我就不会遇到重复的小时问题。
免责声明:这篇文章很长,因为我试图提供所有相关的配置信息。
我管理一个 gpu 集群,我想使用 slurm 进行作业管理。不幸的是,我无法使用 slurm 的相应通用资源插件来请求 GPU。
注意:test.sh 是一个打印环境变量 CUDA_VISIBLE_DEVICES 的小脚本。
--gres=gpu:1未完成运行srun -n1 --gres=gpu:1 test.sh结果如下错误:
srun: error: Unable to allocate resources: Requested node configuration is not available
Run Code Online (Sandbox Code Playgroud)
日志:
gres: gpu state for job 83
gres_cnt:4 node_cnt:0 type:(null)
_pick_best_nodes: job 83 never runnable
_slurm_rpc_allocate_resources: Requested node configuration is not available
Run Code Online (Sandbox Code Playgroud)
--gres=gram:500确实完成srun -n1 --gres=gram:500 test.sh但是,如果我打电话,作业会运行并打印
CUDA_VISIBLE_DEVICES=NoDevFiles
Run Code Online (Sandbox Code Playgroud)
日志:
sched: _slurm_rpc_allocate_resources JobId=76 NodeList=smurf01 usec=193
debug: Configuration for job 76 complete
debug: laying …Run Code Online (Sandbox Code Playgroud) 我想将 Slurm 作业调度系统中的用户从当前组移动到其他组。但是当我尝试显而易见的事情时出现错误:
sacctmgr modify user where name=example set account=groupb
Run Code Online (Sandbox Code Playgroud)
我得到的唯一方法是删除它并使用新帐户重新创建:
sacctmgr delete user example account=groupa
sacctmgr add user example account=groupb
Run Code Online (Sandbox Code Playgroud)
谢谢
可能的重复:
cron 如何处理“经常”工作中的剩余部分
我愿意每 45 分钟运行一次脚本(不是每小时的第 45 分钟)
例如 10:00、10:45、11:30、12:15 等等。
*/45 * * * *
Run Code Online (Sandbox Code Playgroud)
我不确定这是正确的表达方式。
我是 SLURM 的新手。我正在寻找一种舒适的方法,以查看节点/节点列表中有多少内存可用于我的 srun 分配。
我已经使用了 sinfo、scontrol 和 sstat,但它们都没有在一个舒适的概述中给我我需要的信息。
我有写一个shell脚本的想法,以便从scontrol中获取所有作业的所有字段并总结它们。但必须有更简单的方法。如果有人有提示或想法,那就太好了!
我安排了一个测试at工作并使用 对其进行了审查atq,但我没有看到atd可以执行它们的守护程序。
这是在 Solaris / Illumos 内核中管理的吗?如果没有,哪个守护进程管理at作业?
我实际上很惊讶没有找到atd,因为cron已经有一个守护进程。