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. 开发者:关注测试框架和代码贡献指南
相关推荐
小白同学_C7 小时前
Lab3-page tables && MIT6.1810操作系统工程【持续更新】
linux·c/c++·操作系统os
十年磨一剑~7 小时前
Linux程序接收到sigpipe信号崩溃处理
linux
geshifei8 小时前
Sched ext回调3——select_cpu(linux 6.15.7)
linux·ebpf
yunfuuwqi8 小时前
OpenClaw✅真·喂饭级教程:2026年OpenClaw(原Moltbot)一键部署+接入飞书最佳实践
运维·服务器·网络·人工智能·飞书·京东云
代码游侠8 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
你真是饿了8 小时前
6.库制作与原理
linux·服务器
Zach_yuan9 小时前
深入浅出 JSONCpp
linux·服务器·网络·c++
马猴烧酒.10 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
北京迅为10 小时前
《【北京迅为】itop-3568开发板NPU使用手册》- 第 7章 使用RKNN-Toolkit-lite2
linux·人工智能·嵌入式·npu
Dragon~Snow10 小时前
Linux Centos9 安装 Elasticsearch
linux·elasticsearch·jenkins