bsub
bsub 是用于提交 FSCHED 集群作业的工具,兼容 LSF 命令行接口。以下为使用说明:
介绍
bsub
用于在 FSCHED 环境中提交作业,并尽量模仿 LSF 的命令参数和行为。它支持大多数 LSF 核心功能,但部分高级特性因 FSCHED 架构限制可能无法完全实现。
参数说明
IO 相关参数
参数 | 是否需要值 | 类型/格式 | 用途 | 注意事项 |
---|---|---|---|---|
-cwd | 是 | 路径字符串(如 /path/to/dir ) | 设置作业执行的工作目录。若路径非绝对,则基于当前目录拼接。 | 默认为提交时的当前工作目录,必须存在且可访问。 |
-o /-oo | 是 | 文件路径(支持 %J 、%a 占位符) | 标准输出重定向:-o 追加内容,-oo 覆盖写入。 | 默认值为 /dev/null ;占位符 %J 对应 FSCHED 的作业 ID(原 LSF 用 %J )。 |
-e /-eo | 是 | 文件路径(支持 %J 、%a 占位符) | 错误输出重定向:-e 追加内容,-eo 覆盖写入。 | 默认值为 /dev/null ;文件仅在作业完成后创建,若无错误则不生成。 |
资源与限制参数
参数 | 是否需要值 | 类型/格式 | 用途 | 注意事项 |
---|---|---|---|---|
-n | 是 | 整数或 min[,max] (如 4,8 ) | 指定作业任务数量。若含逗号,前为最小值,后为最大值。 | FSCHED 默认分配与 LSF 的 num_processors 对应的任务数。 |
-W | 是 | 时间格式 [小时:]分钟 (如 2:30 表示 150 分钟) | 设置作业的最长时间限制。 | 必须为整数值,支持绝对分钟或带冒号的时分表示法。 |
-M | 是 | 内存值(如 8G 、4096 MB) | 设置内存限制(以 MB 为单位)。 | FSCHED 不支持软限,此参数实际作为预留资源请求使用。 |
-m | 是 | 空格分隔的主机列表或组名(如 "host1 host2" ) | 指定作业运行的节点。 | 节点必须存在于集群中且可用。 |
-x | 否 | 无值 | 将节点设为独占模式,仅允许该作业运行。 | 需确保节点支持独占分配。 |
资源定义参数
参数 | 是否需要值 | 类型/格式 | 用途 | 注意事项 |
---|---|---|---|---|
-R | 是 | 资源字符串(如 "span[hosts=2] rusage[tmp=10G]" ) | 定义资源需求:支持 span (分配节点数或分布方式)、简单 rusage 的 mem (内存)和 tmp (临时空间)。 | 不支持 LSF 中的 select 、cu 和 affinity 资源语法;ptile=! 会被强制转为 1 。 |
调度与依赖参数
参数 | 是否需要值 | 类型/格式 | 用途 | 注意事项 |
---|---|---|---|---|
-b | 是 | 时间字符串(如 "2023-12-25:13:45" ) | 设置作业的最早开始时间。 | 格式需为 YYYY-MM-DD:HH:MM 或其他可解析的时间格式。 |
-t | 是 | 时间字符串(如 "2023-12-26:00:00" ) | 设置作业的截止终止时间。 | 若作业超出此时间,将被强制终止。 |
-w | 是 | 依赖表达式(如 "done(12345)" ) | 根据其他作业状态设置依赖关系。支持 done() 、ended() 、exit() 和 started() 测试函数。 | 表达式需引用有效作业 ID,语法与 LSF 兼容。 |
交互式作业参数
参数 | 是否需要值 | 类型/格式 | 用途 | 注意事项 |
---|---|---|---|---|
-I | 否 | 无值 | 提交非伪终端的交互式作业,直接转发 I/O。 | 标准输入输出直接转发,无法使用 Ctrl+C/Z 中断信号。 |
-Is | 否 | 无值 | 分配登录 shell 的 tty,支持基本中断操作(如 Ctrl+C )。 | FSCHED 实现与 LSF 可能存在差异。 |
-Ip | 否 | 无值 | 分配伪终端并启用终端控制符(如 Ctrl+C/Z )。 | 需确保节点允许 pty 分配,行为更接近 LSF 的交互式体验。 |
-IX | 否 | 无值 | 启用 X11 前端的交互式作业。 | 需配置 FSCHED 的 --x11 支持,并确保显示管理器可用。 |
其他参数
参数 | 是否需要值 | 类型/格式 | 用途 | 注意事项 |
---|---|---|---|---|
-L | 否 | 无值 | 提交登录 shell,自动加载用户环境文件。 | FSCHED 环境中 需确保 ~/.bashrc 或等效配置生效。 |
-E /-Ep | 是 | 命令字符串(如 "echo 'Starting'" ) | 设置预执行和后执行命令,仅适用于交互式作业。 | FSCHED 总会运行这些命令,即使 LSF 的重试逻辑未被完全实现。 |
-J | 是 | 作业名及可选数组索引(如 "myjob[1-5]" ) | 指定作业名称,支持 [start-end:step] 格式的数组任务。 | 索引需满足 begin < end 且 step ≥1 。 |
-P | 是 | 项目名称字符串 | 归属特定项目组(如 "projectA" )。 | 需确保项目存在且用户有权限。 |
-G | 是 | 用户组名 | 指定公平分享组(如 "group_dev" )。 | FSCHED 可能通过 --account 参数间接实现此功能。 |
-r /-rn | 否 | 无值 | 开启/禁用作业失败后的重试机制。 | 默认行为由集群配置决定;-rn 禁止自动重试。 |
使用示例
-
基本作业提交
bsub -J myjob[3-5] -n 4 -W 2:30 ./run.sh
提交名为
myjob
的数组任务(索引 3 到 5),每个任务需 4 核,运行不超过 150 分钟。 -
设置内存与节点约束
bsub -R "span[ptile=8] rusage[tmp=2G]" -m "node_groupA" python script.py
要求每个节点分配 8 个任务,且节点需提供至少 2GB 临时空间。
-
依赖与时间约束
bsub -w "exit(12345)" -b now+60m ./dependent_job.sh
在作业
12345
正常退出后,且延迟至少 1 分钟开始执行。
注意事项
-
功能限制
-R
参数仅支持span[hosts=...]
、span[ptile=!]
(转为1
)、和rusage[tmp|mem=...]
。其他 LSF 特性(如select
,cu
,affinity
)被忽略。- 通知类参数(如
-N
,-B
)未实现,因 FSCHED 的邮件系统与 LSF 不兼容。
-
交互式作业行为差异
-I
和-Is
的 pty 分配方式不同:-Ip
确保终端控制符生效。-IX
需确保 FSCHED 集群配置了 X11 转发支持。
-
资源占位符转换 LSF 格式的
%J
(作业 ID)和%I
(数组索引)在 FSCHED 中自动转为%A
和%a
。 -
输出文件行为
- 若未指定
-o/-e
,默认将输出丢弃。 - 错误输出文件仅在作业完成后创建,若无内容则不生成。
- 若未指定