【已评审】支持能效管理子系统组件在线调试客户端自定义命令

背景

能效组件需支持在线调试自定义命令,并区分debug版本命令和release版本命令,即release包中仅包含release相关命令,debug包中包含所有命令。

现状:能效组件无在线调试自定义命令及其对应的资源协作接口

决策点

新增path:/bmc/kepler/Debug/PowerStrategy,interface:bmc.kepler.Debug.EnergySavingMeasurement和方法SetPeriod

新增path:/bmc/kepler/Debug/PowerStrategy,interface:bmc.kepler.Debug.PowerCapping,方法:SimulatePowerCappingTask和SimulatePowerCappingConfig

在path:/bmc/kepler/Systems/:SystemId/PowerMgmt/:ID下,新增interface: bmc.kepler.Release.OnePower.Collector,方法: GetFanSpeed和GetRegisterValue

将接口bmc.kepler.Debug.BlackBox和其方法DumpPsuBlackbox放置新增路径/bmc/kepler/Debug/Chassis/:ChasisId/PowerMgmt/:ID下

新增path:/bmc/kepler/Debug/ThermalMgmt,interface: bmc.kepler.Debug.PidConfiguration,方法: GetVersion,SetPidPrintMode,SetPidConfigItem

在path:bmc/kepler/ThermalMgmt下,新增interface: bmc.kepler.Release.ThermalControlStrategy,方法:GetActivatedPolicy

描述
决策点1:
资源path:/bmc/kepler/Debug/PowerStrategy
资源interface:bmc.kepler.Debug.EnergySavingMeasurement
变化类型:新增方法
应用场景:节能专家推荐系统中,修改计算周期,进行策略重新推荐
持久化类型:不涉及
操作权限:BasicSetting

方法名称 变化类型 签名 读写&权限 持久化 变化通知 接口说明 接口约束 命令字 描述(displayDescription)
SetPeriod 新增方法 请求: u
响应:–
BasicSetting 不涉及 不涉及 设置节能专家推荐系统计算周期
请求:
Period:计算周期时间,单位为秒,最小时间为60s,最大时间为86400s(24小时)
响应:
为防止对能效组件性能影响,最小时间为60s,最大时间为86400s(24小时) setpwrcalcperiod 方法描述:
Set the calculation period of the energy saving measurement.
请求参数描述:
Period:Energy saving measurement calculation period, in seconds, which range is [60, 86400].
For example: setpwrcalcperiod 60.

决策点2:
资源path:/bmc/kepler/Debug/PowerStrategy
资源interface:bmc.kepler.Debug.PowerCapping
变化类型:新增方法
应用场景:模拟功耗封顶;设置功耗封顶下限建议值,模拟上报功耗封顶失败事件
持久化类型:不持久化
操作权限:PowerMgmt

方法名称 变化类型 签名 读写&权限 持久化 变化通知 接口说明 接口约束 命令字 描述(displayDescription)
SimulatePowerCappingTask 新增方法 请求: yd
响应:–
PowerMgmt 不涉及 不涉及 通过模拟整机功耗值进行功耗封顶
请求:
Mode:是否开启整机功耗调试模式,取值0和1,0表示关闭,1表示开启
Ratio:功耗封顶值比例范围[0.1, 1.0],该参数为可选参数
Mode取值只能为0和1
Ratio取值范围为[0.1, 1.0].
pwrcapsyspwrmock 方法描述:
Simulate the system power for power capping.
请求参数描述:
Mode:Indicate whether to enable the system power debug mode, 0: disable, 1: enable.
Ratio:Modify ratio value,which range is [0.1, 1.0] to simulate the system power.
For example: 1. pwrcapsyspwrmock 0; 2. pwrcapsyspwrmock 1 0.1.
SimulatePowerCappingConfig 新增方法 请求: yu
响应:–
PowerMgmt 不涉及 不涉及 设置功耗封顶下限值,以及模拟上报功耗封顶失败事件请求
请求:
Type:调试类型,0表示模拟功耗封顶下限值,1表示模拟上报功耗封顶失败事件
Value:功耗封顶下限值,该参数为可选参数
Type当前只支持0和1,保留扩展性
Value值仅在Type取值为0时生效
pwrcapmock 方法描述:
Set lower limit of power capping or simulate the power capping failure event.
请求参数描述:
Type:Indicate power capping debug type, 0: Simulate power capping lower limit value, 1: Simulate the power capping failure event.
Value: Lower limit of the power capping value, which is used when type is set to 0.
For example: 1. pwrcapmock 0 100; 2. pwrcapmock 1.

