ExaDigiT/RAPS

ExaDigiT/RAPS readme文件解析

项目概述

ExaDigiT's Resource Allocator and Power Simulator (RAPS) - 一个用于超算系统的资源分配和功耗模拟器。

开源地址: https://code.ornl.gov/exadigit/raps

核心功能

  1. 工作负载调度:调度合成工作负载或回放系统遥测工作负载
  2. 系统监控:在模拟期间提供系统监控
  3. 功耗估计:在指定时间间隔估计动态系统功耗
  4. 冷却模型接口:可与FMU冷却模型接口,提供CDU级功耗输入
  5. 可视化功能:内置绘图功能,可生成功耗和冷却图
  6. 可选仪表板:提供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)组织数据
  • 多路径支持:用逗号分隔多个数据路径
其他系统遥测数据:
  1. Marconi100 :从Zenodo下载job_table.parquet文件
  2. Adastra MI250 :从Zenodo下载AdastaJobsMI250_15days.parquet文件
  3. Google集群跟踪v2:使用特定格式的时间戳
  4. 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. 冷却模型

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. 遥测回放的修改选项

有四种方式修改遥测回放:

  1. --arrival:改变到达时间分布

    • prescribed(默认):按原始提交时间回放
    • poisson:按泊松分布到达
  2. --policy:改变调度策略

    • replay(默认):按原始开始时间调度
    • fcfsbackfill等:使用内部调度器
  3. --scale:改变工作负载规模

    • 用于将大系统数据回放到小系统上
  4. --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,免费提供

关键技术要点总结

  1. 灵活性:支持合成工作负载和真实遥测数据回放
  2. 扩展性:支持多分区系统、冷却模型、网络模拟
  3. 性能优化:使用NPZ快照加速重复模拟
  4. 可视化:提供实时监控和后期绘图功能
  5. 生态系统:支持Docker、第三方调度器、服务器/客户端架构
  6. 数据多样性:支持多个超算系统的数据格式

使用建议

  1. 新手用户 :从raps run开始,使用默认合成工作负载
  2. 研究人员:使用遥测回放进行真实数据分析
  3. 系统管理员:利用冷却模型和网络模拟进行系统优化
  4. 开发者:关注测试框架和代码贡献指南
相关推荐
佑白雪乐14 分钟前
<Linux基础第10集>复习前面内容
linux·运维·服务器
春日见17 分钟前
自动驾驶规划控制决策知识点扫盲
linux·运维·服务器·人工智能·机器学习·自动驾驶
暮云星影22 分钟前
四、linux系统 应用开发:UI开发环境配置概述 (三)
linux·ui·arm
迷途知返-1 小时前
服务器——那些年我踩过的坑
linux
landonVM2 小时前
Linux 上搭建 Web 服务器
linux·服务器·前端
云游云记2 小时前
nesbot/carbon 常用功能总结
linux·运维·服务器
慵懒的猫mi2 小时前
从XDG正式支持如意玲珑(Linyaps)看如意玲珑的发展与架构演进
linux·开源软件·deepin
landonVM2 小时前
Linux 下的高效压缩工具 Zstandard
linux·运维·服务器
遇见火星2 小时前
服务器运维操作命令速查手册
运维·服务器
EmbedLinX3 小时前
Linux之内存管理
linux·服务器·c语言·c++