Nextflow工作流中单独限制GetFromHPSS进程并行执行数的配置问题
解决方案
你可以通过 Nextflow 进程级的 maxForks 参数实现单个进程的并行数限制,这是你当前使用的 21.04 版本原生支持的配置,正确配置示例如下:
// 全局executor配置,设置足够大的队列大小满足下游进程的并行需求 executor { queueSize = 2000 submitRateLimit = "10sec" } process { // 所有进程默认使用SGE调度器 executor = 'sge' // 单独限制GetFromHPSS的最大并行实例数 withName: 'GetFromHPSS' { maxForks = 10 // 若需要单独限制该进程的提交速率可加以下配置 // submitRateLimit = "1/1sec" } // 可按需给其他进程单独配置并行上限 withName: 'SingleDUTimeResFit' { maxForks = 1500 } }
配置说明
maxForks是 Nextflow 提供的进程级配置项,仅作用于匹配的进程,不会影响其他进程的并行执行- 把全局
executor.queueSize调大到满足下游进程的并行需求后,不会出现所有队列资源被GetFromHPSS占满的情况,只要GetFromHPSS输出了一条数据,下游的CoupleDETXToFile、SingleDUTimeResFit就可以立即启动处理,不需要等待所有拉文件任务完成。
之前报错的原因
- 21.04 版本不支持在
process.withName块下嵌套配置executor.queueSize,queueSize是 executor 全局参数,不支持进程级单独设置 - 你之前的配置语法错误,将executor配置块嵌套在了process块下,且进程名未用引号包裹,导致配置解析失败。
内容的提问来源于stack exchange,提问作者tamasgal
相关产品推荐
相关产品推荐