决策点3:
资源path:/bmc/kepler/Systems/:SystemId/PowerMgmt/:ID
资源interface:bmc.kepler.Release.OnePower.Collector
变化类型:新增方法
应用场景:查询电源风扇转速,查询电源I2C信息
持久化类型: 不持久化
操作权限:ReadOnly

方法名称 变化类型 签名 读写&权限 持久化 变化通知 接口说明 接口约束 命令字 描述(displayDescription)
GetFanSpeed 新增方法 请求: –
响应: q
ReadOnly 不涉及 不涉及 获取电源风扇转速
响应参数:
FanSpeed:电源风扇转速
getpsufanspeed 方法描述:
Get PSU fan speed.
响应参数描述:
FanSpeed: PSU fan speed. For example: getpsufanspeed OnePower_0_010109.
GetRegisterValue 新增方法 请求:uu
响应:ay
ReadOnly 不涉及 不涉及 获取电源寄存器信息
请求参数:
Cmd:电源寄存器地址
Length:读取长度
响应参数:
OutData:寄存器读取结果
传入的寄存器地址需为当前已支持的电源寄存器地址,否则返回操作失败 getpsureg 方法描述:
Get PSU register value.
请求参数描述:
Cmd: PSU register address.
Length: Read length.
For example: getpsureg OnePower_0_010109 144 2.

资源path:/bmc/kepler/Debug/Chassis/:ChasisId/PowerMgmt/:ID
资源interface:bmc.kepler.Debug.BlackBox
变化类型:DumpPsuBlackbox(该方法已存在)
应用场景:收集黑匣子日志
持久化类型: 不持久化
操作权限:ReadOnly

方法名称 变化类型 签名 读写&权限 持久化 变化通知 接口说明 接口约束 命令字 描述(displayDescription)
DumpPsuBlackbox 该方法已存在 请求:–
响应:–
ReadOnly 不涉及 不涉及 收集电源黑匣子日志 dumppsublackbox 方法描述:
Dump PSU blackbox data. (file path: /var/log/ps_black_box.log)
For example: dumppsublackbox OnePowerDebug_0_010109.

决策点4:
资源path:/bmc/kepler/Debug/ThermalMgmt/
资源interface:bmc.kepler.Debug.PidConfiguration
变化类型:新增方法
应用场景:PID相关查询和设置
持久化类型: 不持久化
操作权限:ReadOnly/BasicSetting

方法名称 变化类型 签名 读写&权限 持久化 变化通知 接口说明 接口约束 命令字 描述(displayDescription)
GetVersion 新增方法 ReadOnly 不涉及 不涉及 打印PID版本信息 无约束 getpidver 方法描述:
Print PID version.
For example: getpidver.
SetPidPrintMode 新增方法 请求:yy
响应:–
BasicSetting 不涉及 不涉及 设置PID信息打印开关
请求参数:
Type:PID信息类型,1表示配置信息,2表示控制信息
Enabled:PID信息打印开关,取值为0和1, 0表示关闭信息打印,1表示开启信息打印
当前Type仅支持配置信息和控制信息 setpidprintmode 方法描述:
Set PID message output.
请求参数描述:
Type: PID message type, 1: configuration message, 2: control message.
Enabled: Indicate whether to enable to print PID message, 0: disable, 1: enable.
For example: setpidprintmode 0 1.
SetPidConfigItem 新增方法 请求:yy
响应:–
BasicSetting 不涉及 不涉及 设置PID模块配置信息
请求参数:
ItemIndex:PID场景识别配置项索引,当前仅支持0表示高温场景。
ItemValue:配置场景值
ItemIndex:当前仅支持0高温场景
ItemValue:配置场景值
setpidconf 方法描述:
Set PID module configuration items.
请求参数描述:
ItemIndex: PID configuration item index, 0: high-temperature configuration item.
ItemValue: Indicate configuration item value
For example: setpidconf 0 1.

