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 基于该特性进行自动优化。
  • sequential:顺序访问
  • random:随机读写
  • hybrid:混合读写
rwpattern read | write | reread | rewrite | hybrid 用于为底层调度提供Task的IO 读写特点,Achelous 基于该特性进行自动优化。
  • read:以读为主
  • reread:大量重复读
  • write:以写为主
  • rewrite:大量重复写
  • hybrid:读写都有
workingset x K/G/M,x 为浮点数 Task 读或者写的总大小上限
isolationlevel stage | io Task 的IO 的隔离级别。
  • stage:该Task 写的数据只有在Task 结束后才被其它的Task 或者应用程序读取。
  • io:该Task 写的数据,一旦写操作返回就有可能被其它Task 访问。
epheremallevel stage | job | user Task 写的数据的生命周期特性。
  • stage:数据在Task 结束后不再需要。
  • job:数据在整个Job 结束后不再需要。
  • user:数据始终需要被保留。
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或者多个字符串用“,”分开,例如:
  • “dom1,dom2”
  • “dom3”
调度域类似传统调度器的队列,系统管理员将一个或者多个计算节点指定为一个调度域。用户调度Job指定调度域,将任务投递到对应的调度域的计算节点上运行。
execmode 取值范围为:
  • docker: 表示认为以Docker 容器化模式运行(默认值)
  • singularity: 表示以Singularity模式运行
  • host: 表示任务以进程方式运行
用以指定任务运行方式,支持三种执行形式,默认以Docker形式执行。
networkmode 网络模式,四种:
  • host: 使用主机网络
  • bridge:使用网桥模式
  • none: 不指定,采用docker或singularity默认网络选项(默认值)
  • ptp:容器之间通过PTP网络
容器运行的时候,调度器根据该配置选择网络模式, 默认采用none模式。应与port配合使用。注意: 目前docker支持none、host和 bridge三种模式 ; Singularity支持none 、bridge和ptp三种模式
port
  • 在host网络模式下: port: { "Num": 2, "ports":[] }
  • 在bridge网络模式下: port: {"Num": 2, “ports": [ { "ContainerPort": "20009", "HostPort": "" }, { "ContainerPort": "200010", "HostPort": "" } ] }
申请端口资源:
  • 在host模式下,分配要求数量的端口,通过环境变量CONTAINER_PORTS_AVAILABLE_HOST可获取分配的端口列表。
  • 在bridge模式下,分配要求数量的端口,如果用户指定了将通过端口映射将获取的主机端口映射到指定的ContainerPort。分配到的端口可以通过环境变量CONTAINER_PORTS_AVAILABLE_BRIDGE获取
resourcescale 支持三种资源调节模式:
  • "auto"
  • "up"
  • "down"
Bioflow根据任务的运行情况动态调节任务所需的cpu和memory资源。初始值为task中定义的“cpu”和“memory”值。在模式“auto”下,task的资源可以自动增加或者减少。“up”模式只允许增加资源,“down”模式只允许减少资源。需要注意的是,如果资源调节不及时,task仍然可能OOM退出。如果需要避免OOM退出,请参考”disableoom”属性。
disableoom
  • true
  • false
如果设定为true,task任务的memory资源使用超出限制后不会因为OOM被杀掉。通常和“resourcescale”选项配合使用。
shell 所使用的Shell所在路径(字符串型),例如:"/usr/bin/sh" 用户通过shell来指定自己执行的Linux shell版本
returncodes 支持三种设置:
  • 固定为“*”(字符串型)
  • 0~255 间任意整型
  • 0~255间任意整数组成的整型数组,例如:[1,2,5,127]
用户可以通过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 支持以下四种模式:
  • fast
  • latency
  • throught
  • slow
指定任务的IO需求类型,Bioflow将自动为任务在特定的存储集群上创建镜像workdir,使得任务达到最好的性能:
  • fast:需求快速存储
  • latency:需要延迟较低的存储
  • throught:需要高带宽存储
  • slow:可使用普通低性能存储
一般环境中,如果对任务IO性能有要求,推荐使用fast选项
fadvise {"read" : [fq1, fq2],"write" : ["${sampleName}.html"]} 一个JSON格式的说明,Key 包括:
  • read:任务读取的文件列表
  • write:任务写的文件列表
这些信息用于Bioflow自动计算任务的IO负载,实现按照io负载调度任务
resources {"mpu" : 1,"fpga" : 2} JSON格式的说明用于指明任务需要的扩展资源(即系统内存在的非cpu、mem、disk、gpu的资源),其中键值为资源的名字,对应的值为资源量,可以为浮点数或者整数
Powered by XTAO TechnologyLast Modified On:2021 2024-04-01 03:13:12

results matching ""

    No results matching ""