You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PBS/TORQUE集群中future.apply并行任务被误杀问题?

PBS/TORQUE集群中使用future.apply并行时内存统计异常导致任务终止

我在本地机器使用future.apply和future包实现R任务并行化完全正常,但在PBS/TORQUE管理的计算机集群上运行时,任务会因违反资源策略被终止。查看进程后发现,qstat报告的resources_used.mem和resources_used.vmem数值高得离谱。

注:我已了解并使用过batchtools和future.batchtools包,但它们需要按特定方式组织脚本并向队列提交任务,本次案例希望避免使用这类工具。

最小可复现示例(MVE)

代码先生成一个含10^9个元素的向量,再通过future_lapply进行并行运算:

library(future.apply)

plan(multicore, workers = 12)

sample <- rnorm(n = 10^9, mean = 10, sd = 10)

print(object.size(sample)/(1024*1024)) # 占用约8GB内存
options(future.globals.maxSize=+Inf) 
options(future.gc = TRUE)

future_lapply(future.seed = TRUE,
              X = 1:12, function(idx){
                # 执行简单操作
                for(i in sample){
                  if (i > 0) dummy <- 1
                }
                return(dummy)
              })

集群运行情况

在本地32GB可用内存的计算机上,代码运行正常(无内存问题)。但在资源充足的集群上通过以下命令提交交互式任务:

qsub -I -l mem=60Gb -l nodes=1:ppn=12 -l walltime=72:00:00

任务会因违反资源策略被自动终止。执行qstat -f JOBNAME | grep used查看资源使用情况:

resources_used.cput = 00:05:29
resources_used.mem = 102597484kb
resources_used.vmem = 213467760kb
resources_used.walltime = 00:02:06

结果显示进程占用约102GB内存和213GB虚拟内存,但实际通过htop等工具监控节点时,内存使用量是正常的,问题出在TORQUE/PBS的统计数值虚高。


内容的提问来源于stack exchange,提问作者D1X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:30:13