2. 生物计算任务的特征建模

在生物计算平台中,资源治理失败往往不是因为调度器不够强,而是因为任务画像过于粗糙。把测序比对、变异检测、宏基因组组装、分子对接、冷冻电镜三维重构都归为“计算任务”,只用一个 CPU 核数和一个内存上限去描述,必然导致两类错误:一类是资源给多了,节点长期空转;另一类是资源给少了,任务被 OOM Killer 杀掉或反复重试。因此,特征建模的目标不是给任务贴标签,而是把任务对 CPU、内存、I/O、GPU、网络和存储的真实需求,转化为可度量、可预测、可用于调度决策的参数集合。

一、数据密集型:瓶颈常常不在 CPU

生物计算任务的第一特征是数据体量大且访问模式特殊。以全基因组重测序分析为例,一个 30× 人类样本的 FASTQ 文件约 60~90 GB,BAM 文件约 80~120 GB,变异检测阶段还要反复扫描 BAM 的特定区间。这类任务的 CPU 利用率可能只有 30%~50%,但磁盘吞吐和内存带宽长期处于高位。如果只按 CPU 核数分配资源,会出现“CPU 空闲、I/O 排队”的假饱和现象。

刻画数据密集型任务,至少要采集四类指标:输入数据量(GB)、中间文件峰值(GB)、随机读比例、以及单位数据的处理耗时(s/GB)。例如,BWA-MEM 比对在 16 核、64 GB 内存节点上处理 60 GB FASTQ,典型耗时约 4~6 小时,峰值内存约 20~28 GB,磁盘读吞吐约 200~400 MB/s。这些数值不是固定常数,而是随参考基因组索引、读长和比对参数变化,但可以作为初始画像的锚点。真正用于调度的,是“每 GB 输入所需内存”和“每 GB 输入所需核时”这两个归一化参数,它们让不同规模样本之间可以外推。

二、流程异构性:同一流程内部资源需求差异巨大

生物信息流程通常由多个工具串联而成,而各步骤的资源画像差异极大。以 GATK 最佳实践流程为例:BWA 比对是 CPU 与内存并重;MarkDuplicates 是内存密集型,峰值可达数十 GB;BaseRecalibrator 是 I/O 与 CPU 混合;HaplotypeCaller 则对单核性能和内存局部性敏感。若把整个流程当作一个任务申请固定资源,只能按最大需求分配,造成大量浪费。

更合理的做法是把流程拆成步骤级任务,为每个步骤建立独立的资源画像,并在工作流引擎中按步骤申请和释放资源。下面是一个步骤级画像的示例片段,用于说明字段结构:

step: HaplotypeCaller
  cpu_cores: 4
  mem_peak_gb: 16
  mem_avg_gb: 9
  io_read_gb: 45
  io_write_gb: 3
  gpu: false
  expected_runtime_min: 95
  retry_policy: on_oom_increase_mem_1.5x

这类画像不需要一开始就精确,而是通过历史运行数据持续回归。关键是把“步骤”作为资源治理的最小单元,而不是把“流程”作为最小单元。

三、突发并发与长尾作业:两类相反的压力

生物计算平台的负载具有明显的双峰特征。一端是突发并发:当测序仪下机或批量样本提交时,数百个比对任务在几分钟内同时到达,队列深度迅速上升。另一端是长尾作业:少数任务运行时间是中位数的 5~20 倍,例如宏基因组组装、大规模系统发育树构建、冷冻电镜颗粒挑选。长尾任务占用资源时间长、失败代价高,且往往难以预测。

对突发并发,治理重点是准入控制和队列分层:设置每用户并发上限、按优先级划分队列、对短任务预留快速通道。对长尾作业,治理重点是检查点、超时策略和资源预留:为超过阈值的长任务分配独占节点或高内存队列,避免它们与短任务争抢。判断一个任务是否属于长尾,可以用历史 P50 与 P95 运行时的比值:若 P95/P50 大于 5,就应进入长尾治理策略。

生物计算任务特征建模:四维画像与资源映射 任务输入 FASTQ / BAM / 影像 数据量 60~120 GB 参考基因组 / 索引 随机读比例高 流程定义 (WDL/CWL) 步骤级异构 样本批次 / 并发提交 突发到达 长尾任务标记 P95/P50 > 5 四维特征画像 ① 数据密集型 输入量 GB · 峰值内存 GB · 随机读比例 归一化:每 GB 输入所需内存 / 核时 ② 流程异构性 步骤级 CPU / 内存 / I/O 差异 按步骤申请与释放资源 ③ 突发并发 队列深度 · 到达速率 · 并发上限 准入控制 · 队列分层 · 短任务快通道 ④ 长尾作业 P50 / P95 运行时 · 失败代价 检查点 · 超时 · 独占节点预留 资源映射与调度 CPU 核数 / 内存上限 按步骤画像分配 本地盘 / 网络存储 I/O 吞吐与随机读 GPU / 加速卡 分子对接 / 冷冻电镜 队列与优先级 突发 / 长尾分流 重试与弹性策略 OOM 后内存 ×1.5 历史运行数据回归 → 持续修正画像参数

四、从画像到调度:参数如何真正起作用

特征建模最终要落到调度决策上。一个可操作的映射关系是:数据密集型任务优先匹配高 I/O 带宽节点,并设置内存下限为峰值内存的 1.2 倍;流程异构任务按步骤拆分,每步独立申请资源;突发并发任务进入短任务队列,限制单用户并发数;长尾任务进入独占队列,并启用检查点。以 OOM 为例,若某步骤历史峰值内存为 16 GB,首次分配 20 GB,运行中触发 OOM,则重试策略应将该步骤内存提升至 30 GB,而不是简单重跑。这个“失败—提升—重试”的闭环,正是画像参数在治理中发挥作用的典型方式。

需要强调的是,画像不是一次性标定,而是持续回归。平台应记录每个步骤的实际 CPU 利用率、峰值内存、I/O 吞吐和运行时长,按周或按批次更新画像参数。当某步骤的 P95 内存连续多次超过当前分配值时,自动上调;当长期低于 50% 时,自动下调。这样,资源治理才从静态配置走向动态适应,真正支撑生物计算任务的高效、稳定运行。