Swampd PID-driven Fan Controller

Patrick Venture venture at google.com
Wed Jun 28 02:51:31 AEST 2017

Per the requirements to have a fan controller for the quanta-q71l that
runs within the OpenBMC framework+, I developed the swampd
application.  It was designed to leverage sdbusplus and other OpenBMC
libraries and coding standards.

It supports:
* build-time yaml descriptions of the sensors and PID loops
* run-time configuration of the above
* run-time fan speed set-point control
* IPMI controlled manual mode
* passively and actively read sensors
* sensors that are from the host
* any variation on sysfs IO that is configured.

The design document is too large to really paste in this email, so
I'll summarize.

Each sensor is created based on the configuration provided.  Each PID
loop is created per zone.  Each zone lives on a separate thread (could
be merged into one thread that iterates through zones).  The zone
loops every 0.1s to steer the fans closer to their goal while every
second it adjusts the goal.

Some things I know OpenBMC won't like: it's multi-threaded.  It wasn't
built into the current fan-presence package.

I'm at a crossroads with this project because I'd like to make it
generally available.  Should I try to submit it for review on this
list, if so, how?  Or should I push it to Google's github projects

+As well as other requirements.


More information about the openbmc mailing list