跳转至

多瑙调度器

命令行

参考

作业管理(多瑙调度器CLI)

Warning

第一次使用多瑙调度器之前需要执行 dlogin ,输入用户密码后获取用户token。

作业提交

dsub

命令行提交作业

dsub -n jobname  -q arm -aa -R 'cpu=4'  -o jobname_%J.out  sleep 100

脚本提交作业

submit.sh
#!/bin/bash
#DSUB -n jobname
#DSUB -R 'cpu=2' 
#DSUB -o jobname_%J.out
#DSUB -aa                 
#DSUB -q arm               
date
echo "this is script job"
sleep 10
date

提交

# 作业脚本需要有可执行权限
$ chmod +x submit.sh

$ dsub -s submit.sh
  • -n 指定作业名称。

  • -R 作业申请的资源, -R 'cpu=2 申请 2 个 CPU 核。

  • -aa 使用任意 CPU 架构的计算节点。

  • -q 指定作业列, -q arm 指定使用 arm 队列,作业队列的详细说明见下文的 作业队列-q 选项和 -aa 选项需一起使用。

  • -nl 指定作业运行的节点,如 #DSUB -nl 'agent-ARM-01';也可以指定作业运行的节点范围,#DSUB -nl 'agent-ARM-0[1-9]'

  • -o 指定作业日志。-o 以追加的方式写入,-oo 以覆盖的方式写入。日志文件名可以使用特殊变量: %U 表示 userName%J 表示 JobID%G 表示 TaskGroupName%I 表示 Index%A 表示 UserName_JobID_TaskGroupName_Index

dsub -w 提交阻塞式作业,提交作业并等待作业结束,用于写分析流程,与 lsf -K 作用相同。

Warning

目前已弃用使用标签对资源进行分类使用的方式,请使用队列的方式将作业提交到 arm 或 x86 节点。作业队列

资源标签:集群有多种硬件资源,arm 节点、x86 节点、ai 节点以及胖节点,集群上使用不同的资源标签代表不同类型的节点,以方便作业提交到对应类型的节点运行,可以使用 dadmin label show 查看资源标签及对应的节点。

交互作业

使用 -I 选项可以提交交互作业,用于程序调试等。

$ dsub -q interactive -I bash

交互模式进入 AI 节点,AI 节点使用需要向管理员申请。

$ dsub  -aa -q AI   -I bash

MPI 并行作业

提交MPI跨节点并行作业时,需要使用 --mpi 选项指定支持的MPI类型,支持 openmpiintelmpihmpimpich

这里以 lammps 为例。

lammps_arm.dsu
#DSUB -n lammps
#DSUB -N 256
#DSUB -nn 2
#DSUB --mpi hmpi
#DSUB -o lammps_arm_%J.out
#DSUB -aa
#DSUB -q arm

module load arm/lammps/29Aug2024_hmpi

# 以下三行打印hostfile文件,用于debug,正常运行可以不需要
echo $CCS_MPI_OPTIONS
hostfile=$(echo $CCS_MPI_OPTIONS| sed s'/-hostfile //g')
cat $hostfile


mpirun $CCS_MPI_OPTIONS -x OMP_NUM_THREADS=1 lmp_mpi -in in.lj
in.lj 内容
# 3d Lennard-Jones melt

variable     x index 4
variable     y index 4
variable     z index 4

variable     xx equal 20*$x
variable     yy equal 20*$y
variable     zz equal 20*$z

units                lj
atom_style   atomic

lattice              fcc 0.8442
region               box block 0 ${xx} 0 ${yy} 0 ${zz}
create_box   1 box
create_atoms 1 box
mass         1 1.0

velocity     all create 1.44 87287 loop geom

pair_style   lj/cut 2.5
pair_coeff   1 1 1.0 1.0 2.5

neighbor     0.3 bin
neigh_modify delay 0 every 20 check no

fix          1 all nve

run          10000

提交 NPU 作业

NPU 作业脚本,使用 -R 'npu=1' 选项申请 NPU 资源。

#!/bin/bash
#DSUB -n jobname
#DSUB -R 'npu=1' 
#DSUB -o jobname_%J.out
#DSUB -aa
#DSUB -q AI

