[phosphor-pid-control] scaling issue

Hank Liou (劉晉翰) Hank.Liou at quantatw.com
Fri Aug 23 18:30:32 AEST 2019


Hi Patrick,

>-----Original Message-----
>From: Patrick Venture [mailto:venture at google.com]
>Sent: Wednesday, August 21, 2019 10:32 PM
>To: Hank Liou (劉晉翰) <Hank.Liou at quantatw.com>; James Feist
><james.feist at linux.intel.com>
>Cc: openbmc at lists.ozlabs.org
>Subject: Re: [phosphor-pid-control] scaling issue
>
>On Wed, Aug 21, 2019 at 1:11 AM Hank Liou (劉晉翰)
><Hank.Liou at quantatw.com> wrote:
>>
>> Hi All,
>>
>>
>> After commit [1], I found my temp sensor reading would be re-scaled by
>multiplying 1 over 255, making temperature into unfamiliar unit. Also the fan
>rpm reading would lie in [0,1] interval, letting the fan input to be 0 (since the
>input value of fan is from an integer array [2]). Are these normal behaviors?
>Or do I miss something?
>
>Are you using dbus configuration or json?  If json, can you attach your config.
>Since you're saying it was working and now isn't, I'm assuming there's
>something about the config being treated differently with the code changes in
>an unexpected way.

I found pid control will first read min and max from dbus and then (before commit [1]) revise them if 

info->min != conf::inheritValueFromDbus (in dbus/dbuspassive.cpp)

After value initialization, the min and max would be the ones in json file (Json file [3]). However, after commit [1] the min and max values of config would not be fed into the fan control process. The scaling issue is originated from commit [4] with the aim to treat fan rpm as percentage. It seems that commit [1] unexpectedly affects temp sensors in the sense that the temp is the integer reading not percentage. Before commit [1], it would not re-scale the temp reading since my min and max are 0 [6].



There is another issue with commit [1]. Now the fan rpm would be something like

1500 / 20000 = 0.075

where rpm max 20000 is from dbus. However the fan input function would transfer double into int, which is 0 for 0.075 (see [5]). Hence the fan input is 0 not percentage. Is there something wrong?

[1] https://github.com/openbmc/phosphor-pid-control/commit/fc2e803f5d9256944e18c7c878a441606b1f121c
[2] https://github.com/openbmc/phosphor-pid-control/blob/a7ec8350d17b70153cebe666d3fbe88bddd02a1a/pid/fancontroller.cpp#L86
[3]
       {
            "name": "fan1",
            "type": "fan",
            "readPath": "/sys/class/hwmon/hwmon1/fan1_input",
            "writePath": "/sys/class/hwmon/hwmon1/pwm1",
            "min": 0,
            "max": 255
        },
        {
            "name": "temp1",
            "type": "temp",
            "readPath": "/xyz/openbmc_project/sensors/temperature/temp1",
            "writePath": "",
            "min": 0,
            "max": 0
        }
[4] https://github.com/openbmc/phosphor-pid-control/commit/75eb769d351434547899186f73ff70ae00d7934a
[5] https://github.com/openbmc/phosphor-pid-control/blob/a7ec8350d17b70153cebe666d3fbe88bddd02a1a/pid/fancontroller.cpp#L64
[6] https://github.com/openbmc/phosphor-pid-control/blob/a7ec8350d17b70153cebe666d3fbe88bddd02a1a/dbus/dbuspassive.cpp#L158

>
>>
>>
>> [1]
>> https://github.com/openbmc/phosphor-pid-
>control/commit/fc2e803f5d92569
>> 44e18c7c878a441606b1f121c
>>
>> [2]
>> https://github.com/openbmc/phosphor-pid-
>control/blob/a7ec8350d17b70153
>> cebe666d3fbe88bddd02a1a/pid/fancontroller.cpp#L86
>>
>>
>> Thanks,
>>
>>
>> Hank Liou
>>
>> Quanta Computer Inc.
>>
>>

Sincerely,
Hank


More information about the openbmc mailing list