【已评审】支持设置CPU最低主频

背景

功率封顶调控通过降低CPU主频来限制节点功耗,但主频过度下调可能影响业务正常运行。为此,需支持通过BMC配置CPU允许下调的最低主频阈值并下发给BIOS,使功率封顶调控在CPU主频降至该阈值或达到功率封顶值时任一条件满足时停止降频,避免对业务造成影响。同时,前端需呈现CPU最低主频的可设置范围(上限值与下限值),便于用户确认合理的配置区间

评审点

1、新增CPU最低主频、CPU最低主频下限值、CPU最低主频上限值、CPU主频最小步进值的资源协作接口属性
2、Web的/UI/Rest/System/Power资源新增CPU最低主频、CPU最低主频下限值、CPU最低主频上限值、CPU主频最小步进值属性
3、Redfish的Power资源新增CPU最低主频属性

详细描述

评审点1:新增CPU最低主频、CPU最低主频下限值、CPU最低主频上限值、CPU主频最小步进值的资源协作接口属性

资源path(新增): /bmc/kepler/Systems/:SystemId/CPUFrequency
资源interface(新增): bmc.kepler.Systems.CPUFrequency.LimitPolicy
变化类型:新增对象及属性
应用场景:通过BMC配置CPU允许下调的最低主频阈值并下发给BIOS
详细描述:
不支持设置CPU最低主频的条件为MinFrequencyLowerBoundMHz或MinFrequencyUpperBoundMHz未配置或配置为65535

属性名称 变化类型 签名 读写&权限 持久化 变化通知 属性来源 默认值 接口说明 接口约束
MinFrequencyMHz 新增属性 d 读:ReadOnly
写:PowerMgmt
掉电持久化 true 用户设置 65535 CPU最低主频 不支持设置CPU最低主频时,该属性应为65535
MinFrequencyLowerBoundMHz 新增属性 d 读:ReadOnly 不持久化 false CSR 65535 CPU最低主频下限值 不支持设置CPU最低主频时,该属性应为65535
MinFrequencyUpperBoundMHz 新增属性 d 读:ReadOnly 不持久化 false CSR 65535 CPU最低主频上限值 不支持设置CPU最低主频时,该属性应为65535
FrequencyStepMHz 新增属性 d 读:ReadOnly 不持久化 true BIOS获取 65535 CPU主频最小步进值 不支持设置CPU最低主频时,该属性应为65535;支持CPU最低主频时,从BIOS获取实际值并更新

评审点2:Web的/UI/Rest/System/Power资源新增CPU最低主频、CPU最低主频下限值、CPU最低主频上限值、CPU主频最小步进值属性

uri(已有):https://device_ip/UI/Rest/System/Power
变化类型:新增属性
操作类型:GET/PATCH
应用场景:设置CPU最低主频
详细描述:
不支持设置CPU最低主频的条件为MinFrequencyLowerBoundMHz或MinFrequencyUpperBoundMHz未配置或配置为65535
以下属性均位于PowerLimit下,与LimitInWatts等处于同一层级

属性名称 取值类型 说明 取值范围 属性来源 操作权限 约束
CPUMinFrequencyMHz [number,null] CPU最低主频 [number,null] CPUFrequency对象下的MinFrequencyMHz属性 GET: ReadOnly
PATCH: PowerMgmt
不支持设置CPU最低主频时,该属性应为null
CPUMinFrequencyLowerBoundMHz [number,null] CPU最低主频下限值 [number,null] CPUFrequency对象下的MinFrequencyLowerBoundMHz属性 ReadOnly 不支持设置CPU最低主频时,该属性应为null
CPUMinFrequencyUpperBoundMHz [number,null] CPU最低主频上限值 [number,null] CPUFrequency对象下的MinFrequencyUpperBoundMHz属性 ReadOnly 不支持设置CPU最低主频时,该属性应为null
CPUFrequencyStepMHz [number,null] CPU主频最小步进值 [number,null] CPUFrequency对象下的FrequencyStepMHz属性 ReadOnly 不支持设置CPU最低主频时,该属性应为null

示例
后端

{
    "PowerLimit": {
        "LimitInWatts": 9999,
        "MaxLimitInWatts": 300,
        "MinLimitInWatts": 78,
        "LimitState": "Off",
        "PowerLimitExceptionSupported": true,
        "LimitExceptionAllowableValues": [
            "LogEventOnly", 
            "NoAction"
        ],
        "LimitException": "LogEventOnly",
        "PowerCappingSupported": true,
        "PowerLimitMode": null,
        "CPUMinFrequencyMHz": 1500,
        "CPUMinFrequencyLowerBoundMHz": 1200,
        "CPUMinFrequencyUpperBoundMHz": 2000,
        "CPUFrequencyStepMHz": 50
    },
...
}

