跳到主要内容

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内存值(如 8G4096 MB)设置内存限制(以 MB 为单位)。FSCHED 不支持软限,此参数实际作为预留资源请求使用。
-m空格分隔的主机列表或组名(如 "host1 host2"指定作业运行的节点。节点必须存在于集群中且可用。
-x无值将节点设为独占模式,仅允许该作业运行。需确保节点支持独占分配。

资源定义参数

参数是否需要值类型/格式用途注意事项
-R资源字符串(如 "span[hosts=2] rusage[tmp=10G]"定义资源需求:支持 span(分配节点数或分布方式)、简单 rusagemem(内存)和 tmp(临时空间)。不支持 LSF 中的 selectcuaffinity 资源语法;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 < endstep ≥1
-P项目名称字符串归属特定项目组(如 "projectA")。需确保项目存在且用户有权限。
-G用户组名指定公平分享组(如 "group_dev")。FSCHED 可能通过 --account 参数间接实现此功能。
-r/-rn无值开启/禁用作业失败后的重试机制。默认行为由集群配置决定;-rn 禁止自动重试。

使用示例

  1. 基本作业提交

    bsub -J myjob[3-5] -n 4 -W 2:30 ./run.sh

    提交名为 myjob 的数组任务(索引 3 到 5),每个任务需 4 核,运行不超过 150 分钟。

  2. 设置内存与节点约束

    bsub -R "span[ptile=8] rusage[tmp=2G]" -m "node_groupA" python script.py

    要求每个节点分配 8 个任务,且节点需提供至少 2GB 临时空间。

  3. 依赖与时间约束

    bsub -w "exit(12345)" -b now+60m ./dependent_job.sh

    在作业 12345 正常退出后,且延迟至少 1 分钟开始执行。


注意事项

  1. 功能限制

    • -R 参数仅支持 span[hosts=...]span[ptile=!](转为 1)、和 rusage[tmp|mem=...]。其他 LSF 特性(如 select, cu, affinity)被忽略。
    • 通知类参数(如 -N, -B)未实现,因 FSCHED 的邮件系统与 LSF 不兼容。
  2. 交互式作业行为差异

    • -I-Is 的 pty 分配方式不同:-Ip 确保终端控制符生效。
    • -IX 需确保 FSCHED 集群配置了 X11 转发支持。
  3. 资源占位符转换 LSF 格式的 %J(作业 ID)和 %I(数组索引)在 FSCHED 中自动转为 %A%a

  4. 输出文件行为

    • 若未指定 -o/-e,默认将输出丢弃。
    • 错误输出文件仅在作业完成后创建,若无内容则不生成。