SIT-Power-CycleTest — 服务器 SIT 电源循环测试工具使用说明书
1. 概述
SIT-Power-CycleTest 是 Inventec TA Team 开发的服务器 SIT(System Integration Testing)电源循环测试工具,版本 Rev: 1.24.0。
核心功能
在服务器 SIT 测试过程中,自动执行长时间电源循环(AC/DC/Reboot/Reset)测试,并在每轮循环中完成以下任务:
- 系统硬件检查:FRU、CPU、内存、SMBIOS、MAC 地址等系统信息与首轮基线比对
- PCIe 设备检查:lspci 设备枚举、LnkCap/LnkSta 速率/带宽比对、UESta/CESta 异常寄存器解析
- 存储设备检查:HDD/NVMe/Aliflash SSD 序列号、SMART 日志、分区信息、磁盘速率比对
- 网络设备检查:NIC 驱动版本、MAC、厂商、链路速度比对
- SDR 传感器监控:每 5 秒轮询 BMC SDR,检测非
ok/ns状态传感器 - SEL/dmesg 日志过滤:基于黑白名单的日志筛查,支持通用和 ByteDance 专项规则
- FIO I/O 压力测试:支持每轮循环中运行 FIO 磁盘读写压力(可选)
- 客户专项检查:ByteDance 部件压力测试、Ali MOC/MOC 日志收集/AVMS 分区校验、Tencent BIOS ping/cyclelog 收集
- 报告输出:所有检查结果分类写入
reports/目录,含汇总失败日志
电源操作模式
| 模式 | 标志 | 动作 | 说明 |
|---|---|---|---|
| OS Reboot | --reboot |
reboot -f |
操作系统软重启 |
| OS Reset | --reset |
ipmitool raw 0 2 3 |
BMC 硬件复位 |
| DC Cycle | --dccycle |
ipmitool raw 0 2 2 |
DC 电源循环(断电→上电) |
| AC Cycle | --accycle |
ipmitool power off |
AC 电源循环(需配合 PDU 治具) |
| Dual Mode | --reboot --dccycle |
前 N 圈 Reboot + 后 N 圈 DC | 组合模式 |
| Power Off | --tc-poweroff |
安全关机 | Tencent BIOS 安全下电测试 |
测试模式
| 模式 | 标志 | 说明 |
|---|---|---|
| System Test | --system |
仅系统硬件检查(无 I/O 压力) |
| FIO Test | --fio |
在每轮循环中运行 FIO I/O 压力测试 |
| TC-FIO | --tc-fio |
Tencent 专项 FIO(4k/128k 模式 + NVMe 命令压力) |
支持的客户项目
| 客户 | 状态 | 专项功能 |
|---|---|---|
| Baidu | 支持 | OCSSD Reboot/DC, 存储 Reboot/DC, ipmitool 升级 |
| Ali | 支持 | AVMS 分区校验, Aliflash SSD, MOC 卡, MOC 重启 CN 实例, TPCM, 远程 DC |
| Tencent | 支持 | TC-FIO, BIOS ping, cyclelog, SDR 延迟, 安全下电 |
| JD | 支持 | — |
| ByteDance | 支持 | 部件压测 (CPU/Mem/Storage/Network/BMC/GPU), HDD 识别/NIC Link/Lava Expander 检查 |
支持的操作系统
- RHEL/CentOS 6 / 7 / 8
- Debian 9 / 10
技术栈
- 语言:Bash (主流程控制 + 硬件检查), Python 2.7+/3.x (PCIe 解析 + 日志过滤)
- 依赖:ipmitool (BMC 通信), fio (I/O 压力), smartctl/nvme (存储), lspci (PCIe 枚举)
- 架构:两脚本协同 (PowerCycleTest.sh 初始化 + cycle_reboot.sh 循环执行)
本地下载📁 本地下载
提示:点击按钮将打开网络文件夹,点击即可下载
| 文件 | 适用系统 | 版本 |
|---|---|---|
SIT-Power-CycleTest-v1.24.0.zip |
RHEL/CentOS 6/7/8, Debian 9/10 | v1.24.0 |
2. 目录结构
SIT-Power-CycleTest-v1.24.0/
├── README.md # 项目说明文档
├── hosts # Ansible 主机清单模板
├── .gitlab-ci.yml # GitLab CI/CD 流水线配置
├── .gitignore # Git 忽略规则
├── BD_args.json # ByteDance 压测参数配置
│
├── PowerCycleTest.sh # ★ 主入口脚本(初始化 + 首轮检查 + 环境准备)
├── cycle_reboot.sh # ★ 循环执行脚本(每轮开机自动运行)
├── stop_osreboot.sh # OS Reboot 模式停止脚本(自动生成)
├── stop_accycle.sh # AC Cycle 模式停止脚本(自动生成)
│
├── lib/ # 库模块目录
│ ├── arguments.sh # CLI 参数解析与验证
│ ├── common_function.sh # 通用函数(日志/帮助/UUID/自动登录)
│ ├── global_env_set.sh # 全局默认变量初始化
│ ├── helpers.sh # Shell 颜色代码/显示辅助/进度条
│ ├── colors.py # Python ANSI 终端颜色类
│ ├── progressbar.py # Python 进度条(含线程支持)
│ ├── helpers.py # Python 工具函数(文件 I/O/版本解析/ANSI 清除)
│ │
│ ├── reboot_action.sh # 电源动作执行(reboot/dccycle/reset/accycle/dual)
│ ├── remote_control.sh # 远程 SSH 通过 Client + BMC 执行 DC/reset
│ ├── bootloader.sh # rc-local 服务配置/引导加载器
│ ├── gene_stop_script.sh # 停止脚本与 fail_check 脚本生成
│ │
│ ├── system_check.sh # 系统硬件检查(FRU/CPU/内存/SMBIOS)
│ ├── sdr_sensor.sh # SDR 传感器状态检查/功耗监控
│ ├── lspci_device.sh # PCIe 设备检查(速率/带宽比对/设备丢失检测)
│ ├── lspci_parser.py # Python PCIe UESta/CESta 异常寄存器解析器
│ ├── netcard.sh # NIC 驱动版本/MAC/厂商/链路速度检查
│ │
│ ├── disk.sh # HDD/NVMe/Aliflash SSD SN/SMART/分区/速率检查
│ ├── fio.sh # FIO I/O 压力测试配置与执行
│ ├── raid.sh # RAID 卡 smart 日志收集与比对
│ ├── hba.sh # HBA 卡信息收集/Expander phy 检查/盘 smart
│ ├── expander.sh # ByteDance Lava Expander phy error 计数器检查
│ │
│ ├── log_check.sh # SEL/dmesg 黑白名单日志过滤
│ ├── black_white_list.py # Python 黑白名单过滤引擎
│ ├── bw_list.json # ★ 黑白名单关键字库(SEL/dmesg common + bytedance)
│ ├── fail_check.sh # 循环后故障检测脚本(自动生成)
│ │
│ ├── bios.sh # BIOS NUMA/HT 切换 (Ali DC)
│ ├── avms_test.sh # Ali AVMS 磁盘分区创建/MD5 校验
│ ├── Moc.sh # Ali MOC 卡 CN 实例启动/状态检查
│ ├── MocLogCollect.sh # MOC 子系统日志收集/比对
│ ├── bytedance_log_check.sh # ByteDance 专项日志检查(SEL/dmesg/NIC/HDD)
│ ├── smart_nic.sh # SmartNIC 远程 SSH 健康检查与日志收集
│ ├── remote_info_check.sh # SmartNIC 远程 NIC/lspci 信息收集
│ ├── set_environment.sh # 动态生成的环境变量文件(传递给 cycle_reboot.sh)
│ │
│ └── Bytedance_Stress/ # ByteDance 部件压力测试
│ ├── component_stress.sh # 部件级压力测试(CPU/内存/存储/网络/BMC/GPU)
│ └── stress_analy.py # Python 压力测试结果分析器
│
├── reports/ # 输出目录(所有测试结果)
│ ├── .initial # 初始化标记文件
│ ├── device_log/ # PCI 设备基线及每轮日志
│ ├── disk_log/ # 磁盘 SN/SMART/分区/速率日志
│ ├── fail_log/ # 失败汇总日志(summary_fail.log, pcie_fail.log)
│ ├── sdr_log/ # SDR 传感器基线与每轮日志
│ ├── system_log/ # FRU/CPU/内存/SMBIOS/MAC 日志
│ ├── sel_log/ # SEL 日志收集
│ ├── dmesg_log/ # Dmesg 日志收集
│ ├── nic_log/ # NIC 驱动/速率/厂商日志
│ ├── fio_log/ # FIO 每轮输出
│ ├── expander/ # Expander phy error 计数器(Lava CSV)
│ ├── message_log/ # 系统 message 收集 tarball
│ ├── tc_bios/ # Tencent BIOS ping/cyclelog 结果
│ └── Bytedance_Stress_log/ # ByteDance 压力测试结果
│
├── tools/ # 外部工具集
│ ├── messageCollect/ # 综合系统日志收集(CPU/Mem/PCI/NIC/RAID/HBA/BIOS/BMC)
│ │ ├── messageCollect.sh
│ │ └── tool/ # 工具子目录
│ │ ├── hddtool/ # HDD 厂商工具 (hugo/SeaDragon/Toshiba)
│ │ ├── ipmitool/ # ipmitool RPM 包
│ │ ├── lsitool/ # LSI 工具 (g3Xutil/lsiutil/sas3ircu/storcli)
│ │ ├── nvmetool/ # NVMe 工具 (issdcm/nvme-cli)
│ │ ├── scelnx/ # AMI SCELNX BIOS 配置工具
│ │ └── sg_util/ # sg3_utils SES 页面收集
│ ├── cyclelog # Tencent BIOS cyclelog 二进制工具
│ ├── logstress # TC logstress 二进制工具
│ ├── ipmitool.dat # Ali OEM ipmitool 变体
│ ├── lsiutil.x86_64 # LSI HBA/Expander 诊断工具
│ ├── sshpass-1.06.tar.gz # sshpass 源码(远程 SSH 操作)
│ ├── iohup-bootmcn.sh # MOC CN 状态检查
│ ├── iohup-bootmcn-helper-type1.sh # MOC CN 重启辅助 (type1)
│ └── iohup-bootmcn-helper-type4.sh # MOC CN 重启辅助 (type4)
│
└── tmp/ # 临时文件目录
├── count.log # 当前循环次数
└── uuid # 测试 UUID 标识
3. SIT 电源循环测试工作流程
两脚本架构
工具采用两脚本协同架构,通过 rc-local 系统服务实现开机自动循环:
- PowerCycleTest.sh(主入口):仅在测试启动时运行一次,负责参数解析、环境准备、首轮基线检查、脚本生成和引导加载器注册
- cycle_reboot.sh(循环脚本):通过 rc.local 在每次系统开机后自动执行,执行所有硬件检查,然后触发下一次电源动作
┌─────────────────────────────────────────────────────────────────────┐
│ SIT 电源循环测试完整流程 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ [阶段 1: 初始化 — PowerCycleTest.sh] │ │
│ │ │ │
│ │ 1. 参数解析 → 2. 环境校验 → 3. 路径创建 → 4. IPMI 初始化 │ │
│ │ 5. SEL/var/crash 清除 → 6. rc-local 服务配置 │ │
│ │ 7. 自动登录配置 → 8. 交互式输入(延迟时间/错误处理策略) │ │
│ │ 9. 首轮基线检查(FRU/PCIe/SDR/磁盘/NIC/RAID/HBA) │ │
│ │ 10. 生成运行时脚本 → 11. 注册引导加载器 → 12. 执行首次电源动作 │ │
│ └──────────────────────────┬──────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ [阶段 2: 循环执行 — cycle_reboot.sh] ← 每轮开机自动运行 │ │
│ │ │ │
│ │ 开机 → rc.local 触发 cycle_reboot.sh │ │
│ │ │ │ │
│ │ ├─ 1. 循环计数 +1 │ │
│ │ ├─ 2. SDR 传感器状态检查(与首轮基线比对) │ │
│ │ ├─ 3. ByteDance/Tencent/Ali 客户专项检查 │ │
│ │ ├─ 4. SEL 日志黑白名单过滤 │ │
│ │ ├─ 5. FRU/CPU/内存/SMBIOS 系统检查(与首轮基线比对) │ │
│ │ ├─ 6. PCIe 设备检查(设备丢失/速率/带宽/寄存器) │ │
│ │ ├─ 7. HBA/Expander/RAID 存储检查 │ │
│ │ ├─ 8. 磁盘 SN/SMART/分区/速率检查(与首轮基线比对) │ │
│ │ ├─ 9. NIC 驱动/厂商/速率检查 │ │
│ │ ├─ 10. SmartNIC 远程检查 │ │
│ │ ├─ 11. dmesg 日志黑白名单过滤 │ │
│ │ ├─ 12. FIO 启动(如启用)→ MOC 检查 │ │
│ │ ├─ 13. 记录本轮耗时 │ │
│ │ └─ 14. 执行电源动作 → 系统重启/断电 │ │
│ │ │ │ │
│ │ └─ [未达目标圈数] → 返回步骤 1 │ │
│ │ └─ [已达目标圈数] → 退出循环,执行停止脚本 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ [阶段 3: 停止] │ │
│ │ │ │
│ │ stop_*.sh → 清除 rc.local 条目 → 终止测试进程 (fio/iostat) │ │
│ │ → 恢复 rc-local 服务状态 → 测试结束 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
阶段 1: 初始化 — PowerCycleTest.sh
PowerCycleTest.sh 在测试启动时运行一次,按以下顺序执行:
- 加载所有库模块(26 个
lib/.sh脚本),使用chmod +x lib/确保可执行权限 - 解析和校验命令行参数(
arguments_parse→check_args_env) - 创建日志目录结构(
file_path):在reports/下创建所有子目录 - 准备循环环境(
pre_cycles_env):初始化循环计数器、生成 UUID - Tencent BIOS ping(
tc_bios_ping):如指定--tc_ping - 清除测试环境:启动 IPMI 服务(
init_ipmi)、清除 SEL(clearenv) - 配置 rc-local 服务(
configBootload):确保 rc-local 服务正常运行 - 配置自动登录(
auto_login):如指定--auto-login,配置 root 自动登录 - 交互式输入(
manual_keyin):提示 TE 输入操作延迟时间(0-10 分钟)和错误处理策略 - 首轮基线检查(详见 4.3)
- 生成运行时脚本(详见 4.4)
- 注册引导加载器(详见 4.5)
- 执行首次电源动作(
doing_reboot)
阶段 2: 循环执行 — cycle_reboot.sh
cycle_reboot.sh 通过 rc.local 在每次开机后自动运行,按以下顺序执行:
- 加载所有库模块 +
set_environment.sh(获取首轮传递的全局变量) - 循环计数 +1(
cycle_num_count):读写tmp/count.log - SDR 传感器检查(
sdr_check_stat):与首轮基线比对,检测异常传感器 - 客户专项检查(按客户标志条件执行)
- SEL 日志黑白名单过滤(
BD_log_check_all sel) - 系统硬件检查(
sys_test):FRU/CPU/内存/SMBIOS 与首轮基线比对 - PCIe 设备检查(
pci_device_check) - 存储检查:HBA/Expander/RAID/磁盘
- 网络检查(
FuncCheckNic)+ SmartNIC(smart_NIC) - dmesg 日志黑白名单过滤(
BD_log_check_all dmesg) - FIO 检查(
check_fio):如--fio启用,启动后台 FIO 再执行电源动作 - MOC 检查(
chk_moc_args) - 记录循环耗时(
sum_reboot_time) - 执行电源动作(
doing_reboot)
阶段 3: 停止机制
测试可通过以下方式停止:
- 自动停止:达到目标圈数后,脚本自动执行停止脚本
- 手动停止:在脚本目录下执行
bash stop_*.sh(如stop_accycle.sh、stop_osreboot.sh)
停止脚本自动完成: - 从 rc.local 中移除 cycle_reboot.sh 条目 - 终止运行中的 fio/iostat 等测试进程 - 恢复 rc-local 服务状态 - 恢复自动登录配置
4. 主入口 — PowerCycleTest.sh
文件位置:PowerCycleTest.sh
这是整个工具的入口脚本,将 26 个库模块加载到当前 Shell 环境中,按顺序执行初始化、首轮基线检查、脚本生成和引导加载器注册。
4.1 参数解析
CLI 参数由 lib/arguments.sh 中的 arguments_parse() 函数处理。完整的参数列表参见 第 10 节 — 使用示例。
关键约束(check_args_env 执行):
- 必须指定
--fio或--system之一 --fio模式必须同时指定-d/--disklist--fault(Ali OEM SEL 检查)必须与--system同时使用--chk-phy(Expander phy 检查)必须与--fio同时使用- RAID 测试必须与
--fio同时使用 - AVMS 测试必须与
--fio同时使用 - Aliflash 用户态模式不能与 AVMS 同时使用
4.2 环境准备
| 步骤 | 函数 | 说明 |
|---|---|---|
| IPMI 初始化 | init_ipmi |
启动 ipmi 服务 |
| 环境清除 | clearenv |
清除 SEL、清除 /var/crash |
| rc-local 配置 | configBootload |
配置 rc-local 服务为开机自启动 |
| 自动登录 | auto_login |
配置 root tty 自动登录(--auto-login) |
| 交互输入 | manual_keyin |
提示 TE 输入:操作前延迟(1-10 分钟)、错误后是否继续 |
| Tencent BIOS ping | tc_bios_ping |
TC BIOS 内网连通性测试(--tc_ping) |
4.3 第一轮基线检查
首轮(cycle 0)执行所有硬件检查并保存基线数据,后续每轮与基线比对:
| 检查项 | 函数 | 基线内容 |
|---|---|---|
| AVMS 分区 | avme_test |
Ali AVMS 磁盘分区创建 |
| 黑盒检查 | blackbox_check |
Ali blackbox 状态检查 |
| SDR 传感器 | sdr_check_stat + sdr_loop_monitor |
SDR 传感器基线(后台 5 秒循环监控) |
| 系统硬件 | sys_test |
FRU 信息/CPU 型号数量/内存容量 SN/SMBIOS |
| PCIe 设备 | pci_device_check |
lspci 设备列表/LnkCap/LnkSta 速率带宽 |
| RAID | RAID_check + RAID_disk_check |
RAID 卡信息/磁盘 smart 日志 |
| 磁盘 | disk_check |
HDD/NVMe/Aliflash SSD SN/SMART/分区 |
| HBA | HBA_check + exp_check_process |
HBA 卡信息/Expander phy 错误计数器 |
| 用户态 MD5 | userspace_md5chk "old" |
Aliflash 用户态数据 MD5 基线 |
| 网络 | FuncCheckNic |
NIC 驱动版本/MAC/厂商/链路速度 |
| SmartNIC | smart_NIC |
SmartNIC 远程健康检查 |
4.4 运行脚本生成
初始化阶段自动生成三个运行时脚本:
| 脚本 | 生成函数 | 用途 |
|---|---|---|
stop_ |
gene_stop_script |
停止脚本:清除 rc.local 条目、终止 fio/iostat、恢复自动登录 |
lib/fail_check.sh |
gene_fail_chk |
故障检测脚本:检查 summary_fail.log 是否存在 |
lib/set_environment.sh |
gene_set_environment |
环境变量传递文件:将首轮所有全局变量写入,供 cycle_reboot.sh 加载 |
4.5 引导加载器注册
init_bootloader 函数将 cycle_reboot.sh 注册到系统引导序列中:
- 默认模式(rc.local):将
bash追加到/cycle_reboot.sh /etc/rc.d/rc.local - 自动登录模式(
--auto-login):将执行命令写入.bashrc,通过 root 自动登录触发
5. 循环脚本 — cycle_reboot.sh
文件位置:cycle_reboot.sh
5.1 开机自动启动
cycle_reboot.sh 不直接由用户执行,而是通过以下机制在系统开机后自动触发:
- rc-local 服务:Linux 系统的 rc-local 服务在启动完成时执行
/etc/rc.d/rc.local - 注册条目:
init_bootloader将bash写入 rc.local/cycle_reboot.sh - 无限循环:每次电源动作后系统重启 → rc.local 触发 → 检查通过 → 再次电源动作 → ...
5.2 循环计数器管理
循环计数器通过 tmp/count.log 文件管理:
function cycle_num_count()
{
if [ -f "$tmp_log_path/count.log" ]; then
cycle_num=$(cat $tmp_log_path/count.log)
cycle_num=$(($cycle_num + 1))
else
cycle_num=0
fi
echo $cycle_num > $tmp_log_path/count.log
}
- 首轮
cycle_num = 0 - 每轮开机后
cycle_num + 1 - 当
cycle_num >= CYCLES(目标圈数),执行停止脚本
5.3 硬件检查序列
cycle_reboot.sh 在第 2 轮及以后执行的检查与首轮基线进行比对:
开机
│
├─ SDR 传感器状态(与 cycle 0 基线比对,检测非 ok/ns 传感器)
├─ ByteDance HDD 识别时间检测(--bytedance-HDD)
├─ ByteDance 部件压测(--bytedance):component_stress.sh
├─ Tencent BIOS ping(--tc_ping)+ pclog 收集
├─ Ali blackbox 检查 + OEM SEL 检查
├─ SEL 日志黑白名单过滤(bw_list.json)
├─ SDR 后台循环监控启动
│
├─ 系统检查(sys_test):
│ ├─ FRU 信息比对
│ ├─ CPU 型号/数量比对
│ ├─ 内存容量/序列号比对
│ ├─ SMBIOS 信息比对
│ └─ MAC 地址比对
│
├─ PCIe 设备检查(pci_device_check):
│ ├─ lspci 设备列表比对(检测丢失设备)
│ ├─ LnkCap/LnkSta 速率/带宽比对
│ └─ UESta/CESta 异常寄存器解析(lspci_parser.py)
│
├─ HBA 检查 + Expander phy 错误计数器
├─ RAID 卡信息 + RAID 磁盘 smart 日志比对
├─ 磁盘检查(disk_check):
│ ├─ 分区信息比对
│ ├─ SN 序列号比对
│ ├─ SMART 日志比对
│ └─ 磁盘速率检查
│
├─ NIC 检查(FuncCheckNic):驱动版本/MAC/厂商/链路速度比对
├─ SmartNIC 远程检查(--smartnic)
├─ dmesg 日志黑白名单过滤
├─ FIO 检查(--fio):启动后台 FIO 后执行电源动作
└─ MOC 检查(--moc-rpm):CN 实例状态检查
5.4 电源动作执行
doing_reboot() 函数在 lib/reboot_action.sh 中定义,根据 START_BASE 变量选择电源动作:
[cycle_num >= CYCLES]
→ 执行停止脚本,测试结束
[cycle_num < CYCLES]:
├─ Reboot 模式 → reboot -f(AVMS 模式) / reboot(普通模式)
├─ Reset 模式 → ipmitool raw 0 2 3
├─ DC Cycle 模式 → ipmitool raw 0 2 2(或远程 remote_dccycle)
├─ AC Cycle 模式 → ipmitool power off(ByteDance)/ 空动作(由 PDU 控制上电)
├─ Power Off 模式 → poweroff(Tencent 安全下电)
├─ Dual 模式(前半)→ Reboot/Reset 动作
└─ Dual 模式(后半)→ DC Cycle 动作
延迟机制:每次电源动作前,通过 on_reboot_delay 等待 Reboot_Delay 秒,确保: - FIO 有足够时间运行 - 系统日志稳定 - ByteDance NIC Link Up 检测时间窗口
6. 库模块 — lib/
6.1 核心模块
arguments.sh — 参数解析与验证
文件位置:lib/arguments.sh
三个核心函数:
| 函数 | 功能 |
|---|---|
arguments_parse |
解析 ~40 个 CLI 参数,设置对应全局变量 |
check_argument |
验证参数组合合法性(互斥/共存规则) |
check_execute_mode |
检测电源模式组合,设置 SAVEDMODE 和 START_BASE |
check_env |
检查外部工具可用性(fio/smartctl/nvme/MegaCLI/ipmitool.dat 等) |
电源模式检测逻辑:
| 条件 | SAVEDMODE | START_BASE |
|---|---|---|
--reboot 单独 |
OSReboot |
osreboot |
--reset 单独 |
OSReset |
osreset |
--dccycle 单独 |
DCCycle |
dccycle |
--accycle 单独 |
ACCycle |
accycle |
--reboot --dccycle |
OSReboot_DCCycle |
osreboot_dccycle |
--reset --dccycle |
OSReset_DCCycle |
osreset_dccycle |
--tc-poweroff |
Poweroff |
poweroff |
common_function.sh — 通用工具函数
| 函数 | 功能 |
|---|---|
Usage |
打印完整帮助信息 |
split_line |
在日志中写入分隔线 |
idle |
带倒计时的空闲等待 |
cycle_num_count |
循环计数器管理 |
auto_login |
配置 root 自动登录(tty1-tty6) |
loginRestore |
恢复自动登录配置 |
uuid_gen |
生成测试 UUID 标识 |
global_env_set.sh — 全局默认变量
定义所有测试相关的全局默认变量,包括:
- 循环参数:
CYCLES、cycle_num、Time_Limit、Reboot_Delay - 客户标志:
BYTEDANCE、BYTEDANCE_HDD、BYTEDANCE_NIC、BYTEDANCE_LAVA - 测试模式:
run_fio_mode、chk_sys_mode、avms_test、tc_fio - 路径变量:所有
reports/子目录路径 - 工具路径:fio、smartctl、nvme、ipmitool 等
helpers.sh — Shell 显示辅助
文件位置:lib/helpers.sh
提供 ANSI 颜色代码常量(C_RED、C_CYAN、C_PINK 等)和终端显示辅助函数。
colors.py — Python ANSI 颜色类
文件位置:lib/colors.py
与 helpers.sh 对应的 Python 版 ANSI 颜色类,用于 Python 脚本的彩色终端输出。
progressbar.py — Python 进度条
文件位置:lib/progressbar.py
可配置的终端进度条组件,支持线程模式,用于长时间运行任务的进度显示。
6.2 电源控制模块
reboot_action.sh — ★ 电源动作执行
文件位置:lib/reboot_action.sh
核心电源动作执行模块:
| 函数 | 功能 |
|---|---|
sum_reboot_time |
计算每轮开机耗时,与 Time_Limit 比较,超时则告警 |
clr_ssh_session |
执行 DC Cycle 前清除所有 SSH 会话 |
on_reboot_delay |
电源动作前延迟等待(FIO 运行/日志稳定/NIC Link Up) |
on_dccycle |
DC Cycle 动作(本地 ipmitool 或远程 client) |
on_reset |
硬件 Reset 动作 |
on_dual_mode |
双模式:前 N 圈第一种动作 + 后 N 圈 DC Cycle |
doing_reboot |
★ 主分发函数:根据 START_BASE 分发到对应动作 |
check_before_power |
电源动作前最后检查(远程结果拉取/MD5 校验) |
reboot_action |
★ 底层动作执行:判断圈数 → 执行停止或执行电源命令 |
AC Cycle 特殊说明:
AC Cycle 模式下,脚本通过 ipmitool power off 关闭 SUT,但重新上电由外部 PDU 治具完成。需要同时在 AC Client 上运行 SIT-Cycle-ACTest 脚本:
# SUT 上运行:
$ bash PowerCycleTest.sh -d "/dev/sdb /dev/sdc" -c 100 --fio --accycle
# AC Client 上运行:
$ cd SIT-Cycle-ACTest/
$ bash run.sh
remote_control.sh — 远程控制
提供通过远程 SSH Client 对 SUT 进行 DC Cycle 的能力(Ali AVMS BMC 带外掉电测试场景):
remote_dccycle:SSH 到 Client,通过 BMC ipmitool 执行 DC Cycle(1-60 秒随机掉电)remote_reset:SSH 到 Client,通过 BMC ipmitool 执行 Reset- 需要指定 SSH 和 BMC 连接参数(
--ssh-host/user/pass+--bmc-host/user/pass/intf)
bootloader.sh — 引导加载器
文件位置:lib/bootloader.sh
| 函数 | 功能 |
|---|---|
configBootload |
检测并启动 rc-local 服务(RHEL 6/7/8 + Debian 9/10) |
init_bootloader |
将 cycle_reboot.sh 注册到 rc.local(或 .bashrc) |
clear_bootloader |
从 rc.local 中清除 cycle_reboot.sh 条目 |
gene_stop_script.sh — 脚本生成器
| 函数 | 功能 |
|---|---|
gene_stop_script |
生成停止脚本(stop_osreboot.sh / stop_accycle.sh) |
gene_fail_chk |
生成故障检测脚本(lib/fail_check.sh) |
gene_set_environment |
生成环境变量文件(lib/set_environment.sh):将所有全局变量写入文件,供 cycle_reboot.sh 加载 |
6.3 系统检查模块
system_check.sh — 系统硬件检查
文件位置:lib/system_check.sh
sys_test() 函数执行以下检查:
| 检查项 | 命令 | 比对方式 |
|---|---|---|
| FRU 信息 | ipmitool fru print 0 |
与 cycle 0 的 fru_info_full.log 比对 |
| CPU 信息 | lscpu /proc/cpuinfo |
型号、核心数、频率比对 |
| 内存信息 | dmidecode -t memory |
容量、序列号、型号比对 |
| SMBIOS 信息 | dmidecode -t 0,1,2,3 |
UUID、厂商、版本比对 |
| MAC 地址 | ip link |
与 cycle 0 的 sut_conf.log 比对 |
sdr_sensor.sh — SDR 传感器监控
文件位置:lib/sdr_sensor.sh
| 函数 | 功能 |
|---|---|
sdr_check_stat |
读取 ipmitool sdr elist,过滤状态非 ok/ns 的传感器 |
sdr_loop_monitor |
后台进程,每 5 秒轮询 SDR 传感器状态和功耗,检测异常值 |
注意:Tencent 机器需加 --tc-delay(分钟),否则可能无法抓取 SDR 温度数据。
lspci_device.sh — PCIe 设备检查
文件位置:lib/lspci_device.sh
pci_device_check() 函数执行以下检查:
- 设备列表比对:与 cycle 0 的 lspci 输出比对,检测丢失设备
- LnkCap/LnkSta 速率带宽比对:比较所有 PCIe 设备的协商速率和带宽
- 异常寄存器解析:调用
lspci_parser.py解析 UESta/CESta 寄存器
lspci_parser.py — PCIe 寄存器解析器
文件位置:lib/lspci_parser.py
Python 脚本,解析 lspci -vvv 输出中每个 PCIe 设备的 UESta/UEMsk 和 CESta/CEMsk 寄存器,三步算法:
Step 1: 比对 UESta↔UEMsk 和 CESta↔CEMsk 寄存器位
若 Status=+ 且 Mask=- → 进入 Step 2
Step 2: 判断错误类型
若是 AdvNonFatalErr 或 NonFatalErr → 进入 Step 3
否则 → 直接报异常
Step 3: UnSupReq 检查
若 UESta 中 UnSupReq=- → 加报 UnSupReq 异常
否则 → 忽略(预期行为)
netcard.sh — 网络设备检查
文件位置:lib/netcard.sh
FuncCheckNic() 检查所有网卡的驱动版本、MAC 地址、厂商、链路速度,与 cycle 0 基线比对。
6.4 存储检查模块
disk.sh — 磁盘检查
文件位置:lib/disk.sh
disk_check() 函数:
| 检查项 | 比对方式 |
|---|---|
| 分区信息 | 与 cycle 0 的 partitions_full.log 比对 |
| SN 序列号 | HDD/NVMe/Aliflash SSD 序列号与基线比对 |
| SMART 日志 | smartctl -a 输出与基线比对 |
| 磁盘速率 | hdparm -t 或 aocnvme 速率检查 |
fio.sh — FIO I/O 压力测试
文件位置:lib/fio.sh
check_fio() 函数:在每轮电源动作前启动后台 FIO I/O 压力测试。
默认 FIO 参数:
- 固定参数(不可修改):
--end_fsync=0 --group_reporting --direct=1 --ioengine=libaio --time_based
--invalidate=1 --norandommap --randrepeat=0 --exitall --size=100%
- 可变参数(可通过
-fio-args修改):
--readwrite=randrw --rwmixread=70 --bs=4k --numjobs=1 --runtime=1200s
TC-FIO 模式(--tc-fio)额外使用 4k/128k 混合模式 + NVMe 命令压力测试。
raid.sh — RAID 卡检查
文件位置:lib/raid.sh
RAID_check:RAID 卡信息检查(使用 MegaCLI)RAID_disk_check:RAID 模式下磁盘 smart 日志收集与比对(使用 storcli64)
hba.sh — HBA 卡检查
文件位置:lib/hba.sh
HBA_check() 收集 HBA 卡信息,检查 Expander 连接的磁盘。
expander.sh — Expander 检查
文件位置:lib/expander.sh
exp_check_process() 收集 Expander phy error 计数器(ByteDance Lava 项目),生成 CSV 格式汇总报告(reports/expander/*.csv)。
6.5 日志过滤模块
log_check.sh — SEL/dmesg 日志过滤
文件位置:lib/log_check.sh
BD_log_check_all 函数:调用 black_white_list.py 对 SEL 或 dmesg 日志执行黑白名单过滤。
black_white_list.py — 黑白名单过滤引擎
Python 脚本,读取 bw_list.json 中的黑白名单规则,对日志文件逐行匹配:
对每行日志:
├─ 遍历 black_ls 黑名单
│ └─ 如果命中黑名单关键字
│ ├─ 检查 white_ls 白名单
│ │ ├─ 被白名单豁免 → 忽略(已知误报)
│ │ └─ 未被白名单豁免 → 标记为失败
│ └─ 无白名单规则 → 标记为失败
└─ 未命中任何黑名单 → 通过
支持 common(通用)和 bytedance(ByteDance 专项)两套过滤规则。
bw_list.json — 黑白名单关键字库
文件位置:lib/bw_list.json
SEL 黑名单(~60+ 关键字):drop、error、fail、ECC、IERR、CATERR、Thermal Trip、degraded、unknown 等
SEL 白名单(~6 条正则):unknown|0xcb、reset|cleared、lost| AC 等已知误报
Dmesg 黑名单(~50+ 关键字):machine check exception、soft lockup、pcie error、Call Trace:、FPDMA 等
Dmesg 白名单(~55+ 条目):usb 1-1.2: clear tt 1、BGRT failed to map image、Fast TSC calibration fail 等已知内核误报
fail_check.sh — 故障检测脚本
文件位置:lib/fail_check.sh(自动生成)
由 gene_fail_chk 生成,每轮循环后检查 reports/fail_log/summary_fail.log 是否存在来判断是否有故障。
6.6 客户专项模块
bios.sh — BIOS 设置修改
文件位置:lib/bios.sh
--bios 模式下,在 DC Cycle 中通过 ipmitool 切换 BIOS NUMA 和 HT 设置(Ali 项目)。
avms_test.sh — Ali AVMS 测试
文件位置:lib/avms_test.sh
avme_test:创建 AVMS 磁盘分区chk_md5sum:每轮 MD5 校验比对userspace_md5chk:Aliflash 用户态 MD5 校验
Moc.sh — Ali MOC 卡检查
文件位置:lib/Moc.sh
chk_moc_args:检查 MOC CN 实例启动状态。
MocLogCollect.sh — MOC 日志收集
文件位置:lib/MocLogCollect.sh
独立子脚本,用于 MOC 1.5 (25G) 卡测试的日志收集:
bash MocLogCollect.sh --setup:测试前环境准备bash MocLogCollect.sh --init:测试后环境恢复
日志保存路径:/root/MOC_Reports
bytedance_log_check.sh — ByteDance 专项日志检查
文件位置:lib/bytedance_log_check.sh
| 函数 | 功能 |
|---|---|
BD_disk_time_detect |
检查所有硬盘被系统识别的时间是否 < 10 分钟 |
BD_link_up_time |
检查 NIC 链路 Link Up 时间(Reboot ≤ 30s,其他 ≤ 60s) |
smart_nic.sh — SmartNIC 远程检查
文件位置:lib/smart_nic.sh
通过 SSH 连接到 SmartNIC,执行远程健康检查和日志收集。
Bytedance_Stress/ — ByteDance 部件压力测试
component_stress.sh:部件级压力测试,支持 CPU/Memory/Storage/Network/BMC/GPU 六类部件stress_analy.py:压力测试结果分析器
可独立运行进行调试(不依赖 PowerCycle 循环):
$ cd SIT-Power-CycleTest/lib/Bytedance_Stress
$ bash component_stress.sh --bytedance True --cycles 1
7. 配置文件
7.1 BD_args.json — ByteDance 压测配置
文件位置:BD_args.json
控制 ByteDance 部件压力测试的参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
run_mode |
"gpu_stress" |
压测部件:cpu_stress / memory_stress / storage_stress / iperf_stress / BMC_stress / gpu_stress |
kill_mode |
"True" |
启动前是否终止已有压测进程 |
fru_no_check |
"True" |
是否忽略 ipmitool fru 失败 |
server_ip |
"172.17.0.100" |
iperf 服务端 IP |
client_ip |
"10.99.104.251" |
iperf 客户端 IP |
pw |
"111111" |
SSH 密码 |
cpu_spc |
"60" |
CPU 压测使用率阈值 (%) |
mem_per |
"90" |
stressapptest 内存使用百分比 |
run_time |
"900" |
压测持续时间 (秒) |
interval_check |
"60" |
压测结果检查间隔 (秒) |
DC_AC_link_p |
"20" |
IP 连接检查最大等待时间 |
assumeyes |
"False" |
是否自动清除旧日志 |
pipeline_mode |
"False" |
流水线模式标志 |
error_continue |
"True" |
出错后是否继续 |
7.2 bw_list.json — 黑白名单关键字库
文件位置:lib/bw_list.json
JSON 格式,包含 common(通用)和 bytedance(ByteDance 专项)两套过滤规则,每套包含:
| 域 | 内容 |
|---|---|
SEL_b |
SEL 黑名单关键字(~60+ 条) |
SEL_w |
SEL 白名单正则(~6 条) |
DMESG_b |
Dmesg 黑名单关键字(~50+ 条) |
DMESG_w |
Dmesg 白名单模式(~55+ 条) |
[Tag]: SEL 过滤输出标记;[Dmesg]: Dmesg 过滤输出标记
7.3 global_env_set.sh — 全局默认变量
定义所有测试相关的默认变量。关键默认值:
Time_Limit = 7(开机耗时上限,分钟)Reboot_Delay = 300(电源动作前延迟,秒)disk_delay = 0(磁盘驱动就绪额外等待,分钟)- 所有客户标志默认为
False,通过 CLI 参数激活
8. 工具集 — tools/
messageCollect/ — 综合系统日志收集
messageCollect.sh 是独立的综合日志收集脚本,覆盖 CPU、内存、PCI、NIC、RAID、HBA、Expander、SES、磁盘、系统日志、BIOS、BMC、驱动版本等全面信息。收集结果打包为 tarball。
子工具目录 tools/messageCollect/tool/ 包含: - hddtool/:HDD 厂商诊断工具(hugo/SeaDragon/Toshiba tsbdrv) - ipmitool/:ipmitool RPM 包及使用说明 - lsitool/:LSI 工具集(g3Xutil、lsiutil、sas3ircu、storcli) - nvmetool/:NVMe 工具(issdcm RPM、nvme-cli 源码) - scelnx/:AMI SCELNX BIOS 配置工具(Baidu/Tencent 项目) - sg_util/:sg3_utils SES 页面收集
其他工具
| 工具 | 用途 |
|---|---|
cyclelog |
Tencent BIOS cyclelog 收集二进制工具 |
logstress |
Tencent logstress 压测工具 |
ipmitool.dat |
Ali OEM ipmitool 变体(支持扩展 OEM 命令) |
lsiutil.x86_64 |
LSI HBA/Expander 诊断工具 |
sshpass-1.06.tar.gz |
sshpass 源码(用于远程 SSH 操作的非交互密码输入) |
iohup-bootmcn.sh |
MOC CN 状态检查脚本 |
iohup-bootmcn-helper-type1.sh |
MOC CN type1 重启辅助脚本 |
iohup-bootmcn-helper-type4.sh |
MOC CN type4 重启辅助脚本 |
9. CI/CD 流水线 — .gitlab-ci.yml
文件位置:.gitlab-ci.yml
在 ipt-gitlab.ies.inventec:8081 上部署,包含五个阶段:
lintcheck → runtest → validation → release → cleanup
| 阶段 | Job | 说明 |
|---|---|---|
| 1. lintcheck | shellcheck |
Shell 脚本静态代码检查 |
| 2. runtest | runTest |
通过 Ansible 部署到 SUT 并执行 PowerCycleTest.sh |
| 3. validation | Validation |
流水线验证步骤(master/branches) |
| 4. release | Release |
Tag 创建时发送邮件通知 |
| 5. cleanup | cleanEnv |
测试环境清理 |
10. 使用示例
查看帮助
$ cd SIT-Power-CycleTest-v1.24.0/
$ bash PowerCycleTest.sh --help
基本用法
OS Reboot + 系统检查:
$ bash PowerCycleTest.sh -c 500 --reboot --system
运行 500 轮 OS 软重启,每轮执行系统硬件检查(无 I/O 压力)。
DC Cycle + 系统检查:
$ bash PowerCycleTest.sh -c 100 --dccycle --system
运行 100 轮 DC 电源循环,每轮执行系统硬件检查。
FIO I/O 压力模式
OS Reboot + FIO:
$ bash PowerCycleTest.sh -d "/dev/sdb /dev/sdc" -c 100 --fio --reboot
对 /dev/sdb 和 /dev/sdc 运行 FIO I/O 压力,100 轮 OS 软重启。
自定义 FIO 参数:
$ bash PowerCycleTest.sh -d "/dev/sda4" -c 100 --fio --reboot -fio-args "--bs=128k --numjobs=128"
覆盖默认 FIO 参数,使用 128k 块大小和 128 并发。
AC Cycle 模式
AC Cycle 模式需要配合外部 PDU 治具。
SUT 上启动:
$ bash PowerCycleTest.sh -d "/dev/sdb /dev/sdc" -c 100 --fio --accycle
AC Client 上启动 PDU 控制:
$ cd SIT-Cycle-ACTest/
$ bash run.sh
脚本在 rc-local 中注册
cycle_reboot.sh,SUT 通过 PDU 断电后,PDU 重新上电,开机后脚本自动继续执行。
Donghu SIT 标准流程(AC Cycle)
按照 Donghu SIT Test SOP 的标准操作步骤:
步骤 1 — 测试前清除日志:
$ python LogFilterTool.py --before
步骤 2 — 进入文件夹配置参数:
修改 BD_args.json 中的压测参数(如适用)。
步骤 3 — 启动测试:
$ bash PowerCycleTest.sh -c 20 --accycle --system --bytedance
交互式提示: - 输入 3:操作前延迟 3 分钟 - 输入 0:遇到错误后终止(1 为忽略错误继续)
步骤 4 — 监控运行:
$ top
观察 PowerCycleTest.sh / cycle_reboot.sh 进程是否正常运行。
步骤 5 — 中途停止:
$ bash stop_accycle.sh
Dual Mode(组合模式)
Reboot + DC Cycle 混合:
$ bash PowerCycleTest.sh -c 500 --system --reboot --dccycle
前 500 圈执行 OS Reboot,后 500 圈执行 DC Cycle,共 1000 圈。
远程 DC Cycle 模式(Ali AVMS BMC 带外掉电测试)
$ bash PowerCycleTest.sh -d "/dev/nvme0n1 /dev/nvme1n1" -c 1000 \
--fio --avms --dccycle --remote \
--ssh-host 172.17.0.100 --ssh-user root --ssh-pass 111111 \
--bmc-host 172.17.0.200 --bmc-user admin --bmc-pass admin --bmc-intf lanplus
通过 SSH 远程 Client 对 SUT 执行 DC Cycle,每圈随机掉电 1-60 秒。需确保 SUT/BMC/Client 在同一局域网。
客户专项测试
Ali AVMS:
$ bash PowerCycleTest.sh -d "/dev/nvme0n1 /dev/nvme1n1" -c 1000 --fio --avms --reboot
Ali Aliflash SSD:
$ bash PowerCycleTest.sh -d "/dev/osa /dev/osb" -c 1000 --fio --avms --reboot --aliflash
Ali Aliflash 用户态:
$ bash PowerCycleTest.sh -d "ocssd0n1 ocssd1n1" -c 1000 --fio --reboot --aliflash --userspace
Ali MOC 重启 CN 实例:
$ bash PowerCycleTest.sh -c 10 --system --reboot --moc-rpm type1
type 选项:type1 / type4 / mcn
Tencent BIOS 引入测试:
$ bash PowerCycleTest.sh --system --reboot --tc_ping 10.0.0.1 -c 3
Tencent TC-FIO:
$ bash PowerCycleTest.sh -d "/dev/nvme0n1 /dev/nvme1n1" -c 1000 --tc-fio --reboot
Tencent 机器建议加 --tc-delay(分钟)以确保 SDR 温度数据正常。
ByteDance 专项:
$ bash PowerCycleTest.sh -c 10 --system --reboot --bytedance
自动执行部件级压力测试(CPU/内存/存储/网络/BMC/GPU)+ ByteDance 黑白名单日志筛查。
ByteDance NIC Link Up 检查:
$ bash PowerCycleTest.sh -c 2 --system --reboot --bytedance-NIC
每圈检查 NIC Link Up 时间(Reboot ≤ 30s,其他 ≤ 60s)。
ByteDance HDD 识别时间检查:
$ bash PowerCycleTest.sh -c 2 --system --reboot --bytedance-HDD
检查所有硬盘被系统识别的时间是否 < 10 分钟。
ByteDance Lava Expander 检查:
$ bash PowerCycleTest.sh -c 2 --system --reboot --bytedance-HDD --bytedance-lava
每圈检查 SAS Address/Link、Phy error counters,与首轮比对。CSV 报告生成于 reports/expander/。
RAID 测试
$ bash PowerCycleTest.sh -d "/dev/sdb" -c 100 --fio --reboot --raid 2208
$ bash PowerCycleTest.sh -d "/dev/sdb" -c 100 --fio --reboot --raid disk_check
HBA / Expander 检查
$ bash PowerCycleTest.sh -c 100 --fio --reboot --HBA # HBA 卡检查
$ bash PowerCycleTest.sh -c 100 --fio --reboot --chk-phy # Expander phy 错误检查
SmartNIC 测试
$ bash PowerCycleTest.sh -c 100 --system --reboot --smartnic -nicip 192.168.1.100
BIOS NUMA/HT 切换(Ali)
$ bash PowerCycleTest.sh -c 100 --system --dccycle --bios
在 DC Cycle 中通过 ipmitool 自动切换 BIOS NUMA 和 HT 设置。
停止测试
$ bash stop_osreboot.sh # OS Reboot 模式
$ bash stop_accycle.sh # AC Cycle 模式
单独运行 ByteDance 部件压测(不跑 Cycle)
$ cd SIT-Power-CycleTest-v1.24.0/lib/Bytedance_Stress
$ bash component_stress.sh --bytedance True --cycles 1
单独维护黑白名单
编辑 lib/bw_list.json,在 common 或 bytedance 域下维护 SEL_b、SEL_w、DMESG_b、DMESG_w 清单。
CLI 参数完整参考表
| 参数 | 类型 | 说明 |
|---|---|---|
-h, --help |
flag | 打印帮助信息 |
-V, --version |
flag | 显示版本号 |
-c, --cycles N |
value | 电源循环圈数(必填) |
-d, --disklist "DEV..." |
value | FIO 测试的目标磁盘设备列表 |
--fio |
flag | 启用 FIO I/O 压力测试模式 |
--system |
flag | 启用系统检查模式(无 I/O 压力) |
--reboot |
flag | OS 软重启模式 |
--reset |
flag | 硬件 Reset 模式 |
--dccycle |
flag | DC 电源循环模式 |
--accycle |
flag | AC 电源循环模式(需配合 PDU) |
--delay N |
value | 电源动作前等待时间(1-10 分钟) |
--disk-delay N |
value | 磁盘驱动就绪额外等待时间(分钟) |
-y, --assumeyes |
flag | 自动确认所有交互提示 |
--ignore-err |
flag | 遇到检查失败时继续运行 |
--fio-args "..." |
value | 覆盖默认 FIO 可变参数 |
--tc-fio |
flag | Tencent FIO 模式(4k/128k + NVMe 命令压力) |
--tc-delay N |
value | Tencent SDR 传感器就绪延迟(0-10 分钟) |
--tc-poweroff |
flag | Tencent 安全下电测试 |
--tc_ping IP |
value | Tencent BIOS 内网连通性测试 IP |
--avms |
flag | Ali AVMS 分区校验模式 |
--aliflash |
flag | Ali Aliflash SSD 测试 |
--userspace |
flag | Ali Aliflash 用户态模式 |
--moc-rpm |
value | Ali MOC CN 实例重启测试(type1/type4/mcn) |
--bios |
flag | Ali BIOS NUMA/HT 切换(DC Cycle 中) |
--bytedance |
flag | ByteDance 部件压测 + 专项日志过滤 |
--bytedance-HDD |
flag | ByteDance HDD 识别时间检查 |
--bytedance-NIC |
flag | ByteDance NIC Link Up 时间检查 |
--bytedance-lava |
flag | ByteDance Lava Expander phy 错误检查 |
--HBA |
flag | HBA 卡信息检查 |
--chk-phy |
flag | Expander phy 错误计数器检查 |
--smartnic |
flag | SmartNIC 远程监控 |
-nicip IP |
value | SmartNIC IP 地址 |
--remote |
flag | 启用远程 Client SSH DC Cycle 模式 |
--ssh-host IP |
value | 远程 Client SSH 主机 IP |
--ssh-user USER |
value | 远程 Client SSH 用户名 |
--ssh-pass PASS |
value | 远程 Client SSH 密码 |
--ssh-port PORT |
value | 远程 Client SSH 端口 |
--bmc-host IP |
value | SUT BMC 主机 IP |
--bmc-user USER |
value | SUT BMC 用户名 |
--bmc-pass PASS |
value | SUT BMC 密码 |
--bmc-intf TYPE |
value | SUT BMC 接口类型(如 lanplus) |
--auto-login |
flag | 使用 .bashrc 模式(替代 rc.local) |
--restore-login |
flag | 恢复自动登录配置 |
--fault |
flag | Ali OEM SEL 检查 |
--ipmi-stress |
flag | IPMI 并发命令压力测试 |
-l, --jobline |
value | 任务线标识 |
11. 参考文档摘要
Donghu SIT Test SOP.pptx
来源:Cui.Davis (2023/10/13),12 页 Donghu 服务器平台 SIT 标准操作流程。
关键流程:
| 步骤 | 内容 | 与 PowerCycleTest 的关联 |
|---|---|---|
| BIOS 配置 | Shift+Ctrl+F2 进入专家级 BIOS 设置 | 硬件基础配置 |
| 硬件清单检查 | lspci 枚举所有 PCIe 设备(4 GPU/12 NIC/12 Mellanox/9 NVMe) |
对应 pci_device_check |
| G4XTOOLS 诊断 | ./g4Xdiagnostics.x86_64 → 1 → otc → quit |
互补诊断工具 |
| LogFilter 清除 | python LogFilterTool.py --before |
测试前环境清理 |
| AC PowerCycle | ./PowerCycleTest.sh -c 20 --accycle --system --bytedance |
直接使用本工具 |
| 停止测试 | ./stop_accycle.sh |
直接使用本工具 |
| 监控运行 | top |
观察脚本进程状态 |
Donghu SIT AC Cycle 操作要点:
- 测试前运行
LogFilterTool.py --before清除历史日志 - 进入文件夹修改配置文件(运行时间/测试项/参数)
- 启动测试:提示依次输入
3(延迟 3 分钟)和0(遇错终止) - 每轮测试完成后自动关机 → 重新上电 → 自动开始下一轮
- 达到目标圈数后自动停止
- 中途停止:
bash stop_accycle.sh
相关 BKM
| BKM 名称 | ID | 说明 |
|---|---|---|
| AC Cycle Test | 2246 | AC Cycle 通用测试 |
| DC Cycle Test | 2572 | DC Cycle 通用测试 |
| OS Reboot Test | 2786 | OS Reboot 通用测试 |
| ByteDance AC Cycle | 1004899 | ByteDance AC Cycle 测试 |
| ByteDance DC Cycle | 1004895 | ByteDance DC Cycle 测试 |
| ByteDance Reboot | 1004894 | ByteDance Reboot 测试 |
完整 BKM 列表见 README.md
12. 版本历史
| 版本 | 日期 | 作者 | 变更 |
|---|---|---|---|
| 1.0 | 2026-05-29 | Claude | 初始版本,覆盖 SIT-Power-CycleTest v1.24.0 全部功能,含完整参数参考、使用示例和 Donghu SIT SOP 集成 |
开发团队:Liu.AllenJH (Developer), Tong.Anderson (PIC), Wang.Min (Test Leader), Ren.Sunny (Tester) 最后验证:Ren.Sunny on LAVA (2023-03-13), Result: PASS 脚本管理系统:ARES Script Management BKM ID:参见 README.md 中的完整 BKM 列表