WEB显示

前端校验
设置的CPU最低主频超出上下限

设置的CPU最低主频不为最小步进值的倍数

其余场景均由后端校验,前端返回操作失败

评审点3:Redfish的Power资源新增CPU最低主频属性

资源uri(已有): https://device_ip/redfish/v1/Chassis/:chassisid/Power
资源版本:Power.v1_2_1
变化类型:新增属性
操作类型:GET/PATCH
应用场景:设置CPU最低主频
详细描述:
不支持设置CPU最低主频的条件为MinFrequencyLowerBoundMHz或MinFrequencyUpperBoundMHz未配置或配置为65535

属性名 类型 示例/取值约束 readonly 易变属性 实现PATCH 操作权限 描述
CPUMinFrequencyMHz [number,null] 1500,不支持设置CPU最低主频时,该属性应为null false 否 是 GET: ReadOnly
PATCH: PowerMgmt
CPU最低主频

示例:

{ 
    "PowerControl":[ 
        { 
            "PowerLimit":{ 
                "LimitInWatts":limit_value, 
                "LimitException":limit_exception
            },
            "Oem": {
                "Huawei": {
                    "PresetLimitInWatts": 9999,
                    "PowerLimitExceptionSupported": true,
                    "CPUMinFrequencyMHz":1500,
                    ...
                }
            }
        } 
    ] 
}

Schema定义 :

"CPUMinFrequencyMHz": {
    "type": [
        "number",
        "null"
        ],
    "units": "MHz",
    "readonly": false,
    "description": "The minimum CPU frequency allowed during power capping. A null value indicates that the platform does not support CPU minimum frequency limiting.",
    "longDescription": "The value of this property shall represent the minimum CPU frequency threshold in MHz during power capping. When the CPU frequency is reduced to this threshold or the power capping value is reached, whichever condition is met first, the frequency reduction shall stop to prevent impact on services. A null value shall indicate that the platform does not support CPU minimum frequency limiting."
}

不支持设置CPU最低主频、设置的CPU最低主频超出上下限沿用已实现的错误消息PropertyModificationNotSupported、PropertyValueOutOfRange,设置的CPU最低主频不为最小步进值的倍数已新增错误消息
【已评审】支持设置CPU最低主频的错误消息 - Interface SIG / Interface评审 - openUBMC 论坛

是否准备好AI预审

是

评审结论

已线下审视:

决策点1:同意新增CPU最低主频、CPU最低主频下限值、CPU最低主频上限值、CPU主频最小步进值的资源协作接口属性,具体如下:

path:/bmc/kepler/Systems/:SystemId/CPUFrequency
interface:bmc.kepler.Systems.CPUFrequency.LimitPolicy
变化类型:新增对象及属性

属性名称 签名 读写&权限 持久化 变化通知 属性来源
MinFrequencyMHz d 读写 写:PowerMgmt 读:ReadOnly 掉电持久化 true 用户设置
MinFrequencyLowerBoundMHz d 只读 读:ReadOnly 不持久化 false CSR
MinFrequencyUpperBoundMHz d 只读 读:ReadOnly 不持久化 false CSR
FrequencyStepMHz d 只读 读:ReadOnly 不持久化 true BIOS获取

决策点2:同意Web的/UI/Rest/System/Power资源新增CPU最低主频、CPU最低主频下限值、CPU最低主频上限值、CPU主频最小步进值属性,具体如下:

uri:/UI/Rest/System/Power
操作类型:GET、PATCH(仅CPUMinFrequencyMHz)
变化类型:新增属性

属性名称 取值类型 操作权限 约束
CPUMinFrequencyMHz [number,null] GET:ReadOnly PATCH:PowerMgmt 不支持设置CPU最低主频时,该属性应为null
CPUMinFrequencyLowerBoundMHz [number,null] ReadOnly 不支持设置CPU最低主频时,该属性应为null
CPUMinFrequencyUpperBoundMHz [number,null] ReadOnly 不支持设置CPU最低主频时,该属性应为null
CPUFrequencyStepMHz [number,null] ReadOnly 不支持设置CPU最低主频时,该属性应为null

决策点3:同意Redfish的Power资源新增CPU最低主频属性,具体如下:

uri:/redfish/v1/Chassis/:chassisid/Power
操作类型:GET、PATCH(仅CPUMinFrequencyMHz)
变化类型:新增属性

属性名称 取值类型 readonly 操作权限 约束
CPUMinFrequencyMHz [number,null] false GET:ReadOnly PATCH:PowerMgmt 不支持设置CPU最低主频时,该属性应为null

已审视