ExaDigiT/RAPS readme文件解析
项目概述
ExaDigiT's Resource Allocator and Power Simulator (RAPS) - 一个用于超算系统的资源分配和功耗模拟器。
开源地址: https://code.ornl.gov/exadigit/raps
核心功能
- 工作负载调度:调度合成工作负载或回放系统遥测工作负载
- 系统监控:在模拟期间提供系统监控
- 功耗估计:在指定时间间隔估计动态系统功耗
- 冷却模型接口:可与FMU冷却模型接口,提供CDU级功耗输入
- 可视化功能:内置绘图功能,可生成功耗和冷却图
- 可选仪表板:提供RAPS仪表板(需要运行RAPS服务器)
详细解读
1. 环境设置
Note: Requires python3.12 or greater.
pip install -e .
- Python版本要求:必须使用Python 3.12或更高版本
- 安装方式 :使用开发模式安装(
-e参数),允许直接修改源代码
2. 使用帮助
raps run -h
- 查看raps run命令的详细帮助信息
3. 默认合成工作负载模拟
raps run
- 最简单的运行方式,使用默认的合成工作负载进行模拟
4. 遥测回放模式
Frontier系统示例:
bash
DATEDIR="date=2024-01-18"
DPATH=/opt/data/frontier
raps run -f $DPATH/slurm/joblive/$DATEDIR,$DPATH/jobprofile/$DATEDIR
- 数据路径结构 :Frontier系统的数据分为
slurm/joblive/和jobprofile/两部分 - 日期格式:使用特定日期格式(如2024-01-18)组织数据
- 多路径支持:用逗号分隔多个数据路径
其他系统遥测数据:
- Marconi100 :从Zenodo下载
job_table.parquet文件 - Adastra MI250 :从Zenodo下载
AdastaJobsMI250_15days.parquet文件 - Google集群跟踪v2:使用特定格式的时间戳
- MIT Supercloud:支持从S3下载数据,有专门的命令行工具
5. 网络模拟
raps run -f /opt/data/lassen/Lassen-Supercomputer-Job-Dataset --system lassen --policy fcfs --backfill firstfit --start '2019-08-22T00:00:00+00:00' -t 12h --arrival poisson --net
- 特殊性:Lassen是少数具有网络数据的数据集之一
- 参数说明 :
--system lassen:指定系统类型--policy fcfs:调度策略为FCFS--backfill firstfit:回填策略为首次适配--start:模拟开始时间-t 12h:模拟持续时间12小时--arrival poisson:作业到达遵循泊松分布--net:启用网络模拟
6. 数据快照功能
raps run -f jobs_2024-02-20_12-20-39.npz
- 优化目的:为减少从parquet文件提取数据的开销
- 格式:NPZ格式(NumPy压缩格式)
- 优势:后续模拟加载更快
7. 冷却模型
- 来源:从https://code.ornl.gov/exadigit/POWER9CSM下载
- 依赖:需要安装make、unzip、libgomp1
- 激活方式 :使用
--cooling或-c参数 - 支持系统:Marconi100、Lassen、Summit等
8. 多分区系统支持
bash
raps run-parts -x setonix/part-cpu setonix/part-gpu
- 命令 :使用
raps run-parts而非raps run - 分区指定 :
-x参数后跟分区列表,如setonix系统的CPU和GPU分区 - 配置方式 :每个分区有独立的配置文件(如
config/setonix-cpu) - 工作负载缩放 :可以使用
--scale参数调整工作负载规模
9. 遥测回放的修改选项
有四种方式修改遥测回放:
-
--arrival:改变到达时间分布prescribed(默认):按原始提交时间回放poisson:按泊松分布到达
-
--policy:改变调度策略replay(默认):按原始开始时间调度fcfs、backfill等:使用内部调度器
-
--scale:改变工作负载规模- 用于将大系统数据回放到小系统上
-
--shuffle:回放前打乱作业顺序
10. 单个作业的回放和分析
raps run -f $DPATH/slurm/joblive/$DATEDIR,$DPATH/jobprofile/$DATEDIR --jid 1234567 -o
--jid:指定作业ID-o:输出作业级功耗结果
11. 遥测数据统计分析
raps telemetry -f $DPATH/slurm/joblive/$DATEDIR,$DPATH/jobprofile/$DATEDIR
- 计算平均作业到达时间等统计信息
12. Docker容器构建和运行
make docker_build && make docker_run
- 提供Docker支持,便于部署
13. 第三方调度器
git submodule update --init --recursive
- 支持集成第三方调度器如ScheduleFlow
- 使用Git子模块管理
14. 服务器和仪表板设置
- 服务器 :参见
server/README.md - 仪表板 :参见
dashboard/README.md
15. 测试运行
- 测试框架:使用pytest
- 数据目录 :需要设置
RAPS_DATA_DIR环境变量 - 并行测试 :使用
pytest-xdist进行并行测试 - 测试分类 :
- 多分区系统测试:
-k "multi_part_sim" - 网络相关测试:
-m network
- 多分区系统测试:
属性声明
- 地图数据:来自OpenStreetMap,使用ODbL许可证
- 天气数据:来自Open-Meteo API,免费提供
关键技术要点总结
- 灵活性:支持合成工作负载和真实遥测数据回放
- 扩展性:支持多分区系统、冷却模型、网络模拟
- 性能优化:使用NPZ快照加速重复模拟
- 可视化:提供实时监控和后期绘图功能
- 生态系统:支持Docker、第三方调度器、服务器/客户端架构
- 数据多样性:支持多个超算系统的数据格式
使用建议
- 新手用户 :从
raps run开始,使用默认合成工作负载 - 研究人员:使用遥测回放进行真实数据分析
- 系统管理员:利用冷却模型和网络模拟进行系统优化
- 开发者:关注测试框架和代码贡献指南