CloudSimPy 开源项目使用教程

CloudSimPy 开源项目使用教程

1. 项目的目录结构及介绍

CloudSimPy 是一个数据中心作业调度仿真框架,基于离散事件仿真框架 SimPy,利用 Python 语言进行实现。项目的目录结构如下:

CloudSimPy/
├── core/
│   ├── config/
│   ├── job/
│   ├── machine/
│   ├── cluster/
│   ├── algorithm/
│   ├── scheduler/
│   ├── broker/
│   ├── monitor/
│   └── simulation/
├── playground/
│   ├── DAG/
│   │   └── algorithm/
│   ├── Non_DAG/
│   │   └── algorithm/
│   └── auxiliary/
├── .gitignore
├── LICENSE
├── README.en.md
├── README.md
└── requirements.txt

目录结构介绍

  • core/: 核心包,包含数据中心作业调度问题中的各个实体(entity)的抽象和建模。

    • config/: 包含任务实例、任务、作业的配置文件。
    • job/: 包含任务实例、任务、作业的建模。
    • machine/: 包含机器的建模。
    • cluster/: 包含计算集群的建模。
    • algorithm/: 定义调度算法的接口。
    • scheduler/: 包含调度器的建模。
    • broker/: 包含作业提交的建模。
    • monitor/: 包含仿真状态监测的建模。
    • simulation/: 包含一次仿真的建模。
  • playground/: 用于方便用户进行试验的包,包含 DAG 和 Non_DAG 包,分别支持考虑任务间依赖关系和不考虑任务间依赖关系情况下的仿真实验。

    • DAG/: 支持考虑任务间依赖关系的仿真实验。
    • Non_DAG/: 支持不考虑任务间依赖关系的仿真实验。
    • auxiliary/: 包含一些辅助类和函数。
  • .gitignore: Git 忽略文件。

  • LICENSE: 项目许可证文件。

  • README.en.md: 英文版项目介绍文件。

  • README.md: 中文版项目介绍文件。

  • requirements.txt: 项目依赖文件。

2. 项目的启动文件介绍

CloudSimPy 的启动文件位于 playground/Non_DAG/launch_scripts/ 目录下,主要启动文件为 main-makespan.py

启动文件介绍

  • main-makespan.py: 该文件是 CloudSimPy 的主要启动文件,用于启动基于完工时间(Makespan)优化的仿真实验。

启动步骤

  1. 克隆项目到本地:

    git clone [email protected]:FC-Li/CloudSimPy.git
    
  2. 设置环境变量:

    export PYTHONPATH=$PYTHONPATH:/path/to/cloudsimpy
    
  3. 进入启动脚本目录:

    cd cloudsimpy/playground/Non_DAG/launch_scripts
    
  4. 运行启动文件:

    python main-makespan.py
    

3. 项目的配置文件介绍

CloudSimPy 的配置文件主要位于 core/config/ 目录下,包含任务实例、任务、作业的配置文件。

配置文件介绍

  • TaskInstanceConfig: 任务实例的配置文件,包含任务实例的资源需求、持续时间等信息。
  • TaskConfig: 任务的配置文件,包含任务的资源需求、持续时间等信息。
  • JobConfig: 作业的配置文件,包含作业的资源需求、持续时间等信息。

配置文件示例

# TaskInstanceConfig.py
class TaskInstanceConfig:
    def __init__(self, resource_demand, duration):
        self.resource_demand = resource_demand
        self.duration = duration

# TaskConfig.py
class TaskConfig:
    def __init__(self, task_instances):
        self.task_instances = task_instances

# JobConfig.py
class JobConfig:
    def __init__(self, tasks):
        self.tasks = tasks

通过这些配置文件,用户可以自定义任务实例、任务和作业的资源需求和持续时间,从而进行不同的仿真实验。

你可能感兴趣的:(CloudSimPy 开源项目使用教程)