决策点5:
资源path:/bmc/kepler/ThermalMgmt/
资源interface:bmc.kepler.Release.ThermalControlStrategy
变化类型:新增方法
应用场景:查询当前转速生效的策略
持久化类型: 不持久化
操作权限:ReadOnly

方法名称 变化类型 签名 读写&权限 持久化 变化通知 接口说明 接口约束 命令字 描述(displayDescription)
GetActivatedPolicy 新增方法 请求:sy
响应:s
ReadOnly 不涉及 不涉及 获取指定散热器件和模式生效的调速因子
请求参数:
Type:散热器件类型,取值为Fan
Mode:查询模式,0表示生效因子,1表示生效算法
响应参数:
ActivatedPolicy
Type取值为Fan
Mode取值为0调速因子,1表示调速算法
ActivatedPolicy取值为:
当Mode为0时:
MPC – 自动调速模式下,MPC生效时显示
传感器名称 – 自动调速模式下,MPC未生效时显示
异常调速因子名称 – 自动调速模式下,MPC未生效时且存在异常调速时显示(比如:风扇不在位)
N/A – 手动调速模式下显示
当Mode为1时:
MPC – 自动调速模式下,MPC生效时显示
PID – 自动调速模式下,PID生效时显示
N/A – 手动调速模式下显示
getactivatedpolicy 方法描述:
Get activated policy for a specified cooling device type and mode.
请求参数描述:
Type: Cooling device type, include Fan.
Mode: Cooling effective mode, 0: effective factor, 1: algorithm

评审结论

决策点1:
新增path:/bmc/kepler/Debug/PowerStrategy,interface:bmc.kepler.Debug.EnergySavingMeasurement和方法SetPeriod
结论:同意新增上述path,interface和method
方法名:SetPeriod
请求签名:u
响应签名:无
读写&权限:BasicSetting

决策点2. 新增path:/bmc/kepler/Debug/PowerStrategy,interface:bmc.kepler.Debug.PowerCapping,方法:SimulatePowerCappingTask和SimulatePowerCappingConfig
结论:同意新增上述path,interface和method
方法名:SimulatePowerCappingTask
请求签名:yd
响应签名:无
读写&权限:PowerMgmt

方法名:SimulatePowerCappingConfig
请求签名:yu
响应签名:无
读写&权限:PowerMgmt

决策点3.
①. 在path:/bmc/kepler/Systems/:SystemId/PowerMgmt/:ID下,新增interface: bmc.kepler.Release.OnePower.Collector,方法: GetActualFanSpeed和GetRegisterValue
②. 将接口bmc.kepler.Debug.BlackBox和其方法DumpPsuBlackbox放置新增路径/bmc/kepler/Debug/Chassis/:ChasisId/PowerMgmt/:ID下
结论:同意新增上述path,interface和method
方法名:GetFanSpeed
请求签名:无
响应签名:q
读写&权限:ReadOnly

方法名:GetRegisterValue
请求签名:uu
响应签名:ay
读写&权限:ReadOnly

决策点4. 新增path:/bmc/kepler/Debug/ThermalMgmt,interface: bmc.kepler.Debug.PidConfiguration,方法: GetVersion,SetPidPrintMode,SetPidConfigItem
结论:同意新增上述path,interface和method
方法名:GetVersion
请求签名:无
响应签名:无
读写&权限:ReadOnly

方法名:SetPidPrintMode
请求签名:yy
响应签名:无
读写&权限:BasicSetting

方法名:SetPidConfigItem
请求签名:yy
响应签名:无
读写&权限:BasicSetting

决策点5. 在path:bmc/kepler/ThermalMgmt下,新增interface: bmc.kepler.Release.ThermalControlStrategy,方法:GetActivatedPolicy
结论:同意新增上述interface和method
方法名:GetActivatedPolicy
请求签名:sy
响应签名:s
读写&权限:ReadOnly

遗留问题
问题1:确认方法是否可以合并为通过不同参数进行调用
结论1:已将可合并的方法合并,通过不同参数进行调用,具体为SetPidPrintModeEnabled;
问题2:确认命令字名称;
结论2:已将需要修改的命令字名称完成修改,并简化个别名称;