Achelous 特有的WDL 属性
除了基础的WDL 语法之外,Achelous 开发团队,针对生信用户的具体需求,开发了一些列特定的功能,以方便用户不同场景的使用。
Achelous 所有WDL标准Runtime 属性
WDL 标准允许不同的提供商支持不同的运行时属性来为用户提供更高级的功能。Achelous 支持所有标准的Runtime 属性:
- docker : 指明task 的docker 镜像名称
- memory : task 的内存需求
- cpu : task 的cpu 资源需求
- disk : task 的disk 资源需求
Achelous 特有地Runtime 属性
Achelous 支持下述非标准的Runtime 属性,方便用户运行任务。
属性名称(大小写不敏感) | 赋值类型 | 描述 |
---|---|---|
gpu | 整数 | Task 需要的GPU 的数量 |
gpui | 整数 | Task需要的GPU的MIG的数量 |
gpumemory | 浮点数(M 为单位) | Task 需要的GPU 显存大小 |
servertype | normal | fat | 需要的服务器类型:normal 代表普通服务器;fat 代表胖节点 |
retry | 整数 | 任务失败后重试的次数 |
tag | 字符串表达式 | 通过biocli job status 查看状态时,显示为task 的stage 的名称 |
sparkexecutoruri | hdfs 路径 | 用于Spark 任务,用户指定spark 程序所在的hdfs 的路径 |
usextaosparkscheduler | true | false | 用于Spark 任务,为Spark自动设置和初始化资源分配器环境变量 |
usextaoscheduler | true | false | 用于MPI/Tensorflow/Caffe 等任务,表示是否设置极道的集群调度环境 |
slaveconstraints | {"key1":"value1","key2":"value2",…} |
指定执行任务的服务器节点的限制属性,常用于选定特定的计算节点来执行任务。 |
volumes | {"/a/dir1":"/mnt/dir1",…} |
用于映射主机卷到docker容器,格式为"容器路径:主机路径" |
cputuneratio | 浮点数,>= 0 默认值:0 | 如果Task 失败,重投任务的时候,将CPU 的资源需求设置为:上次CPU 资源 x (1 + cputuneratio)。 |
memtuneratio | 浮点数,>= 0 默认值:0 | 如果Task 失败,重投任务的时候,将Mem 的资源需求设置为:上次Mem 资源 x (1 + memtuneratio)。 |
label | 任意有效的WDL 表达式 | 用于用户为Task 添加 label,可在查看job status 的时候作为Task 的息显示出来。 |
iopattern | sequential | random | hybrid | 用于为底层调度提供Task的IO 访问特点,Achelous 基于该特性进行自动优化。
|
rwpattern | read | write | reread | rewrite | hybrid | 用于为底层调度提供Task的IO 读写特点,Achelous 基于该特性进行自动优化。
|
workingset | x K/G/M,x 为浮点数 | Task 读或者写的总大小上限 |
isolationlevel | stage | io | Task 的IO 的隔离级别。
|
epheremallevel | stage | job | user | Task 写的数据的生命周期特性。
|
epheremalfilepattern | 带"*"的模式字符串 | 与epheremallevel 联合使用,表示满足该模式的文件或者目录具备指定的生命周期特性。 |
epheremalmap | 一个JSON 格式的数据:{"pattern" : "level",…} | 用于扩展Task 的属性 epheremalfilepattern 和 epheremallevel,用户可以指定多于一对的pattern 和 level。 |
workdir | 相对路径 | 与Job的工作目录拼接组成Task的工作目录。 |
starvetimeout | 整数 | 任务的排队超时时间,单位秒。如果任务的输入数据就绪,投递到计算集群等待资源,等待时间超过这个限制就会失败返回给调度器。该选项用于防止任务因为资源不足无限等待。 |
globalresources | {"fastx-license1":"1","gatk-license":"1", …} |
Task运行所需的全局资源,可用于支持浮动许可证(license)。用户指明所需要的license的key和数量。 |
tracesource | {"output.vcf" : [file1, file2], outputBamFile: [file3]} | 该选项配合极道数据管理。Bioflow将会自动根据用户指定的输入输出关系,为输出文件打上tag,指明产生它的源文件,用于后续的数据溯源。 |
ldapauth | true/false 或"true"/"false" |
指明该容器是否安装了ldap客户端,需要通过极道计算环境的ldap服务进行用户认证。如果设为true,bioflow将为容器进行必要的设置,使得ldap认证可以工作。 |
runner | "partisaner" | 指定task的执行引擎为partisaner。用于运行分布式的tensorflow、pytorch和mpi程序。Bioflow将读取runneroptions,通过极道的partisaner集群,自动构建tensorflow、mpich或者pytorch集群进行计算。用户无需知道partisaner的任何细节。 |
runneroptions | JSON格式的数据 | 与runner选项一起工作,提供tensorflow、pytorch或者mpich集群的配置信息。 |
scheduledomains | 1或者多个字符串用“,”分开,例如:
|
调度域类似传统调度器的队列,系统管理员将一个或者多个计算节点指定为一个调度域。用户调度Job指定调度域,将任务投递到对应的调度域的计算节点上运行。 |
execmode | 取值范围为:
|
用以指定任务运行方式,支持三种执行形式,默认以Docker形式执行。 |
networkmode | 网络模式,四种:
|
容器运行的时候,调度器根据该配置选择网络模式, 默认采用none模式。应与port配合使用。注意: 目前docker支持none、host和 bridge三种模式 ; Singularity支持none 、bridge和ptp三种模式 |
port |
|
申请端口资源:
|
resourcescale | 支持三种资源调节模式:
|
Bioflow根据任务的运行情况动态调节任务所需的cpu和memory资源。初始值为task中定义的“cpu”和“memory”值。在模式“auto”下,task的资源可以自动增加或者减少。“up”模式只允许增加资源,“down”模式只允许减少资源。需要注意的是,如果资源调节不及时,task仍然可能OOM退出。如果需要避免OOM退出,请参考”disableoom”属性。 |
disableoom |
|
如果设定为true,task任务的memory资源使用超出限制后不会因为OOM被杀掉。通常和“resourcescale”选项配合使用。 |
shell | 所使用的Shell所在路径(字符串型),例如:"/usr/bin/sh" | 用户通过shell来指定自己执行的Linux shell版本 |
returncodes | 支持三种设置:
|
用户可以通过returncodes自定义任务成功的退出码,设置为*则认为所有的退出码都是成功,设置为1则只有1是成功的返回码,也可以设置为整型数组则数组中的返回码都认为成功,注意默认返回码0是成功 |
singularity | sif文件路径,例如: /mnt/nfs/xx.sif | 说明Task以Singularity容 器格式运行,且指向一个 sif文件的绝对路径 |
memlimitratio | 浮点型变量(-1 具有特殊含义) | -1: task的内存不受限制;大于1:task的内存限制时申请值的x倍;其他值:task的内存与申请值相同 |
kvtags | {"key1" : "value1","key2" :"~{xxx_var}"...} |
附加到Task上的Key、Value对,将会显示在biocli |
affinity | `[ { "cpu" : 10, "gpu" : 0,"memory" : "10G", "waittime" : 60 }, {…} ] | 备选资源选项,当runtime里指定的首选资源不满足则按照等待时间顺序依次选择匹配备选资源。其它cpu、gpu、memory、gpui如果指定则使用指定的值,不指定则使用runtime中的旧值。waittime单位为秒,表示等待多少时间后考虑该备选项。 |
priority | 整型变量;取值范围: 0 ~ 10 | 指定Task级别的优先级,优先于Job的优先级,但是受队列优先级控制 |
tier | 支持以下四种模式:
|
指定任务的IO需求类型,Bioflow将自动为任务在特定的存储集群上创建镜像workdir,使得任务达到最好的性能:
|
fadvise | {"read" : [fq1, fq2],"write" : ["${sampleName}.html"]} |
一个JSON格式的说明,Key 包括:
|
resources | {"mpu" : 1,"fpga" : 2} |
JSON格式的说明用于指明任务需要的扩展资源(即系统内存在的非cpu、mem、disk、gpu的资源),其中键值为资源的名字,对应的值为资源量,可以为浮点数或者整数 |