当前位置: 首页 > news >正文

openEuler/QoS-Deployment-Test:如何扩展测试套件支持更多资源类型

openEuler/QoS-Deployment-Test:如何扩展测试套件支持更多资源类型

【免费下载链接】QoS-Deployment-TestDocker-based openEuler Online-Offline Co-scheduling Test Suite.项目地址: https://gitcode.com/openeuler/QoS-Deployment-Test

前往项目官网免费下载:https://ar.openeuler.org/ar/

想要为openEuler在线/离线混部测试套件添加对新资源类型的支持吗?本文将为您详细介绍扩展QoS-Deployment-Test测试套件的完整指南,帮助您轻松实现GPU、存储、网络带宽等更多资源类型的测试验证。🚀

项目概述与扩展价值

openEuler/QoS-Deployment-Test是一个基于Docker的在线/离线混部QoS资源隔离能力验证测试套件。它通过**"基线测试 → 直接混部 → QoS混部"**的三阶段对比方法,自动评估CPU、内存、网络、IO四种资源在混部场景下的性能干扰程度和QoS压制效果。

随着云原生技术的发展,更多资源类型需要QoS保障。扩展测试套件支持更多资源类型,可以帮助您:

  • 🔍 全面评估系统资源隔离能力
  • 📊 发现潜在的性能瓶颈和干扰问题
  • 🛠️ 验证新硬件资源的QoS机制有效性
  • 📈 为系统调优提供数据支撑

现有架构分析

在开始扩展之前,让我们先了解现有测试套件的架构设计:

核心目录结构

├── start.sh # 主入口脚本 ├── common/common.sh # 公共函数库 ├── config/ # 配置文件目录 │ ├── cpu.conf # CPU测试配置 │ ├── mem.conf # 内存测试配置 │ ├── net.conf # 网络测试配置 │ └── io.conf # IO测试配置 ├── deployment/ # Docker部署脚本 ├── init/ # 测试初始化与清理 │ ├── cpu/ # CPU初始化脚本 │ ├── mem/ # 内存初始化脚本 │ ├── net/ # 网络初始化脚本 │ └── io/ # IO初始化脚本 ├── benchmark/ # 基准测试执行 │ ├── cpu/ # CPU基准测试 │ ├── mem/ # 内存基准测试 │ ├── net/ # 网络基准测试 │ └── io/ # IO基准测试

测试执行流程

现有测试类型遵循统一的执行模式:

  1. 初始化阶段(init/目录):准备测试环境,配置资源限制
  2. 基准测试阶段(benchmark/目录):执行在线/离线负载测试
  3. 清理阶段:恢复环境,收集结果

扩展新资源类型的完整指南

第1步:定义新资源类型配置文件

config/目录下创建新的配置文件,例如gpu.conf

# ============================================================================== # GPU QoS Co-deployment Test — Benchmark Parameters # ============================================================================== # # Format: KEY=VALUE (no spaces around '=') # --- GPU Configuration --- GPU_DEVICE_ID=0 # GPU设备ID GPU_MEMORY_LIMIT=4096 # GPU内存限制(MB) GPU_COMPUTE_UNITS=80 # GPU计算单元百分比 # --- Benchmark Parameters --- gpu_server_ip=127.0.0.1 gpu_server_port=12222 online_gpu_util=30 # 在线业务GPU使用率(%) offline_gpu_util=70 # 离线业务GPU使用率(%)

第2步:创建初始化脚本

init/目录下创建对应的初始化脚本目录,例如init/gpu/

init/gpu/gpu_init.sh

#!/bin/bash gpu_init() { local log_file=$1 local config_file=$2 source "$config_file" log_info "Initializing GPU test environment" "$log_file" # 检查GPU设备 if ! command -v nvidia-smi &> /dev/null; then log_error "nvidia-smi not found. GPU test requires NVIDIA drivers." "$log_file" return 1 fi # 配置GPU QoS限制 if [[ -f /sys/fs/cgroup/gpu/gpu.qos_level ]]; then echo "-1" > /sys/fs/cgroup/gpu/gpu.qos_level log_info "GPU QoS level configured" "$log_file" fi # 配置GPU内存限制 if [[ -f /sys/fs/cgroup/gpu/gpu.memory.high ]]; then echo "${GPU_MEMORY_LIMIT}M" > /sys/fs/cgroup/gpu/gpu.memory.high log_info "GPU memory limit configured: ${GPU_MEMORY_LIMIT}MB" "$log_file" fi return 0 }

init/gpu/gpu_clean.sh

#!/bin/bash gpu_clean() { local log_file=$1 log_info "Cleaning GPU test environment" "$log_file" # 清理GPU进程 nvidia-smi --gpu-reset # 恢复GPU默认设置 if [[ -f /sys/fs/cgroup/gpu/gpu.qos_level ]]; then echo "0" > /sys/fs/cgroup/gpu/gpu.qos_level fi return 0 }

