The type of sensor value in redfish should be double or int64?
Brad Bishop
bradleyb at fuzziesquirrel.com
Wed Oct 16 06:04:38 AEDT 2019
at 11:17 AM, Patrick Venture <venture at google.com> wrote:
> On Mon, Oct 14, 2019 at 7:57 PM Carol Wang <karo33bug at gmail.com> wrote:
>> Hi,
>>
>> I tried to override sensor values with redfish Patch, referring to the
>> Voltages example of
>> https://github.com/openbmc/bmcweb/search?q=413961de&type=Commits, but
>> met an error "Invalid argument". Comparing the code
>> https://github.com/openbmc/bmcweb/blob/master/redfish-core/lib/sensors.hpp#L2192
>> and the doc
>> https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/Sensor/Value.interface.yaml#L21,
>> the current code uses double type, but the doc says the value type
>> should be int64. It seems a scale difference. Why the code uses double
>> here?
>
> The short answer is, code generally authored by Intel uses doubles for
> the sensor values, whereas the original OpenBMC sensor models used
> int64.
>
> A while back there was a bit of a debate about this, and it looks like
> we never truly resolved it. Brad, perhaps this is a good time to?
Is it possible to get bmcweb supporting patch with double and int? On the
surface this seems like the shortest path to enabling Carol.
> The idea is, that with the int64 storage, we store the raw value and
> we also store the scaling factor, so that one can scale the number if
> they choose to. Sort of keeping the values as they are -- instead of
> operating on them before publishing them to dbus. We do notably
> however, modify values in phosphor-hwmon before publishing them as
> often there are scaling factors and offsets, beyond the conversion
> from mC to C.
>
> phosphor-host-ipmid's sensor YAML requires the type to be specified
> for the sensor value interface already, and does validly support both
> types: int64_t and double (I tested it when I briefly had a mixed
> environment).
> phosphor-hwmon reports values without applying the scaling factor, but
> it is aware of the scaling factor, so it could.
> phosphor-pid-control works with both types correctly.
>
> I'm not sure about the phosphor-fan stuff, but I imagine we'll find
> some arithmetic we can drop where it ingests values.
>
> This change from int64 to double is big enough though that many
> configuration files would need to be adjusted, which is non-trivial.
> I argue however that having code that doesn't have a common interface
> or interfaces for sensors is less than ideal. Having multiple options
> for talking to sensors is fine, but in my opinion this is only true if
> they implement different interfaces, or the same interface. In this
> case, we have dbus-sensors and phosphor-hwmon which both implement the
> same interface, but differently: int64 vs double.
I agree. This whole situation is…unfortunate. I wonder if there is a
lesson to be learned here?
> I think using doubles makes sense at the dbus level because generally
> one wants that version of the value. Therefore you end up with code
> in each daemon that reads the sensor value and the scale so that it
> can perform the same operation that another daemon is also going to
> perform, etc. Instead of just doing it once.
>
> I'll climb off my debate box now and climb onto my voting box and say,
> I'd like to make phosphor-hwmon report the value as double
Why? Do you have a desire for this specifically or is it just to solve
Carol’s issue?
> and I'm
> willing to review incoming patches that address other aspects of the
> codebase to bring it all together -- since they'll need to be in a
> locked step-forward.
>
>> Thanks!
More information about the openbmc
mailing list