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次下载
77KB
2K SLoC
循环队列
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