第3步:创建基准测试脚本

benchmark/目录下创建对应的基准测试脚本目录,例如benchmark/gpu/

benchmark/gpu/gpu_run.sh

#!/bin/bash gpu_run_online() { local log_file=$1 local result_file=$2 local online_container=$3 log_info "GPU ONLINE test starting" "$log_file" # 启动在线GPU负载(例如:深度学习推理) docker exec -d "$online_container" \ bash -c "python3 /app/gpu_benchmark.py --mode=inference --util=${online_gpu_util}" # 收集性能指标 docker exec "$online_container" \ bash -c "nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv -l 1" >> "$result_file" } gpu_run_offline() { local log_file=$1 local offline_container=$2 log_info "GPU OFFLINE test starting" "$log_file" # 启动离线GPU负载(例如:模型训练) docker exec -d "$offline_container" \ bash -c "python3 /app/gpu_benchmark.py --mode=training --util=${offline_gpu_util}" } gpu_run() { cur_dir=$1 run_dir=$2 gpu_conf=$3 log_file=$4 output_result=$5 online_container=$6 offline_container=$7 source "$cur_dir/common/common.sh" source "$gpu_conf" log_info "Starting GPU benchmark test" "$log_file" # 执行在线测试 gpu_run_online "$log_file" "$output_result.online" "$online_container" # 执行离线测试 gpu_run_offline "$log_file" "$offline_container" log_info "GPU benchmark completed" "$log_file" }

第4步:创建QoS配置脚本

benchmark/gpu/gpu_co-deployment_config.sh

#!/bin/bash gpu_co_deployment_config() { local log_file=$1 local online_container=$2 local offline_container=$3 log_info "Configuring GPU QoS for co-deployment" "$log_file" # 为在线容器配置高优先级GPU QoS docker update "$online_container" \ --cgroup-parent=/sys/fs/cgroup/gpu/online # 为离线容器配置低优先级GPU QoS docker update "$offline_container" \ --cgroup-parent=/sys/fs/cgroup/gpu/offline log_info "GPU QoS configuration completed" "$log_file" }

benchmark/gpu/gpu_co-deployment_unconfig.sh

#!/bin/bash gpu_co_deployment_unconfig() { local log_file=$1 local online_container=$2 local offline_container=$3 log_info "Removing GPU QoS configuration" "$log_file" # 恢复默认GPU配置 docker update "$online_container" \ --cgroup-parent="" docker update "$offline_container" \ --cgroup-parent="" log_info "GPU QoS configuration removed" "$log_file" }

第5步:修改主入口脚本

start.sh中添加对新资源类型的支持:

# 在TEST_TYPE参数处理部分添加新类型 case "$TEST_TYPE" in "ALL") test_types=("CPU" "MEM" "NET" "IO" "GPU") ;; "CPU"|"MEM"|"NET"|"IO"|"GPU") test_types=("$TEST_TYPE") ;; *) log_error "Unsupported test type: $TEST_TYPE" usage exit 1 ;; esac # 在测试执行循环中添加GPU处理 for test_type in "${test_types[@]}"; do case "$test_type" in "GPU") log_info "Starting GPU test..." # 调用GPU测试函数 gpu_test ;; # ... 其他现有测试类型 esac done

扩展示例:存储QoS测试

除了GPU,您还可以扩展支持存储QoS测试。以下是存储测试的配置示例:

config/storage.conf

# ============================================================================== # Storage QoS Co-deployment Test — Benchmark Parameters # ============================================================================== # STORAGE_DEVICE=/dev/sdb # 存储设备 STORAGE_MOUNT_POINT=/mnt/test # 挂载点 ONLINE_IOPS_LIMIT=1000 # 在线业务IOPS限制 OFFLINE_IOPS_LIMIT=5000 # 离线业务IOPS限制 BLKIO_WEIGHT_ONLINE=500 # 在线业务权重 BLKIO_WEIGHT_OFFLINE=100 # 离线业务权重

**benchmark/storage/storage_run.sh**核心函数:

storage_run_online() { # 使用fio测试在线存储性能 docker exec "$online_container" \ fio --name=online-storage-test \ --rw=randread \ --bs=4k \ --iodepth=32 \ --size=1G \ --runtime=300 \ --output-format=json } storage_run_offline() { # 使用fio测试离线存储性能 docker exec "$offline_container" \ fio --name=offline-storage-test \ --rw=randwrite \ --bs=64k \ --iodepth=128 \ --size=10G \ --runtime=300 \ --output-format=json }

最佳实践与注意事项

1. 保持架构一致性

  • 遵循现有目录结构:config/init/benchmark/
  • 使用统一的函数命名规范:{resource}_init{resource}_run{resource}_clean
  • 复用公共函数库common/common.sh中的日志和工具函数

2. 配置管理

  • 所有配置参数集中放在config/{resource}.conf
  • 使用KEY=VALUE格式,避免空格
  • 提供合理的默认值和注释说明

3. 错误处理

  • 在关键步骤添加错误检查和回滚机制
  • 使用log_error记录错误信息
  • 确保测试失败时能正确清理环境

4. 性能指标收集

  • 定义清晰的性能指标收集格式
  • 输出结果到统一的output/目录
  • 支持JSON、CSV等结构化格式以便后续分析

5. 文档维护

  • 更新README.md文档,说明新资源类型的测试方法
  • docs/目录下添加详细的技术文档
  • 提供配置示例和故障排除指南

验证与测试

完成扩展后,通过以下步骤验证新资源类型:

  1. 单元测试:单独测试每个组件功能

    sh init/gpu/gpu_init.sh sh benchmark/gpu/gpu_run.sh
  2. 集成测试:验证与现有系统的集成

    sh start.sh -t GPU
  3. 端到端测试:完整执行测试流程

    sh start.sh -d -t ALL
  4. 结果验证:检查输出结果是否符合预期

    cat output/gpu_test_result.txt

总结

扩展openEuler/QoS-Deployment-Test测试套件支持更多资源类型是一个系统化的工程,但遵循现有的架构模式和设计原则,您可以轻松实现对新资源类型的支持。通过本文提供的完整指南,您可以:

✅ 快速添加GPU、存储等新资源类型的测试支持
✅ 保持与现有架构的一致性
✅ 确保测试结果的准确性和可比性
✅ 为系统QoS能力评估提供更全面的覆盖

记住,良好的扩展性设计是测试套件长期可维护的关键。每次扩展都应考虑向后兼容性和代码复用,让您的测试套件随着技术发展而不断演进!🎯

现在就开始扩展您的测试套件,为openEuler系统的资源隔离能力提供更全面的验证吧!

【免费下载链接】QoS-Deployment-TestDocker-based openEuler Online-Offline Co-scheduling Test Suite.项目地址: https://gitcode.com/openeuler/QoS-Deployment-Test

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1127967/

相关文章:

  • EhViewer完整指南:3个关键技巧打造完美漫画阅读体验
  • 如何完整备份QQ空间说说:GetQzonehistory数据导出终极指南
  • 三分钟搞定:利用amlogic-s9xxx-armbian项目将闲置安卓盒子变身高性能服务器完整教程
  • 如何用开源工具实现本地千万级图片秒级搜索:ImageSearch完整指南
  • 基于YOLOv8的脑肿瘤检测系统开发与实践
  • Python实现工业气缸软件模拟器:从状态机到OPC UA集成
  • 改进YOLOv8用于船舶检测:海事监控场景下的模型优化与工程实践
  • 京东开源JoyAI-VL-Interaction:从零部署实时视频交互AI全栈指南
  • OpenCV计算机视觉实战:从基础到高级应用
  • 从零构建本地化课堂人脸分析系统:技术选型、实现与部署指南
  • 基于YOLO26的智能火焰检测系统开发实战
  • 阴阳师自动化脚本的技术架构演进与模块化设计范式
  • 三轴桁架机械手PLC脉冲控制与伺服系统设计
  • 基于YOLOv10的固体废物智能识别系统开发实战
  • 深度学习行人重识别:YOLOv5与OSNet结合的开源方案
  • 从零到一:使用ResNet-18在CIFAR-10上构建你的首个图像分类器
  • Codex AI平台:零基础部署与15种AI功能实战指南
  • 基于改进ResNet的智能垃圾分类系统设计与优化
  • 基于阿里云视觉智能平台构建课堂人脸分析系统:从API调用到工程实践
  • C#集成YOLOv8目标检测:基于ONNX Runtime的工业视觉部署实战
  • GPT-4与ChatGPT应用开发:从API调用到项目实战的极简指南
  • YOLO26与C#结合实现高效目标检测
  • YOLOV8注意力机制实战:CBAM模块的两种集成策略与性能对比
  • YOLO目标检测模块化重构与性能优化实践
  • 京东JoyAI-VL-Interaction全栈开源:实时视频交互AI部署与API集成指南
  • 大模型API实战:从temperature调优到函数调用,构建智能应用全指南
  • MATLAB实现DQN算法在迷宫路径规划中的应用
  • 基于OpenCV的银行卡识别技术实现与优化
  • YOLOv8+PyQt5电力巡检异常检测系统开发实战
  • OpenCV与YOLO实战:快速搭建计算机视觉毕业设计项目