我希望找到一个用户空间工具(最好是用Python编写,如果不行的话,任何我可以轻松修改的语言都可以),来替换我一直在使用的短脚本,这个工具需要完成以下两个任务:
要运行命令
我还希望能够跟踪作业,失败后重新运行作业等,但这些都是额外的功能(在真正的作业调度程序中非常标准),实际上我并不需要。
我已经为Python找到了很好的ssh库,例如classh和PuSSH,它们没有我想要的(非常简单的)负载均衡功能。另一方面,根据crispamares的建议,在我澄清我想要更轻量级的东西之前,我想要的是Condor或Slurm。那些做事情的方式是正确的,但从阅读它们的介绍来看,它们似乎在我需要它们时仅在用户空间中启动它们可能很麻烦甚至不可能。这不是一个专用集群,而且我在这些主机上没有root访问权限。
如果找不到其他东西,我目前计划使用classh的包装器,并对计算机进行一些基本的轮询,以了解它们的繁忙程度。
- 轮询少于100台计算机(恰巧是Fedora 13),获取负载、可用内存以及是否有人正在使用
- 为作业选择好的主机,通过ssh运行这些作业。这些作业是执行任意命令行程序,它们读取和写入共享文件系统 - 通常是图像处理脚本或类似的cpu,有时是内存密集型任务。
>>> import hosts
>>> hosts.run_commands(['users']*5)
或者从命令行中执行
% hosts.py "users" "users" "users" "users" "users"
要运行命令
users
5次(在配置文件中至少检查5台计算机的CPU负载和可用内存后,找到可以运行该命令的5台计算机)。除了我刚才运行的脚本之外,不应该有任何作业服务器,并且在运行这些命令的计算机上不应该有任何工作进程或进程。我还希望能够跟踪作业,失败后重新运行作业等,但这些都是额外的功能(在真正的作业调度程序中非常标准),实际上我并不需要。
我已经为Python找到了很好的ssh库,例如classh和PuSSH,它们没有我想要的(非常简单的)负载均衡功能。另一方面,根据crispamares的建议,在我澄清我想要更轻量级的东西之前,我想要的是Condor或Slurm。那些做事情的方式是正确的,但从阅读它们的介绍来看,它们似乎在我需要它们时仅在用户空间中启动它们可能很麻烦甚至不可能。这不是一个专用集群,而且我在这些主机上没有root访问权限。
如果找不到其他东西,我目前计划使用classh的包装器,并对计算机进行一些基本的轮询,以了解它们的繁忙程度。