hardcoded median function in phosphor-virtual-sensor

Matt Spinler mspinler at linux.ibm.com
Tue Jan 5 09:57:51 AEDT 2021



On 1/4/2021 2:54 PM, Vijay Khemka wrote:
> On Mon, Jan 4, 2021 at 9:49 AM Matt Spinler ...
> This Message Is From an External Sender
> This message came from outside your organization.
>
>
>
> On Mon, Jan 4, 2021 at 9:49 AM Matt Spinler <mspinler at linux.ibm.com 
> <mailto:mspinler at linux.ibm.com>> wrote:
>
>     Hi,
>
>     Just putting on the list what was decided after some lengthy
>     discussions
>     on discord.
>
>     I need a median of some sensor values, where this median sensor has
>     threshold interfaces
>     whose values must be defined in entity-manager.  Since exprtk
>     expressions are not allowed in
>     entity-manager, I cannot just port the PVS's JSON config into an
>     entity-manager config.
>
> I missed this discussion but why can't we simply use virtual sensor as
> expertk provides median function and we have threshold support for
> each virtual sensor. Please help, if I am missing anything.

If you're asking why can't we just have PVS get its exprtk expression to
use from entity-manager, and encode the median there, it's because Ed
doesn't want exprtk in entity-manager config files (I'll defer to him on 
the reasons).

If you're asking now that the median function is hardcoded, why write it in
C++ instead of exprtk, it's because the exprtk code would be so similar to
C++ code (skip the bad values, put the sensors in a vector,  call 
nth_element)
that writing it in exprtk doesn't really buy us anything, and using C++ lets
me skip making the symbol table.

>     Instead, I will make a new entity-manager config that will have the
>     component sensors
>     along  with the thresholds to use, with a subtype of median, vaguely
>     something like:
>
>     {
>
>     Type: "VirtualSensor"
>
>     Name: "MySensorName"
>
>     Subtype: "Median"
>
>     Sensors: [ "Sensor1", "Sensor2", .... ]
>
>     ThresholdsWithHysteresis [ ]
>
>     minInput: 0
>
>     maxInput: 100
>
>     }
>
>
>     The minInput/maxInput are needed so we don't use garbage sensor
>     readings
>     in the median
>     algorithm.  PVS will look for this config to be provided on D-Bus by
>     entity-manager, and if
>     it's there it will calculate the median (in C++, not exprtk) and
>     use it
>     as the virtual sensor value.
>
>     Thanks,
>     Matt
>



More information about the openbmc mailing list