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基准测试测试执行流程现有测试类型遵循统一的执行模式初始化阶段(init/目录)准备测试环境配置资源限制基准测试阶段(benchmark/目录)执行在线/离线负载测试清理阶段恢复环境收集结果扩展新资源类型的完整指南第1步定义新资源类型配置文件在config/目录下创建新的配置文件例如gpu.conf# # GPU QoS Co-deployment Test — Benchmark Parameters # # # Format: KEYVALUE (no spaces around ) # --- GPU Configuration --- GPU_DEVICE_ID0 # GPU设备ID GPU_MEMORY_LIMIT4096 # GPU内存限制(MB) GPU_COMPUTE_UNITS80 # GPU计算单元百分比 # --- Benchmark Parameters --- gpu_server_ip127.0.0.1 gpu_server_port12222 online_gpu_util30 # 在线业务GPU使用率(%) offline_gpu_util70 # 离线业务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 --modeinference --util${online_gpu_util} # 收集性能指标 docker exec $online_container \ bash -c nvidia-smi --query-gpuutilization.gpu,memory.used --formatcsv -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 --modetraining --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_LIMIT1000 # 在线业务IOPS限制 OFFLINE_IOPS_LIMIT5000 # 离线业务IOPS限制 BLKIO_WEIGHT_ONLINE500 # 在线业务权重 BLKIO_WEIGHT_OFFLINE100 # 离线业务权重**benchmark/storage/storage_run.sh**核心函数storage_run_online() { # 使用fio测试在线存储性能 docker exec $online_container \ fio --nameonline-storage-test \ --rwrandread \ --bs4k \ --iodepth32 \ --size1G \ --runtime300 \ --output-formatjson } storage_run_offline() { # 使用fio测试离线存储性能 docker exec $offline_container \ fio --nameoffline-storage-test \ --rwrandwrite \ --bs64k \ --iodepth128 \ --size10G \ --runtime300 \ --output-formatjson }最佳实践与注意事项1. 保持架构一致性遵循现有目录结构config/、init/、benchmark/使用统一的函数命名规范{resource}_init、{resource}_run、{resource}_clean复用公共函数库common/common.sh中的日志和工具函数2. 配置管理所有配置参数集中放在config/{resource}.conf中使用KEYVALUE格式避免空格提供合理的默认值和注释说明3. 错误处理在关键步骤添加错误检查和回滚机制使用log_error记录错误信息确保测试失败时能正确清理环境4. 性能指标收集定义清晰的性能指标收集格式输出结果到统一的output/目录支持JSON、CSV等结构化格式以便后续分析5. 文档维护更新README.md文档说明新资源类型的测试方法在docs/目录下添加详细的技术文档提供配置示例和故障排除指南验证与测试完成扩展后通过以下步骤验证新资源类型单元测试单独测试每个组件功能sh init/gpu/gpu_init.sh sh benchmark/gpu/gpu_run.sh集成测试验证与现有系统的集成sh start.sh -t GPU端到端测试完整执行测试流程sh start.sh -d -t ALL结果验证检查输出结果是否符合预期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),仅供参考