Skip to content

WorkflowSim 工作流仿真软件介绍 (Chinese Version)

Xu edited this page Dec 27, 2017 · 5 revisions

WorkflowSim 工作流仿真软件介绍

WorkflowSim是由南加州大学(University of Southern California)的Pegasus WMS组开发的一套开源工作流仿真软件。WorkflowSim可用于验证图算法(Graph algorithm)、分布式研究(distributed computing)、工作流调度算法(scheduling)、资源调度算法(resource provisioning)等问题的研究。

其工作原理是在暨有的CloudSim仿真软件基础上,提供workflow层次的仿真。工作流可以用有向图来描述(Directed Acyclic Graph) DAG,图的任何一个节点都是一个由用户制定执行的任务(task),节点之间有通过数据输入输出形成的依赖关系(dependency)。工作流引擎会依据其依赖关系按顺序执行,同时执行也会调用用户所选择的调度算法,比如HEFT,MINMIN等等算法已经在WorkflowSim里边实现并且测试通过了。 用户也可以添加自己的调度算法。

在实际运行过程中,因为很多工作流非常大,甚至到达几千上万个任务,而通常我们只有几十个计算节点。这个时候就需要使用task clustering这个技术来聚合相类似的任务从而形成任务群(clustered job),有时候也通用称之为job。每个job包含了多个task,然后提交给运行环境的时候是整体提交的,这样可以节省很多延迟(submission delay),等到了某一个计算节点的时候再打开任务群然后分别执行。

如何形成job就需要各种算法,有包括了balanced task clustering可以综合考虑依赖关系的,也有fault tolerant clustering可以综合考虑规避failure的。这些也都已经在WorkflowSim里边实现。

其行为最为接近Pegasus工作流管理系统。

WorkflowSim是一套开源软件,所有源代码和介绍都可以在http://www.github.com/WorkflowSim/ 找到,使用目前流行的Git做软件版本控制。

使用非常简单,下载完源代码之后,只需要在任何一个WorkflowSim example里边选择所需要的dax 文档,并且修改里边的daxPath变量,即可运行。 比如选择“WorkflowSim-1.0/examples/org/workflowsim/examples/WorkflowSimBasicExample1.java”这个例子,将里边的daxPath改成在你当前环境下的文件路径即可。比如如果你下载到了。

WorkflowSim在config/dax文件夹下面已经提供了很多DAX文件可供仿真。 这些工作流的介绍可以参考:http://pegasus.isi.edu/workflow_gallery/index.php 同时我们还提供WorkflowGenerator可以生成你所需要的任何工作流DAX文件 https://confluence.pegasus.isi.edu/display/pegasus/WorkflowGenerator

如果对WorkflowSim感兴趣并且想进一步开发功能,可建议(但不限于)研究以下方面:

  1. 基于价格的调度算法,CloudSim本身已经实现了每个task的cost,但是WorkflowSim还没有合适的调度算法。
  2. 动态资源调度算法。WorkflowSim目前还是静态的把计算节点建立好然后运行工作流。
  3. 多数据中心支持。目前只测试了单数据中心支持。
  4. 数据日志支持,将已有的工作流管理系统的log转换成为trace从而可以在WorkflowSim里边仿真。目前只测试过Pegasus。
  5. 可靠的调度算法,在仿真Failure的情况下调度算法应该如何变得更鲁棒?目前failure的生成已经开发完成,但是相应的算法还没有。
  6. 自适应算法或者分布式算法。目前仅有一个中心调度算法,分布式算法也可以在WorkflowSim上面实现。
  7. 基于duplication的算法。在计算节点有余的时候,可以自动复制一部分任务到空闲的计算节点上。