#slurm #归档 #HPC #CLI #事件队列 #torque

bin+lib sarchive

Slurm作业脚本的归档工具

12 个版本

0.13.1 2024年6月26日
0.12.9 2024年5月15日
0.12.8 2024年1月3日
0.12.7 2023年3月7日
0.4.2 2019年6月2日

#253命令行工具

每月 40 次下载

MIT 许可证

93KB
2K SLoC

SArchive

crates.io Travis Build Status Actions Status Coverage Status License LoC.

调度作业脚本和相关文件的归档工具。

请注意,这里的 master 分支可能领先于 crates.io 上的最新版本。在开发过程中,我们有时依赖于尚未发布具有我们使用功能的版本的依赖项。

最小支持的 rustc

1.70.0

CI 测试针对以下 Rust 版本运行

  • 稳定版
  • 夜间版

如果您没有 Rust,请参阅 Rustup 的安装说明。

用法

sarchive 需要指定调度程序主卷目录的路径。它还需要设置一个 cluster(名称)。

sarchive 支持多个调度程序,必须在命令行上指定要使用的调度程序。目前,支持 SlurmTorque

对于 Slurm,要监视的目录定义为 slurm 配置中的 StateSaveLocation

此外,sarchive 提供了各种后端。基本的 file 后端将作业脚本和相关文件复制到挂载文件系统上的目录。我们还有限制地支持将作业信息发送到 Elasticsearch 或将它们发送到 Kafka 主题。以下简要讨论这些后端。

文件归档

通过 file 子命令激活。请注意,我们目前不支持使用多个子命令(即后端)。

对于文件归档,sarchive 需要归档顶级目录的路径,即您想要存储备份脚本和相关文件的路径。

归档可以进一步按

  • 年:YYYY,通过提供 --period=yearly
  • 月:YYYYMM,通过提供 --period=monthly
  • 日:YYYYMMDD,通过提供 --period=daily 每个目录在文件归档时也会创建,如果它们不存在。这允许您轻松地打包旧的目录,您可能仍然希望保留它们,但可能不再需要立即用于用户支持。

例如,

sarchive--cluster huppel-文本/变量/打印/slurm 文件--存档=/变量/备份/slurm/任务-存档

Elasticsearch 存档(已移除)

Elasticsearch 后端将进行改造,因为使用 elastic crate 会因其 hyper 依赖存在漏洞(https://rustsec.org/advisories/RUSTSEC-2021-0078

一旦我们能够迁移到官方 Elastic.co crate,将再次添加。

Kafka 存档

您可以将作业脚本作为消息发送到 Kafka。

例如,

./sarchive --集群huppel -l/var/log/sarchive.log -文本/var/spool/slurm/kafka --代理mykafka.mydomain:9092 --主题slurm-job-archival

支持通过 --ssl--sasl 选项使用 SSL 和 SASL。这两个选项都期望传递给底层 kafka 库的逗号分隔的选项列表。

特性

  • 多线程,每个线程监视一个目录,因此无需层次监视。
  • 独立的处理线程以确保快速清除 inotify 事件队列。
  • 接收到 SIGHUP 时进行干净的日志轮换。
  • 实验性地支持接收到 SIGTERM 或 SIGINT 时干净终止,其中处理已看到的作业事件,以最小化重启服务时的潜在损失。
  • 输出到分层目录结构中的文件
  • 输出到 Elasticsearch
  • 输出到 Kafka

RPM

我们提供了一个构建脚本,使用 cargo-rpm 工具生成 RPM。您可以根据需要调整 spec 文件(在 .rpm 目录下列出)来满足您的需求。RPM 包含一个单元文件,因此 sarchive 可以通过 systemd 作为服务启动。此文件也应根据您的需求和本地配置进行更改。

依赖项

~9–25MB
~309K SLoC