issue链接
背景
在CSR配置中存在防抖功能的Scanner对象,当前系统无法追踪这些对象在每次计算过程中的具体数值、计算过程和结果。这导致在进行硬件问题定位时,需要手动修改hwproxy代码才能获取调试信息,不利于问题定界和定位。
现状:
当前系统缺少对防抖对象计算过程的可视化跟踪能力,无法实时监控每次防抖过程中参与计算的值、计算过程,给硬件问题诊断带来困难。
解决方案
提供在线调试命令功能,支持实时追踪指定Scanner每次计算防抖时参与计算的值、过程信息和计算结果,并将调试信息输出到在线调试终端,便于快速定界定位问题。
sequenceDiagram
participant User as mdbctl
participant hwproxy as hwproxy
participant hardware as 硬件
Note over User,hardware: 运行阶段
User->>hwproxy: 启动防抖数据跟踪
loop 实时监控循环
hwproxy->>hardware: Scanner扫描,读取硬件数据
hardware-->>hwproxy: 返回硬件读取数据
hwproxy ->> hwproxy: 执行防抖计算,<br>记录计算值、过程信息和结果
hwproxy-->>User: 输出参与防抖计算的值、<br>过程信息和结果
end
User->>hwproxy: 停止防抖数据跟踪
决策点
1、在/bmc/kepler/Scanner/:Id路径下新增接口bmc.kepler.Release.Scanner,并新增方法TraceDebounce。
2、hwproxy组件新增mdbctl自定义命令tracedebounce
详细描述
1、新增资源协作接口bmc.kepler.Release.Scanner及方法
| 方法名称 | 变化类型 | 请求签名 | 响应签名 | 读写&权限 | 持久化 | 变化通知 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|---|
| TraceDebounce | 新增方法 | s | NA | DiagnoseMgmt | NA | NA | 跟踪Scanner的防抖过程 请求参数: · Action:trace动作 start:开始跟踪防抖对象每次参与计算的值、过程信息和结果 stop:停止跟踪防抖对象每次参与计算的值、过程信息和结果 |
NA |
2、新增组件调测命令 Usage: tracedebounce <ObjectName> <Action> 追踪指定Scanner对象的防抖数据
| 参数名称 | 参数签名 | 参数说明 |
|---|---|---|
| ObjectName | s | Scanner对象名. |
| Action | s | 跟踪行为;start表示开始跟踪;stop表示停止跟踪 |
可以同时跟踪多个Scanner对象,例如:
tracedebounce <Scanner对象1> start
tracedebounce <Scanner对象2> start
tracedebounce <Scanner对象3> start
在调用对应Scanner对象的stop前,这几个Scanner对象的防抖数据都会持续打印
跟踪防抖效果演示:
debounce policy表示使用的防抖策略,该Scanner使用均值防抖
scanner name表示跟踪的Scanner对象名,is signed表示该防抖值是否为有符号数。
new value表示本次Scanner从硬件读取回来的值,debounce value表示防抖计算结果。
history values表示本次防抖时参与计算的值。
自定义命令mds配置
{
"Scanner": {
"path": "/bmc/kepler/Scanner/:Id",
"interfaces": {
"bmc.kepler.Release.Scanner": {
"methods": {
"TraceDebounce": {
"cmdName": "tracedebounce",
"req": {
"Action": {
"baseType": "String",
"enum":[
"start",
"stop"
],
"displayDescription": "debounce trace action.start: start tracing debounce value, the debounce process and result. stop: stop tracing debounce value, the debounce process and result"
}
},
"displayDescription": "trace debounce value, the debounce process and result."
}
}
}
}
}
}
评审结论
1、同意在/bmc/kepler/Scanner/:Id路径下新增接口bmc.kepler.Release.Scanner,并新增方法TraceDebounce,用于追踪指定Scanner的防抖过程,请求签名为s,无响应签名,权限为DiagnoseMgmt;
2、同意hwproxy组件新增mdbctl自定义命令tracedebounce,参数说明见详细描述;
遗留问题
1、优化防抖打印结构,改为kv格式,确认下描述history和windows,历史数据更偏向于从Scanner开始扫描到现在的buf,这个buf应该是计算防抖的窗口的值,应该用window value避免歧义
结论:防抖数据打印已优化为kv格式,用window values表示窗口内的值,避免歧义,示例如下:
% tracedebounce Scanner_RTCBatteryMntr_010101 start
============= debounce policy: Midavg =============
scanner: Scanner RTCBatteryMntr_ 010101, signed: false
native value: 2038 debounce result: 2038
window values: {2038 2039 2039 2039 2039 2038}
============= debounce policy: Midavg =============
scanner: Scanner RTCBatteryMntr_ 010101, signed: false
native value: 2039 debounce result: 2039
window values: {2039 2038 2039 2039 2039 2039}
============= debounce policy: Midavg =============
scanner: Scanner_RTCBatteryMntr_010101, signed: false
native value: 2039 debounce result: 2039
window values: {2039 2039 2038 2039 2039 2039}
============= debounce policy: Midavg =============
scanner: Scanner_ RTCBatteryMntr_ 010101, signed: false
native value: 2038 debounce result: 2038
window values: {2038 2039 2039 2038 2039 2039}
