13 个版本

使用旧的 Rust 2015

0.2.9 2021年2月18日
0.2.8 2021年2月18日
0.2.7 2020年9月16日
0.2.4 2020年8月6日
0.1.6 2020年7月28日

#2 in #queueing

每月42次下载

GPL-2.0 许可协议

77KB
2K SLoC

Build Status

循环队列

rq 程序实现了一个非常简单的队列系统。该系统优先考虑约定而非配置,因此无需进行配置,但会对您设置系统的方式施加约束。特别是,所有使用 rq 的用户必须拥有位于单个父目录内的家目录(这通常是 /home,但也可能是其他目录)。此外,rq 要求家目录在集群中的任何计算机上共享,并且在每台计算机上挂载在相同的点。

该程序设计得非常易于配置和使用,应该很可靠。然而,它并不设计为在大批作业或用户时高效。它旨在用于小型计算集群,其中 $O(N^2)$ 操作是可以接受的。

安装 rq

要安装 rq,您必须已安装 rust(见 https://rustup.rs)。然后只需输入

cargo install roundqueue

使用 rq

运行 rq 的每个用户应在他们希望作业能够运行的每个计算节点上运行 rq daemon。在我的集群中,我使用 systemd 在用户 behalf 上启动它们。这意味着,在 $N$ 个用户和 $M$ 个节点上,您将会有 $NM$ 个守护进程运行。

要提交作业,您可以在要运行此命令的目录中运行如下命令

rq run --job-name my-compute-job ./compute --flag-for-compute --other-flag

默认情况下,作业假定在单个 cpu 上运行。您可以通过简单地执行以下操作来查看正在运行(和等待运行)的作业

rq

要取消作业,请执行以下操作

rq cancel my-compute-job

最后,您可以通过以下方式查看节点的工作负载

rq nodes

它是如何工作的

rq 的安全设计涉及从不直接通过网络通信。相反,通信完全是通过在家目录中创建和读取文件来完成的(家目录假设已通过网络共享)。这简化了 rq 的设计,并可能增加了其安全性,前提是您的文件系统是安全的。

并不是所有用户都需要在所有节点上运行 rq daemon,但是,任何没有运行守护进程的节点将不会运行该用户的作业。

每个用户的作业信息存储在 $HOME/.roundqueue/ 目录中。每个作业都是该目录下的一个单独的文件。

rq 运行

提交作业包括在 $HOME/.roundqueue/waiting/ 创建一个单独的 JSON 文件。就这么多。

依赖关系

~3–12MB
~123K SLoC