4. 任务模型:任务类型与属性
在DAG任务调度系统中,任务模型是调度决策的基础输入。任务模型不仅定义了单个计算单元的行为特征,还决定了数据依赖关系的传递方式和服务边界的划分策略。本节从任务类型和任务属性两个维度展开,为后续数据传输机制设计提供模型支撑。
4.1 任务类型
根据任务对计算资源和I/O资源的消耗特征,DAG中的任务节点可分为三种基本类型。不同类型的任务在调度策略、数据放置和传输路径上存在显著差异。
| 任务类型 | 资源瓶颈 | 典型场景 | 数据特征 | 调度倾向 |
|---|---|---|---|---|
| 计算型 | CPU / GPU | 矩阵乘法、模型训练、加密运算 | 输入数据量小,中间结果大 | 优先分配高性能计算节点 |
| I/O型 | 磁盘 / 网络带宽 | 数据清洗、文件转换、日志聚合 | 输入输出数据量大,计算量小 | 优先靠近数据源或存储节点 |
| 混合型 | CPU + I/O 交替 | ETL管道、特征工程、实时推理 | 数据量与计算量均衡 | 需动态平衡资源分配 |
4.2 任务属性
每个DAG任务节点携带一组关键属性,这些属性直接影响调度器对执行顺序、资源分配和数据传输路径的决策。核心属性包括执行时间、数据量和优先级。
4.2.1 执行时间
执行时间指任务在理想资源条件下的预估运行时长。在DAG调度中,执行时间用于计算关键路径、评估并行度和预测完成时间。执行时间通常以毫秒或秒为单位,并允许以概率分布形式表达不确定性。
4.2.2 数据量
数据量描述任务输入、输出及中间结果的大小。数据量属性是决定数据传输开销的核心参数,直接影响服务边界是否值得跨越。数据量通常分为三个等级:
- 小数据量(< 1 MB): 传输开销可忽略,适合频繁跨边界传递。
- 中等数据量(1 MB ~ 100 MB): 需权衡传输成本与计算本地化收益。
- 大数据量(> 100 MB): 应优先避免跨边界传输,采用数据本地化调度。
4.2.3 优先级
优先级用于表达任务在DAG中的紧急程度或业务重要性。优先级通常分为静态优先级(由DAG结构或用户指定)和动态优先级(由调度器运行时调整)。在服务边界决策中,高优先级任务应获得更短的数据传输路径和更少的排队等待。
调度权重 = α × 优先级 + β / 执行时间 + γ / 数据量,其中α、β、γ为可调系数。
4.3 任务模型与数据传输的关联
任务类型和属性共同决定了数据传输机制的设计约束。下图展示了任务模型各要素如何影响数据传输路径的选择和服务边界的划分。
4.4 任务属性组合决策矩阵
在实际调度中,任务属性需要组合使用才能做出合理的服务边界决策。下表给出了不同属性组合下的推荐数据传输策略。
| 执行时间 | 数据量 | 优先级 | 推荐传输策略 | 服务边界决策 |
|---|---|---|---|---|
| 短 | 小 | 高 | 直接传输,不等待 | 允许跨边界 |
| 短 | 大 | 高 | 预取+本地化 | 尽量本地化 |
| 长 | 小 | 低 | 排队传输,可合并 | 允许跨边界 |
| 长 | 大 | 低 | 数据不动,计算移动 | 强制本地化 |
| 长 | 大 | 高 | 预留带宽+预取 | 动态评估 |
4.5 任务模型在DAG中的表示
在DAG调度框架中,每个任务节点通常以结构化数据表示。以下是一个典型任务节点的JSON表示示例:
{
"task_id": "task_0042",
"type": "mixed",
"attributes": {
"execution_time": {
"estimated_ms": 3500,
"variance_ms": 200,
"distribution": "normal"
},
"data_volume": {
"input_bytes": 52428800,
"output_bytes": 10485760,
"intermediate_bytes": 20971520
},
"priority": {
"static_level": 3,
"dynamic_boost": 1.2,
"deadline_ms": 15000
}
},
"dependencies": ["task_0038", "task_0039"],
"service_boundary_hint": "prefer_local"
}
该表示结构将任务类型、执行时间、数据量和优先级统一封装,并额外提供service_boundary_hint字段,用于指导调度器在服务边界划分时做出初步判断。该字段可由DAG编译器静态分析生成,也可由运行时调度器动态调整。