目录
目录README.md

SchedulingSimulator 调度模拟器

SchedulingSimulator 是一个任务调度模拟器,用于在不同计算环境中提交和调度任务。

功能特性

  • AI任务调度:支持AI训练任务的自动与手动提交
  • 云任务调度:支持阿里云、腾讯云等云平台任务提交
  • HPC任务调度:支持高性能计算任务如BWA、Hashcat、LAMMPS等的调度
  • 智能调度策略:支持基于资源、价格和数据位置的调度策略
  • 集群资源管理:通过MySQL数据库管理集群资源和任务状态
  • 并发任务处理:使用线程池实现任务并发提交和状态监控

系统架构

SchedulingSimulator/
├── SchedulingSimulator/        # 主程序目录
│   ├── main.py                 # 程序入口
│   └── threads.py              # 线程实现(任务提交和状态监控)
├── config/                     # 配置管理
│   ├── config.py               # 全局配置和状态定义
│   ├── database.py             # 数据库配置加载
│   ├── db_manager.py           # 数据库操作管理
│   ├── cache_manager.py        # 缓存管理
│   └── ...
├── scheduler/                  # 调度器
│   ├── scheduler.py            # 主调度器
│   ├── resource_scheduler.py    # 资源调度策略
│   ├── price_scheduler.py      # 价格调度策略
│   └── data_scheduler.py       # 数据位置调度策略
├── task/                       # 任务管理
│   ├── task_manager.py         # 任务管理器
│   ├── ai_task_submit.py       # AI任务提交
│   ├── cloud_task_submit.py    # 云任务提交
│   ├── hpc_task_submit.py      # HPC任务提交
│   └── ...
├── TaskSubmissionScript/       # 任务提交脚本示例
└── mysql/                      # 数据库相关文件
    ├── simulator.sql           # 数据库初始化脚本
    └── simulator_new.sql       # 新版数据库初始化脚本

技术选型

  • 编程语言: Python 3.x
  • 数据库: MySQL 8.0+
  • 并发模型: Python ThreadPoolExecutor
  • 依赖库:
    • requests
    • mysql-connector-python
    • pyyaml

数据库配置

系统使用MySQL数据库存储配置信息和任务状态。

数据库表结构

  • algorithm_mapping: 存储算法映射信息
  • cluster_resources: 存储集群资源信息
  • api_config: 存储API配置信息
  • cluster_prices: 存储集群价格信息
  • file_mapping: 存储文件映射信息
  • task_templates: 存储任务模板信息

数据库配置参数

config/db_manager.py 文件中修改以下参数:

DB_CONFIG = {
    'host': 'localhost',
    'database': 'scheduling_simulator',
    'user': '',
    'password': ''
}

首次使用初始化

  1. 确保MySQL服务正在运行
  2. 创建数据库:
    CREATE DATABASE scheduling_simulator;
  3. 导入数据库结构和初始数据:
    mysql -u root -p scheduling_simulator < mysql/simulator.sql

依赖安装

pip install requests mysql-connector-python pyyaml

或者使用requirements.txt(如果存在):

pip install -r requirements.txt

使用方法

  1. 安装依赖:

    pip install requests mysql-connector-python pyyaml
  2. 配置数据库连接参数

  3. 初始化数据库(首次使用):

    CREATE DATABASE scheduling_simulator;
    mysql -u root -p scheduling_simulator < mysql/simulator.sql
  4. 运行主程序:

    python SchedulingSimulator/main.py

工作流程

  1. 系统启动时从数据库加载配置信息和任务模板
  2. 根据任务模板生成具体任务实例
  3. 启动任务提交线程和状态监控线程
  4. 任务提交线程根据任务状态和调度策略选择合适的集群
  5. 将任务提交到选中的集群
  6. 状态监控线程定期查询已提交任务的状态
  7. 根据任务执行结果更新数据库中的任务状态和集群资源

调度策略

系统支持三种调度策略:

  1. **资源优先策略 (resource)**:选择资源最充足的集群
  2. **价格优先策略 (price)**:选择成本最低的集群
  3. **数据位置策略 (data)**:选择数据所在位置的集群

任务类型

系统支持三种任务类型:

  1. AI任务:机器学习训练任务
  2. 云任务:云平台部署任务
  3. HPC任务:高性能计算任务

扩展性

系统具有良好的扩展性,可以通过以下方式添加新功能:

  1. 添加新的调度策略:实现新的调度算法并集成到调度器中
  2. 支持新的任务类型:创建新的任务提交模块
  3. 集成新的云平台:扩展云任务提交模块
关于
393.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号