风扇温度策略配置问题,多个相同的npu卡,如何使不同位置的npu卡受控的风扇组不一样。

适配300i duo卡风扇温度策略时发现一个问题。
目前场景是当前机器有多个300i duo卡需要散热,散热工程师提供策略是槽位1的300i duo卡由风扇组的fan1,fan2,fan3调控,槽位2的300i duo卡由风扇组的fan4,fan5,fan6调控,以此类推。
目前遇到的问题是,无论是哪个槽位上的300i duo卡其实都是调用的同一个sr文件,CoolingRequirement这个配置实际是只有一个,而想让不同的槽位的300i duo卡调控的风扇组不一样,肯定得配置多个CoolingArea,每个CoolingArea的FanIdxGroup配置不同的fan id。而CoolingRequirement和CoolingArea是一一对应的。所以请问该如何解决。

当前不支持。
调速策略是通过槽位号可以进行偏移的,但是基础的baseRequirementId是一样的,而baseRequirementId和CoolingArea中的RequipmentIdx是一一对应的

请问您说的调速策略是通过槽位号可以进行偏移的,具体是怎么去操作呢。

使用表达式语法,针对不同的槽位号使用不同的调速策略

比如当前VPD仓中的CoolingRequirement_1_52,根据槽位号进行偏移"RequirementId": “${Slot} |> expr((52 << 8) | $1)”,但其实际BaseRequirementId为52,有且仅有一个CoolingArea与之对应,无法实现问题描述中的策略

可以实现的 ,卡的csr配置两个coolingrequirement对象,一个id配置为a<<8 | slot,另一个为(a+1) <<8 | slot,然后都配置一个Enabled属性,第一个对象,if slot == 1,则为true,第二个对象if slot ==2 ,则为true
然后PSR配置两个coolingarea,风扇分别为123 ,456

对于卡器件,常见的都是使用所有风扇调速,能稳定的保证散热。分区域调速,对单张卡加压高功率发热运行下3风扇是否能保障散热呢? 是否未配置了分区调速导致存在 风道倒灌场景呢。我的想法是这样的,可能存在不足,可以适当参考

按参考的写,编译会报错。


此处请找构建确认问题

解决了,得加双引号

根据您的解决方法,单个npu卡放在不同槽位上,受控的风扇组不一样(效果符合预期)。多个npu卡或者满配npu装备时,有1个或者2个风扇组的风扇不生效(npu卡温度策略不生效)。

如下配置把不同槽位的gpu分成三个区域,每个区域控制不同的风扇组,多个npu卡或者满配npu装备时,其实一个或者两个的CoolingRequirement是失效的,对应风扇组不会根据npu卡温度策略进行调速。

    "CoolingRequirement_1_72": {
        "RequirementId": "${Slot} |> expr((72 << 8) | $1)",
        "Enabled": "${Slot} |> expr(($1 >= 1 && $1 <= 8) ? true : false)" ,
        "Description": "Atlas 300I Duo Core0 温度调速",
        "MonitoringStatus": "<=/NPUCard_1.Core0TemperatureCelsius |> expr($1 == 32768 ? 1 : 0)",
        "MonitoringValue": "<=/NPUCard_1.Core0TemperatureCelsius |> expr(($1 >= 255) ? 40 : ($1 & 255))",
        "FailedValue": 80,
        "BackupRequirementIdx": 7,
        "TargetTemperatureCelsius": 85,
        "SmartCoolingTargetTemperature": [85,85,85],
        "CustomSupported": true,
        "CustomTargetTemperatureCelsius": 85,
        "MaxAllowedTemperatureCelsius": 85,
        "SensorName": "#/ThresholdSensor_GPUAICore0Temp.SensorName"
    },
    "CoolingRequirement_1_73": {
        "RequirementId": "${Slot} |> expr((73 << 8) | $1)",
        "Enabled": "${Slot} |> expr(($1 >= 7 && $1 <= 14) ? true : false)" ,
        "Description": "Atlas 300I Duo Core0 温度调速",
        "MonitoringStatus": "<=/NPUCard_1.Core0TemperatureCelsius |> expr($1 == 32768 ? 1 : 0)",
        "MonitoringValue": "<=/NPUCard_1.Core0TemperatureCelsius |> expr(($1 >= 255) ? 40 : ($1 & 255))",
        "FailedValue": 80,
        "BackupRequirementIdx": 7,
        "TargetTemperatureCelsius": 85,
        "SmartCoolingTargetTemperature": [85,85,85],
        "CustomSupported": true,
        "CustomTargetTemperatureCelsius": 85,
        "MaxAllowedTemperatureCelsius": 85,
        "SensorName": "#/ThresholdSensor_GPUAICore0Temp.SensorName"
    },
    "CoolingRequirement_1_74": {
        "RequirementId": "${Slot} |> expr((74 << 8) | $1)",
        "Enabled": "${Slot} |> expr(($1 >= 13 && $1 <= 20) ? true : false)" ,
        "Description": "Atlas 300I Duo Core0 温度调速",
        "MonitoringStatus": "<=/NPUCard_1.Core0TemperatureCelsius |> expr($1 == 32768 ? 1 : 0)",
        "MonitoringValue": "<=/NPUCard_1.Core0TemperatureCelsius |> expr(($1 >= 255) ? 40 : ($1 & 255))",
        "FailedValue": 80,
        "BackupRequirementIdx": 7,
        "TargetTemperatureCelsius": 85,
        "SmartCoolingTargetTemperature": [85,85,85],
        "CustomSupported": true,
        "CustomTargetTemperatureCelsius": 85,
        "MaxAllowedTemperatureCelsius": 85,
        "SensorName": "#/ThresholdSensor_GPUAICore0Temp.SensorName"
    },

“BackupRequirementIdx”: 7,
“SmartCoolingTargetTemperature”: [85,85,85],
“CustomSupported”: true,
“CustomTargetTemperatureCelsius”: 85

你不应该配置这几个属性吧,使用备用温度点7常见是风扇板温度, [85,85,85]这个也不用配置,需要调速策略写明支持SmartCooling的才配置 ,CustomSupported这个是给自定义调速用的,卡一般不配自定义调速

背景:插了两张300I的卡在槽位5和17,然后风扇根据槽位分为俩个区,1-10槽位和11到20槽位。开启风扇调速不生效(只开启gpu相关调速,其他调速关闭)。看日志像是Policy被列为不生效了。

从低速改成节能还是不行

envtnum为0

配置没问题,排查下是否修改没升级上去

使能的问题,多个CoolingRequirement对象(使能有开启和关闭的)控制同一个CoolingArea对象,导致CoolingPolicy对象异常(生效又立马被取消生效了,日志里面有体现)。我现在改成用槽位去控制CoolingRequirement对象的RequirementId属性,如果槽位不对应,就把RequirementId设置为0(相当于这个CoolingRequirement指向一个不存在的CoolingArea对象,即不生效)。

一般没有直接使用卡的温度用于线形调速。常见的是当存在某张卡时,使能一条CoolingPolicy,关联的进风口温度,配置于CoolingPolicy的PcieCardName属性中。