-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add D-Bus interface to monitor and control individual PID loops #27
Comments
Harvey Wu bought up a good point in the Discord chat. The zone itself should also have a |
How should PID loops be addressed? Should names or numbers be used? The As for
This is an extension of what is currently in the code as of now (just Alternatively, a more freeform naming scheme:
ZONE and PID would be arbitrary strings (subject to D-Bus naming restrictions), chosen by the user, from the I'm adding the hardcoded names Which is preferred? |
Thought about it a little more. Zone and PID numbers are mandatory, and will be auto-assigned in the sequence that https://github.com/openbmc/phosphor-pid-control/blob/master/ipmi.md Zone and PID names are optional, and are used mostly to ensure uniqueness when using the new So, we can't address by zone name or PID name, because names won't be there always. So, let's use numbers, like I propose adding name as a new field, |
@Krellan setting a zone to manual mode , is simply skip the pidcontrol loop but for pidloop , it can be thermal controller type or fan controller type thanks |
Manual mode is something that can already be set. There's already an existing D-Bus interface to control that. Manual mode has to be set on a per-zone basis, because it needs to disable all PID loops in the zone, as you pointed out in the line of code you linked above. This is a proposal for exposing a new D-Bus interface, for use by both PID loops and by thermal zones. No changes to the existing thermal zone D-Bus interface would be made. Other than that, sorry, I don't fully understand your question. |
hello Krellan: |
The monitoring interface should, perhaps, be split up from the control interface. This might make upstream acceptance easier to achieve. The monitoring interface can also then have wider permissions than the control interface. |
@Krellan please go check out |
I forgot to mention |
There are really 3 pieces to this puzzle, each of which I should have probably split out as a separate GitHub issue number earlier, but unfortunately, did not:
|
Hi Krellan, I have some questions. |
That is a good question. (Input, Output, Setpoint, Leader) = These are best for a thermal PID loop or a fan PID loop. I can see how they would be confusing to use for a thermal zone as a whole, though, especially if the zone has more than one fan PID loop. Are there any systems like this in the field? All thermal zones that I have worked with, have multiple thermal PID loops, but only one fan PID loop. If the thermal zone has only one fan PID loop, then (Input, Output, Setpoint, Leader) for the thermal zone as a whole can mirror the information from the fan PID loop. That will save the user the trouble of having to iterate through all of the loops to figure out which one was the fan loop. However, if the thermal zone has more than one fan PID loop, then this would not be practical. Any thoughts? |
- According to the issue#27, adding new interface to record the driver sensor name, driver sensor value and PID loop result to dbus. interface: Debug.Pid.ThermalPower => Record the sensor name and reading with the highest temperature or power in the input list. And record the result of pid loop Debug.Pid.Zone => Record the pid config name that that is driving the fans refs: openbmc/phosphor-pid-control#27 Change-Id: I67051616958e07c148eabee658165082855c674d Signed-off-by: Harvey Wu <Harvey.Wu@quantatw.com>
Currently,
phosphor-pid-control
includes a control interface over D-Bus, but only for an entire PID zone as a whole:xyz.openbmc_project.State.FanCtrl
service name/xyz/openbmc_project/settings/fanctrl/zoneX
objects published under that servicexyz.openbmc_project.Control.Mode
interface added to those objectsThis currently exposes 2 boolean values:
FailSafe
for seeing if a zone is in failsafe mode or notManual
for disabling PID control completely for this zone (so fan speed can be manually set by user)It would be nice to have a similar control interface, but for an individual PID loop. Each PID loop managed by
phosphor-pid-control
would be allocated its own D-Bus object featuring this control interface, similar to how each thermal zone is currently given its own D-Bus object.Things that would be nice to allow control of:
Enable
for enabling/disabling this PID loop's contribution to the zone's fan speed calculations, without affecting other PID loops in the zone. This would be nice for tuning. It would allow tuning of one PID loop at a time, by selectively disabling all the other PID loops.Things that would be nice to reveal, in a read-only way, about the state of an individual PID loop:
Leader
to show the name (string) of the input to this PID loop that is currently the leader, driving the thermal PID loop, that is, the component with the highest temperature (or the lowest thermal safety margin).Input
to show the input value of this PID loop, in other words, the temperature (or margin) of the leader.Output
to show the output value of this PID loop, in other words, the RPM required of the fans, to keep the leader cool enough to achieve the desired setpoint.These fields are also appropriate for the fan PID loop:
Leader
could show the name of the thermal (or margin) PID loop that is currently the leader, driving the fan PID loop, that is, the thermal PID loop that requested the highest fan RPM.Input
to show the input value of this fan PID loop, in other words, the requested RPM of the fans.Output
to show the output value of this fan PID loop, in other words, the PWM percentage value to be commanded to the fan hardware.Any other things that would be nice to reveal, while we have the chance? It might be nice to clean up the mapping of zones to individual PID loops: as of now, the zones are nicely enumerated under their existing control interface, however, individual PID loops are not easily enumerated in any way except by exhaustive search within
entity-manager
inventory. It might be nice to add some cross-referencing, for example, each zone could contain an array of all the PID loops that comprise that zone.The text was updated successfully, but these errors were encountered: