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. 开发者:关注测试框架和代码贡献指南
相关推荐
17(无规则自律)3 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
中二病码农不会遇见C++学姐4 小时前
Linux下的.run文件
linux
予枫的编程笔记4 小时前
【Linux入门篇】摆脱权限混乱困境:Linux用户组管理+sudo提权,一步到位
linux·linux运维·后端开发·linux用户管理·linux权限配置·chmod命令·sudo配置
starfire_hit4 小时前
JAVAWEB根据前台请求获取用户IP
java·服务器·网络
一个人旅程~4 小时前
Dell n4020双系统分区步骤和linux优化操作
linux·windows·电脑
忆~遂愿4 小时前
CANN metadef 深度解析:动态形状元数据管理、图编译器接口规范与序列化执行机制
大数据·linux
予枫的编程笔记4 小时前
【Linux入门篇】Linux文件操作不用记满屏命令,掌握touch/cp/mv核心用法就够了
linux·tar·linux命令·tail·cat·linux文件管理·linux新手教程
learning-striving4 小时前
kali连不上网解决方法
linux·开发语言·网络·php·kali
云边有个稻草人4 小时前
打工人摸鱼新姿势!轻量斗地主服务器,内网穿透让同事远程联机不翻车
运维·服务器·cpolar
阿钱真强道4 小时前
12 JetLinks MQTT直连设备事件上报实战(继电器场景)
linux·服务器·网络·数据库·网络协议