需要注意几个点:
- cromwel在进行任务投递时,会构建一个临时的工作目录,用于存储任务的中间文件,因此,我们需要保证工作目录的权限和空间足够。
- cromwell存储每个任务的状态和任务间的逻辑关系,如果没有部署数据库,这部分信息会存储到内存中,因此如果没有部署数据库,需要确保内存足够支撑任务的运行,否则可能会出现内存爆掉的问题。
Run 模式投递
wdl本身有多种投递模式,其中最简单的是直接再前台进行任务的投递(run模式)1
2
3
4
5
6java -Xms512m -Xmx1g \
-Dconfig.file=cromwell-87.cfg \
-jar cromwell-87.jar \
run \
pipeline.wdl \
-i pipeline.input
这种模式,是直接进行单次的任务投递,执行简单无需额外的配置,但是在任务执行过程中,会占用前台的资源,如果任务复杂(task多)或并行的数据多,会导致内存爆掉。
因此,再非测试阶段,最好使用Server Mode进行任务的投递,将任务投递到后台进行执行。
Server Mode 投递
进行后台投递时候,我们首先需要启动一个后台服务1
2
3
4
5nohup java -Xmx512m \
-Dconfig.file=cromwell-87.server.cfg \
-jar cromwell-87.jar \
server \
cromwell.log 2>&1 &
启动服务后,我们可以通过submit命令进行任务的投递1
2
3
4
5
6
7
8
9
10
11
12outdir="Server_test"
cromwell="cromwell-87.jar"
cromwell_config="cromwell-87.server.cfg"
wdl="pipeline.wdl"
wdl_config="pipeline.input"
/share/app/java/jdk-15/bin/java -Xmx512m \
-Dconfig.file=${cromwell_config} \
-jar ${cromwell} \
submit ${wdl} \
-i ${wdl_config} \
${outdir}/cromwell.log \