python npu.py
使用 dnode --npu 命令可以查看集群 NPU 的使用情况。
$ dnode --npu
NAME              NPU_ID  DEVICE_ID   NPU_NAME   STATUS    AICORE_UTIL       DDR_USAGE       HBM_USAGE  
AI-01             0       0           Atlas A2   OK        0%                0/0             64433/655* 
AI-01             1       0           Atlas A2   OK        0%                0/0             64890/655* 
AI-01             2       0           Atlas A2   OK        0%                0/0             63353/655* 
AI-01             3       0           Atlas A2   OK        0%                0/0             63353/655* 
AI-01             4       0           Atlas A2   OK        0%                0/0             63359/655* 
AI-01             5       0           Atlas A2   OK        0%                0/0             63353/655* 
AI-01             6       0           Atlas A2   OK        0%                0/0             63353/655* 
AI-01             7       0           Atlas A2   OK        0%                0/0             63355/655* 

批量作业提交

一般用于使用同一个应用程序处理多个数据样本、或运行不同参数的场景,以提高作业提交效率、避免手工提交失误。

for sample in /share/home/username/work/lsf_bwait/raw_data/*_R1.fastq.gz;do

    index=$(basename $sample |sed 's/_R1.fastq.gz//')
    prefix=$(dirname $sample)
    dsub -n "bwa_${prefix}" -aa -q arm  -R 'cpu=40'  -o bwa_${prefix}_%J.out "module load arm/bwa/0.7.18 arm/samtools/1.21;bwa mem -t 40 -R "@RG\tID:${prefix}\tPL:illumina\tLB:library\tSM:humen146" hg38.fa ${prefix}_R1.fastq.gz ${prefix}_R2.fastq.gz |samtools sort -@ 40 -o ${prefix}_srt.bam"

作业依赖

用于提交作业时,指定作业间的依赖关系,当被依赖的作业达成约定的状态后依赖的作业将会被调度。

dsub -D "key=value"

  • 输入的参数值必须满足 key=value 格式。key 支持 jobidJobNamevalue 值只能是 STARTEDRUNNINGSUCCEEDEDFAILEDENDED,如 '2=ENDED'

    • STARTED 表示 RUNNINGSTOPPEDSSTOPPEDSUCCEEDEDFAILED
    • ENDED 表示 SUCCEEDEDFAILED
  • jobid约束如下:

    • 必须满足jobid的限制条件,即1~12位正整数。
    • 支持指定同一个jobid的多种状态,但指定同一作业的不同状态为与逻辑时,将导致依赖无法达成。
  • JobName约束如下:

    • 若包含特殊字符 %=()|,需要使用 \ 对特殊字符进行转义。
    • 支持使用通配符(*)模糊查询,可放置开头、中间或结尾,分别对应的匹配方式为后缀匹配、关键字匹配和前缀匹配。
    • 只能依赖本用户提交的作业。
  • 多个匹配条件组合时,支持多匹配条件间的 “与(&&)/或(||)” 逻辑,且支持以分号表示与逻辑,分号和逻辑符(&&、||)不支持混用。

  • 不加单引号的纯数字按 jobid 处理;加单引号的纯数字按 JobName 处理。

使用举例:

  • 示例一:

    按照jobid指定单个作业依赖关系

    dsub -D "1=RUNNING" "echo 'hello world'"

    显示如下:

    Submit job <2> successfully.

  • 示例二:

    按照JobName指定依赖关系

    dsub -D "job1=RUNNING" "echo 'hello world'"

    显示如下:

    Submit job <3> successfully.

  • 示例三:

    按照jobid指定多个作业依赖关系

    dsub -D "(1=RUNNING||2=SUCCEEDED)&&3=ENDED" "echo 'hello world'"

    显示如下:

    Submit job <4> successfully.

  • 示例四:

    按照JobName指定依赖关系(支持通配符*)

    dsub -D "job_*=SUCCEEDED" "echo 'hello world'"

    显示如下:

    Submit job <5> successfully.

  • 示例五:

    指定JobName包含特殊字符(特殊字符需要转义)

    dsub -D "job\(202306\)=SUCCEEDED" "echo 'hello world'"

    显示如下:

    Submit job <6> successfully.

  • 示例六:

    指定纯数字的JobName

    dsub -D "'12'=RUNNING" "echo 'hello world'"

    显示如下:

    Submit job <7> successfully.

作业队列

Warning

目前已弃用使用标签对资源进行分类使用的方式,请使用队列的方式将作业提交到 arm 或 x86 节点。

为了对资源和作业进行管理,将节点分成了不同的队列,使用 dqueue 查看队列。

$ dqueue 
NAME             STATUS               PRIORITY   RUNNING_JOBS              PENDING_JOBS              SSTOPPED_JOBS             
default          OPEN,ACTIVE          1          266                       2140                      0                         
x86              OPEN,ACTIVE          1          146                       143                       0                         
AI               OPEN,ACTIVE          1          0                         0                         0                         
interactive      OPEN,ACTIVE          1          9                         0                         0                         
fat_x86          OPEN,ACTIVE          1          6                         10                        0                         
arm              OPEN,ACTIVE          1          202                       335                       0                         
fat_arm          OPEN,ACTIVE          1          30                        523                       0                  
队列和节点的对应关系
队列对应的节点节点CPU核数节点内存(GB)
armagent-ARM-{01-43}128512
x86agent-X86-{01-65}64512
AIAI-011921024
fat_armfat-agent-ARM-{01-03}1282048
fat_x86fat-agent-X86-{01-03}642048

-q 选项和 -aa 选项需一起使用,否则作业无法调度至计算节点运行。

  • 提交作业到普通 x86 节点,需要指定 x86 队列
#DSUB -n jobname           # 指定作业名,可自定义
#DSUB -R 'cpu=2'           # 每节点使用的资源,示例表示每节点使用2个cpu核心
#DSUB -o jobname_%J.out    # 指定错误输出日志,%J为固定写法,表示作业ID
#DSUB -aa                  # 任意架构
#DSUB -q x86               # 指定 x86 队列

program                    # 用户自己的程序
  • 提交作业到普通 arm 节点,需要指定 arm 队列
#DSUB -n jobname           # 指定作业名,可自定义
#DSUB -R 'cpu=2'           # 每节点使用的资源,示例表示每节点使用2个cpu核心
#DSUB -o jobname_%J.out    # 指定错误输出日志,%J为固定写法,表示作业ID
#DSUB -aa                  # 任意架构
#DSUB -q arm               # 指定 arm 队列

program                    # 用户自己的程序
  • 提交作业到 x86 大内存节点,需要指定 fat_x86 队列
#DSUB -n jobname           # 指定作业名,可自定义
#DSUB -R 'cpu=2'           # 每节点使用的资源,示例表示每节点使用2个cpu核心
#DSUB -o jobname_%J.out    # 指定错误输出日志,%J为固定写法,表示作业ID
#DSUB -aa                  # 任意架构
#DSUB -q fat_x86           # 指定 x86 队列

program                    # 用户自己的程序
  • 提交作业到 arm 大内存节点,需要指定 fat_arm 队列
#DSUB -n jobname           # 指定作业名,可自定义
#DSUB -R 'cpu=2'           # 每节点使用的资源,示例表示每节点使用2个cpu核心
#DSUB -o jobname_%J.out    # 指定错误输出日志,%J为固定写法,表示作业ID
#DSUB -aa                  # 任意架构
#DSUB -q fat_arm           # 指定 arm_fat 队列

program                    # 用户自己的程序

内存限制

为了防止作业使用过多内存导致计算节点崩溃,调度系统对所有作业按核数强制限制了作业能使用内存的最大值,如 arm 队列的节点限制为每核 5GB,超过限制作业会被系统杀掉,同时日志文件内会有相关提示 EXIT_MESSAGE: Job was terminated due to reaching the mem limit, errCode: 143,详细说明见后文的 查看作业日志。如果程序需要使用 50GB 内存,则应该申请 10 个核, -R 'cpu=10' 。各节点对应的内存限制如下:

队列节点每核内存限制(GB)
armagent-ARM-{01-43}5
x86agent-X86-{01-65}10
AIAI-0110
fat_x86fat-agent-X86-{01-03}32
fat_armfat-agent-ARM-{01-03}16

dsub 其它选项

dsub 常用选项

查看作业

基本使用

提交作业后,查看作业运行状态:djobdjob jobid

$ djob
ID           NAME         STATE      USER         ACCOUNT      QUEUE        START_TIME           END_TIME             EXEC_NODES           
9            gatk         RUNNING    usrename       default      default      2024/10/09 08:49:52  -                    agent-ARM-15 
各字段意义:
字段含义
ID作业ID
NAME作业名称,若未指定作业名称,则默认为default。
STATE作业状态,包含WAITING、PENDING、RUNNING、STOPPED、SSTOPPED、FAILED、SUCCEEDED。
USER提交该作业的用户名。
ACCOUNT作业所在组织帐户。若未指定组织帐户提交或该用户未配置defaultAccount,则默认提交至default。
QUEUE作业所在队列。若未指定队列提交或该用户未配置 defaultQueue,则默认提交至default。
START_TIME作业开始时间。
END_TIME作业结束时间。
EXEC_NODES作业执行节点。

作业状态:

  • WAITING:调度器接收用户提交的作业,作业的初始状态是 WAITING,等待调度器调度作业。

  • RUNNING:调度作业后,其状态产生两种变化:如果计算资源分配成功,作业标识为 RUNNING,并分发到执行节点运行;

  • PENDING:如果资源未分配成功,作业标识为 PENDING,作业排队等待资源,并发布具体原因。使用 djob -l 查看作业的调度详情,了解排队原因。

  • SUCCEED:如果作业正确执行完成,标识为 SUCCEED。通过查看作业输出数据了解业务计算结果。

  • FAILED:如果执行失败,标识为 FAILED。使用 djob -l 查看作业的运行时详情,了解失败原因。

定制 djob 输出

为方便查看作业的CPU时间、内存消耗,可以改写 djob 的输出,将下面这行 alias 命令写入 ~/.bashrc 中。

alias dbs="djob --output 'jobId:8 name:8 user:8 state:8 queue:8 startTime:20 execNodes:15 totalMaxMem:15 totalUtime:15 totalStime:15'"
查看作业
$ dbs 
jobId    name     user     state    queue    startTime            execNodes       totalMaxMem     totalUtime      totalStime     
13       gatk     liuhao   RUNNING  default  2024/10/09 11:28:57  agent-ARM-15    151168          156416          2560           

作业实际 CPU 消耗

部分作业申请了使用多核,但由于程序本身无法充分利用多核,因此建议关注作业是否实际使用了申请的核,并以此为依据申请作业使用的核数,以免浪费核时,产生不必要的费用。

cpuUtil:值格式:avg/recent,表示作业的总CPU利用率,即从作业开始运行到最近一次采样。

  • avg:平均CPU使用率,从作业开始运行到最近一次采样的平均使用率;MPI作业为节点上该作业所有任务的平均值。

  • recent:最近一次上报的CPU使用率;

如下作业所示,当前使用了 98 核,作业从运行到目前平均使用了 9.7 核

$djob -ll jobid
...
Runtime Details:
...
 nodeUsages                             
        execNode             resGroup resIndex utime    stime    wallclockDuration    sstopedTime   cpuUtil          gpuUtil          memResource                     
        agent-ARM-42         0        0        200370   71784    27882                0           976/9820         -                329394/0/0/397740/397740/363698/329640
    nodePids                                
        execNode             pids    
        agent-ARM-42         3107938 
...

djob 其它选项

djob 常用选项

查看作业日志

dpeek 查看运行作业的输出。

也可以在作业结束后查看日志文件,其中日志文件末尾会显示作业的各种信息,如运行时间、消耗的内存等,如下所示,其中几个信息说明如下:

  • EXEC_NODE: agent-X86-26 作业运行的计算节点。
  • EXIT_MESSAGE: Job execution succeeded 作业退出信息,这里显示作业运行成功。内存不够异常退出时显示为 EXIT_MESSAGE: Job was terminated due to reaching the mem limit, errCode: 130
  • MRUN_TIME: 3373 作业运行时间,单位为秒。
  • MEM_MAX_SUM: 26080 作业使用的最大内存。

全部信息说明见:taskInfo及rusage信息说明

$ cat jobname_112345.out
TASK_INFO:
    JOB_ID:                     25866930
    JOB_NAME:                   GB12
    TASK_NAME:                  rg0.0
    REPLICA:                    1
    TASKGROUP_NAME:             rg0
    SUBMIT_NODE:                cli-X86-01
    EXEC_NODE:                  agent-X86-26
    EXIT_CODE:                  0
    EXIT_MESSAGE:               Job execution succeeded

RESOURCE_USAGE_SUMMARY:
    REQ_CPU:                    20
    REQ_MEM:                    128
    REQ_GPU:                    0
    REQ_NPU:                    0
    USER_CPU_TIME:              66703
    SYSTEM_CPU_TIME:            550
    MEMSW_MAX:                  26080
    SWAP_MAX:                   0
    MEM_MAX:                    26080
    MEM_AVG:                    20302
    MRUN_TIME:                  3373
    SSTOPPED_TIME:              0
    CPU_UTIL_AVG(%):            1993
    CPU_UTIL_RECENT(%):         1375
    USER_CPU_TIME_SUM:          66703
    SYSTEM_CPU_TIME_SUM:        550
    MEMSW_MAX_SUM:              26080
    SWAP_MAX_SUM:               0
    MEM_MAX_SUM:                26080
    MEM_AVG_SUM:                20302
    CPU_UTIL_AVG_SUM(%):        1993
    CPU_UTIL_RECENT_SUM(%):     1375
    GPU_SM_UTIL_AVG(%):         -
    GPU_SM_UTIL_RECENT(%):      -
    NPU_SM_MEM_SUM(MB):         -
    NPU_SM_AICORE_UTIL(%):      -

终止作业

dkill jobid 终止作业

dkill --force jobid 强制终止作业

作业控制

djctl stop JobID 挂起作业

djctl resume JobID 恢复作业

djctl requeue JobID 重启作业

djctl resubmit JobID 重新提交作业

修改作业资源

dmod

资源查看

节点信息

dnode 查看所有可用的节点及每个节点的状态、CPU、内存等资源;

状态状态说明
OK节点正常,允许关闭节点。
CLOSE_ADMIN节点被管理员关闭,无法接收作业下发任务,允许开启节点。
CLOSE_LOCK节点上作业批量失败,被隔离,需要管理员手动开启。
CLOSE_BUSY节点繁忙,资源使用达到阈值,停止下发新作业,阈值下降后恢复为OK状态。
CLOSE_FAULT节点局部故障,通信、网卡、磁盘等异常,停止下发新作业需要管理员检查处理,检测到故障解除后恢复为OK。
UNAVAILABLE节点无法连接,或出现严重故障(共享存储故障/所有CX网卡掉线等),长期未收到节点心跳,无法接收作业下发任务,允许开启/关闭/删除节点,但是节点状态不发生变化。
REGISTERING节点注册中,无法接收作业下发任务,不允许开启/关闭/删除节点。
UNLICENSED在线下场景,表示系统中没有可用License文件、License文件中无计算节点资源项(CCSU-00-E01R/CCSU-00-E02R)或License文件中计算节点资源项(CCSU-00-E01R/CCSU-00-E02R)数量不足。
SUSPENDED_ADMIN管理员手动休眠节点,无法接收作业下发任务,不允许开启/关闭/删除节点。
SUSPENDED_AUTO节点自动进入休眠状态,可以接收作业下发任务,不允许开启/关闭/删除节点。
CLOSE_EXIT节点即将删除状态。无法接收作业下发任务,但是正在运行的作业不受影响。该节点上的所有作业运行完成后,会自动被删除。该状态的节点仅支持强制删除操作,此时节点上的作业会被终止。
CLOSE_FULLCPU核数和GPU卡数全部分配完毕,停止下发新作业,资源释放后恢复为OK。

dqueue 查看集群可用的作业队列

其它

drun 使用不同的作业步骤(Job Step)提交不同的任务

dattach 用于支持用户直接连接作业执行节点或Docker容器

drespool 用于显示资源池信息

dacct 显示组织帐户作业统计和资源等信息

duser 用于显示用户作业统计等信息

dcluster 用于显示集群中节点、作业及队列等信息

作业资源申请规则

  • 程序分类:

    • 并行程序:可以使用多个计算节点同时运行的程序,一般使用 MPI 库编写,使用 mpirun 命令运行,如 vasp、gromacs等;生物信息中并行程序极少,常用的并行程序只有maker。
    • 串行程序:只能在单个节点上运行的程序,不能跨节点运行。串行程序又可以分为单线程程序和多线程程序,单线程程序只能使用一个CPU核运行,速度较慢;多线程程序可以使用多个CPU核运行,速度相对较快,多线程程序有专用选项用于设置线程数。

原则上,作业申请的CPU核数应与程序使用的线程数相等,以免资源浪费或节点压力过大。

一般串行程序作业,申请的CPU核心数不能超过节点的核心数,否则作业永远排不上队,如 arm 队列上的作业,申请的CPU核心数不能超过128核。

如果需要较大内存(500G 以下),可以使用申请更多CPU核心数;如果需要的内存达到 500G 以上,可以使用 fat_x86 或 fat_arm 队列,不建议500G内存以下的作业使用这2个队列,以免排队时间过长。

多瑙使用 SKILL

介绍及配置

通过将多瑙使用文档等提炼为 skills,可以协助用户更好得使用本集群。

Note

skills 会根据实际情况更新进化,因此下面安装多瑙 skill 时建议使用软连接而不是拷贝的方式,以保证使用的 skill 一直是最新版本。

这里以 Claude Code 为例,其它 AI agent 使用原则类似。安装配置 Claude Code,参考 Claude Code 使用

或使用集群安装的 claude code,module load x86/nodejs/25.9.0module load x86/nodejs/22.14.0claude -h

安装配置完成后,将多瑙使用的 skill 链接安装到自己的 Claude Code 下。

$ mkdir ~/.claude/skills/
$ ln -s /share/software/skills/hpc-donau  ~/.claude/skills/
查看安装的skill
 当前安装了哪些skill                                                                  

 当前可用的 skill 分为以下几类:                                                                                                                            

  内置 Skill                                                                                                                                                 

  ┌──────────────────┬───────────────────────────────────┐                                                                                                   
        Skill                      用途                                                                                                                 
  ├──────────────────┼───────────────────────────────────┤                                                                                                   
   hpc-donau         多瑙调度器作业提交和管理                                                                                                                                     
  ├──────────────────┼───────────────────────────────────┤                                                                                                                                                                                    
   update-config     配置 Claude Code harness settings                                                                                                  
  ├──────────────────┼───────────────────────────────────┤                                                                                                   
   simplify          代码审查与优化                                                                                                                     
  ├──────────────────┼───────────────────────────────────┤                                                                                                   
   loop              定时循环任务                                                                                                                       
  ├──────────────────┼───────────────────────────────────┤                                                                                                   
   claude-api        Claude API / Anthropic SDK 开发                                                                                                    
  └──────────────────┴───────────────────────────────────┘                                                                                                   

使用方式:/skill-name 或通过 Skill 工具调用。    

使用举例

集群资源查看

 查看当前集群的可用资源                                                                                                                                     

 Skill(hpc-donau)                                                                                                                                           
    Successfully loaded skill                                                                                                                             

 Bash(dnode | head -20)                                                                                                                                   
    NAME              STATUS       CPU    CPU_FREE     UTIL     MEM        MEM_FREE   GPU    GPU_FREE                                                       
     AI-01             OK           192    192          1.08%    1030495    882842     0      0                                                              
     agent-ARM-01      OK           128    118          1.93%    514199     412956     0      0                                                            
      +15 lines (ctrl+o to expand)                                                                                                                          

 Bash(dqueue)                                                                                                                                             
    NAME             STATUS               PRIORITY   RUNNING_JOBS              PENDING_JOBS              SSTOPPED_JOBS                                      
     fat_x86          OPEN,ACTIVE          1          4                         1                         0                                                  
     default          OPEN,ACTIVE          1          6                         76                        0                                                
      +4 lines (ctrl+o to expand)                                                                                                                           

 当前集群资源状况如下:                                                                                                                                   

  节点概况(前20个)                                                                                                                                         

  ┌─────────────────┬──────┬─────────────┬────────┬───────────────┐                                                                                          
        节点        状态   总核/空闲   利用率  内存/空闲(MB)   ├─────────────────┼──────┼─────────────┼────────┼───────────────┤                                                                                          
   AI-01            OK    192/192      1%      1030G/882G                                                                                            
  ├─────────────────┼──────┼─────────────┼────────┼───────────────┤                                                                                          
   agent-ARM-01~18  混合  128/ varies  0~52%   514G/ varies                                                                                            
  └─────────────────┴──────┴─────────────┴────────┴───────────────┘                                                                                          

  ARM 节点中大量空闲的(128核全空闲):                                                                                                                      
  - agent-ARM-02, ARM-05, ARM-07, ARM-08, ARM-17, ARM-18  完全空闲                                                                                        
  - agent-ARM-13  108核空闲                                                                                                                                 
  - agent-ARM-01, ARM-09  约118核空闲                                                                                                                     
  - agent-ARM-12  68核空闲                                                                                                                                  

  接近满载的:                                                                                                                                               
  - ARM-10(1核空闲), ARM-11(2核), ARM-14(8核), ARM-16(2核)                                                                                                   

  CLOSE_FULL:ARM-03, ARM-04, ARM-06, ARM-15(不可调度)                                                                                                     

  队列情况                                                                                                                                                   

  ┌─────────────┬────────────┬────────────┬───────────────────────────────────┐                                                                              
      队列      运行中作业  等待中作业                说明                                                                                              
  ├─────────────┼────────────┼────────────┼───────────────────────────────────┤                                                                              
   arm          444         9           ARM队列,作业较多但有大量空闲节点                                                                             
  ├─────────────┼────────────┼────────────┼───────────────────────────────────┤                                                                              
   x86          176         1274        严重拥堵,等待作业极多                                                                                          
  ├─────────────┼────────────┼────────────┼───────────────────────────────────┤                                                                              
   fat_arm      6           0           空闲                                                                                                            
  ├─────────────┼────────────┼────────────┼───────────────────────────────────┤                                                                              
   fat_x86      4           1           空闲                                                                                                          
  ├─────────────┼────────────┼────────────┼───────────────────────────────────┤                                                                              
   interactive  3           0           空闲                                                                                                          
  ├─────────────┼────────────┼────────────┼───────────────────────────────────┤                                                                              
   default      6           76          有排队                                                                                                        
  └─────────────┴────────────┴────────────┴───────────────────────────────────┘                                                                              

  建议                                                                                                                                                       

  - arm 队列当前资源充足,多个节点完全空闲,申请较高核数(如 16-40 核)可以快速调度                                                                          
  - x86 队列拥堵严重,不建议使用                                                                                                                           
  - 如需大内存(≥500G),fat_arm 队列空闲可直接使用  

编写作业脚本

编写多瑙作业脚本并提交

 写一个多瑙测试脚本并提交                                                                                                                                   

 Write(donau_test.dsub)                                                                                                                                     
    Wrote 30 lines to donau_test.dsub                                                                                                                     
       1 #!/bin/bash                                                                                                                                         
       2 #DSUB -n test_job                                                                                                                                   
       3 #DSUB -R 'cpu=2'
       4 #DSUB -q arm                                                                                                                                        
       5 #DSUB -aa                                                                                                                                         
       6 #DSUB -o %J.out                                                                                                                                     
       7                                                                                                                                                   
       8 echo "=== Donau Test Job ==="
       9 echo "Job started at: $(date)"
      10 echo "Hostname: $(hostname)"
      +20 lines (ctrl+o to expand)

 Bash(chmod +x /share/home/software/work/skills/test/donau_test.dsub && dsub -s /share/home/software/work/skills/test/donau_test.dsub)
    Submit job <36864222> successfully.                                    

 作业已提交成功,Job ID: 36864222                                                                                                                         

  脚本位置:/share/home/software/work/skills/test/donau_test.dsub                                                                                            

  作业内容:打印主机信息、CPU/内存信息,执行一个简单计算(用 bc 计算 pi)。                                                                                  

  查看状态和日志:                                                                                                                                           

  djob 36864222          # 查看作业状态                                                                                                                      
  dpeek 36864222         # 查看实时输出                                                                                                                      
  cat 36864222.out       # 查看完整日志   

作业问题查看及建议

查看作业排队原因并给出解决方案

 36866963 这个作业为何一直在排队没有运行                                                                                                                    

 Bash(djob -l 36866963)                                                                                                                                     
    Basic Details:                                                                                                                                          
         jobId                                  36866963                                                                                                     
         name                                   test_job                                                                                                     
      +32 lines (ctrl+o to expand)                                                                                                                          

 原因很清楚:                                                                                                                                               

  申请了 200 核,但 arm 队列每个节点只有 128 核,所以任何单节点都无法满足需求,作业永远排不到。                                                              

  reqCPU                           200                                                                                                                       
  mainStateReasonMsg: The number of available CPUs on the node does not meet requirements                                                                    

  arm 队列单节点最大 128 核,所以 -R 'cpu=N'  N 不能超过 128                                                                                             

  需要我帮你把这个作业 kill 掉然后重新提交一个合理的吗?   

流程软件

snakemake

v8 之前的版本

snakemake   --cluster  'dsub -R "cpu={threads}"' -s Snakemake

常见故障

  • 故障现象:作业提交后立即结束,没有日志输出

查看作业详细信息 djob -ll jobid,可以看到关键报错信息 Job execution environment build failed, err: container save failed failureHost: agent-ARM-03,大概率可能是节点的根目录写满了,请联系管理员及时处理。

查看作业详细日志
$ djob -ll 25670440
Basic Details:
    jobId                                 25670440                                            
    name                                  arm_STAR                                            
    state                                 FAILED                                              
    user                                  username                                            
    queue                                 default                                             
    account                               default                                             
    cmd                                   module load arm/stringtie/3.0.0;stringtie -p 12 -G /share/home/username/biobase/p_clarkii/pc_v2.0_ncbi_v20631_agat.gtf -o M_N_zx_1.gtf -i M_N_zx_1Aligned.sortedByCoord.q20.bam 
    submitNode                            cli-ARM-01                                          
    createTime                            2025/09/03 17:31:37                                 
    startTime                             2025/09/03 17:31:39                                 
    lastModifiedTime                      -                                                   
    endTime                               2025/09/03 17:31:39                                 
    currentOperation                      EMPTY                                               
    jobRequeueMaxCnt                      0                                                   
    jobRequeueCurrentCnt                  0                                                   
    mpiType                               DEFAULT                                             
    interactionMode                       DEFAULT                                             
    assistJob                             DEFAULT                                             
    x11ForwardEnabled                     false                                               
    description                           -                                                   
    transferType                          LOCAL                                               
    forwardTime                           -                                                   
    recallTime                            -                                                   
    autoResize                            false                                               
Scheduling Details:
    exclusive                             false                                               
    priority                              1                                                   
    adminPriority                         -1                                                  
    expectSchedTime                       -                                                   
    startTimeEstimated                    -                                                   
    reserveRes                            -                                                   
    backfillRes                           -                                                   
    backfilledRes                         -                                                   
Resource Details:
    reqJobLicense                         -
    allocJobLicense                       -
    resGroup[0]:
        minReplica                        1                                                   
        replica                           1                                                   
        labels                            arm aarch64                                         
        preferNodes                       -                                                   
        reqNodeSelectPolicy               -                                                   
        effNodeSelectPolicy               SEQUENCE                                            
        reqCPU                            12                                                  
        reqMem                            128                                                 
        reqGPU                            nvidia:0
        reqNPU                            0
        allocCPU                          12                                                  
        allocMem                          128                                                 
        allocGPU                          nvidia:0
        allocNPU                          0
        allocSdr                          -
        reqTaskLicense                    -
        allocTaskLicense                  -
        limitMem                          61440                                               
    allocAffinity                         
        execNode             resGroup resIndex hwThreads        gpuIds           npuIds          
        agent-ARM-03         0        0/1      -                -                -               
Runtime Details:
    execNodes                             agent-ARM-03                                        
    execNodeCnt                           1                                                   
    execPath                              /share/home/username/biodata/wgcna/bam_2pass        
    resizeCmd                             -                                                   
    timeout                               0                                                   
    stderrRedirectPath                    /share/home/username/biodata/wgcna/bam_2pass/M_N_zx_1_star_arm_%J.err   
    stderrRedirectType                    append                                              
    stdoutRedirectPath                    /share/home/username/biodata/wgcna/bam_2pass/M_N_zx_1_star_arm_%J.out   
    stdoutRedirectType                    append                                              
    totalUtime                            0                                                   
    totalStime                            0                                                   
    totalMaxMemSwp                        0                                                   
    totalMaxMem                           0                                                   
    preHookRunTime                        0                                                   
    jobWallclockDuration                  0                                                   
    postHookRunTime                       0                                                   
    jobSstoppedTime                       0                                                   
    jobExitCode                           0                                                   
    systemExitCode                        12008                                               
    exitMessage                           Job execution environment build failed, err: container save failed failureHost: agent-ARM-03    
    nodeUsages                            
        execNode             resGroup resIndex utime    stime    wallclockDuration    sstoppedTime     cpuUtil          gpuUtil          npuUtil          memResource                     
        agent-ARM-03         0        0/1      0        0        0                    0                0/0              -                -                0/0/0/0/0/0/0/0                 
    nodePids                              
        execNode             pids    
        agent-ARM-03         -       
    traceMessages                         2025/09/03 17:31:37    :    [JOB_ADD] Job 25670440 is submitted by username, job state is PENDING.  
                                          2025/09/03 17:31:38    :    [JOB_START] Job 25670440 start message has been sent, job state is PENDING. 
                                          2025/09/03 17:31:38    :    [JOB_START_ACK] Job 25670440 start message has been received by agent agent-ARM-22. 
                                          2025/09/03 17:31:38    :    [JOB_EXECUTION] Job 25670440 state is from PENDING to RUNNING.  
                                          2025/09/03 17:31:38    :    [JOB_FINISH] Job 25670440 state is from RUNNING to FAILED, reason: job build failed.    
                                          2025/09/03 17:31:38    :    [JOB_RETRY] Job 25670440 will retry for the 1st time, and max retry times is 1, and retry type is cluster requeue.  
                                          2025/09/03 17:31:38    :    [JOB_STATE_CHANGE] Job 25670440 state is from FAILED to PENDING.    
                                          2025/09/03 17:31:39    :    [JOB_START] Job 25670440 start message has been sent, job state is PENDING. 
                                          2025/09/03 17:31:39    :    [JOB_START_ACK] Job 25670440 start message has been received by agent agent-ARM-03. 
                                          2025/09/03 17:31:39    :    [JOB_EXECUTION] Job 25670440 state is from PENDING to RUNNING.  
                                          2025/09/03 17:31:39    :    [JOB_FINISH] Job 25670440 state is from RUNNING to FAILED, reason: job build failed.    
本文阅读量  次
本站总访问量  次