WorkflowSim根据既定调度方案进行遍历:以深度优先搜索为例(DFS)

本文探讨了如何使用深度优先搜索(DFS)在WorkflowSim中进行工作流调度模拟。通过分析有向图结构的工作流,从入度为零的节点(根节点)开始,详细阐述了任务的时间片安排、就绪时间、执行时间、完成时间以及传递时间的计算。文中还提供了一段自编的DFS代码片段,用于确定任务的实际时间参数,并指出在遍历过程中可轻松获取整体最大完成时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

As is known to all……咳咳

众所周知,一个workflow就是一张有向图,以Epigenomics为例,它大概长这样:
Epigenomics_46,实际有47个任务

图.1 Epigenomics_46,实际有47个任务

工作流的形状就像好多棵交错纠缠的树,构成森林……哦不还是 有向图呀;
其中可能存在多个入度为零的节点,我们暂且称之为“根节点”。
以上图为例,有两个“根节点”,我们可以用一句话很方便的找出它们:
(寻找根节点)在这里插入图片描述

至此,已知task_i->vm_solution[i],接下来就是仿真调度。具体安排:

每台vm上的时间片(Event)将由一个一个的任务拼接连成;
其中,每一个任务都有一个就绪时间readyTime,一个执行时间timeCost,一个完成时间finishTime(放到实际就是actReadyTime、actFinishTime);
如果父任务pre与子任务suc不在同一台vm上执行,则它们之间还存在一个传递时间transferTime;
一台vm的完成时间由它上面拥有最大完成时间的任务决定;
整体的makespan,即这些vm里的最大finishTime决定。

好了,可以安排时间片了。那怎么来精确求出各个任务的实际就绪时间、完成时间呢?

可以从这些根节点出发,按DFS来遍历它们。自己写了一个适用于task_i->vm_solution[i]的代码:

	private double max(double a, double b) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值