<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 05/02/17 4:33 PM, Patrick Venture wrote:<br>
    <blockquote
cite="mid:CAO=notyO9vNR-QcbUFMHhdw+EB64k0x-fM4ycwxF7G_Ck_xUiA@mail.gmail.com"
      type="cite">
      <div dir="ltr">Fantastic!  Thanks for elaborating.
        <div>
          <table class="gmail-Bs gmail-nH gmail-iY" style="width:1363px"
            cellpadding="0">
            <tbody>
              <tr>
                <td class="gmail-Bu"><br>
                  >> Please elaborate on how the control program
                  will execute it's "pluggable" algorithm?<br>
                  > Filling out the associated yaml file for the
                  control application defines how the algorithm will
                  control the fan speeds based on the values, sensors
                  listed, delays, etc.. that will be supported as
                  parameter inputs to the algorithm.<br>
                  <br>
                  What do you mean by "delays?"<br>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    </blockquote>
    No prob, so in our design each temperature sensor that's an input to
    the control algorithm has a defined RPM delta for each degree above
    or below a defined "nominal" temperature range. For each sensor
    read, the maximum RPM delta based on their reported temps are
    written as the new speed target for the zone they are included in.
    After that occurs, any more RPM deltas determined from the sensor
    readings are ignored for a set amount of time(delay), unless the RPM
    delta is larger than the previous RPM change. If that happens, the
    difference in RPM deltas is then written as the new speed target for
    the zone they are included in again.<br>
    <br>
    Not sure if that describes it well enough, but for example:<br>
    Given a core temp's "nominal" temperature range is 75-78C, if that
    core reports a temp of 79C with a defined RPM increase delta of
    300rpms per degree above, then the fans in the zone containing this
    core are increased 300rpms. After that increase is requested, no
    increase requests 300rpm and less are done until after the delay
    interval has passed. Whereas if another core is reported at 80C,
    resulting in a 600rpm increase request during that delay interval,
    then an additional 300rpms are added to the previous target and the
    delay interval restarts. After the interval expires it considers all
    incoming deltas again.<br>
    <br>
    The delay interval is there to help eliminate unnecessary speed
    change requests while the fans are going to their target speed.
    Also, this minimizes the possibility for speed oscillations.<br>
    <br>
    Matt<br>
    <blockquote
cite="mid:CAO=notyO9vNR-QcbUFMHhdw+EB64k0x-fM4ycwxF7G_Ck_xUiA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <table class="gmail-Bs gmail-nH gmail-iY" style="width:1363px"
            cellpadding="0">
            <tbody>
              <tr>
                <td class="gmail-Bu"><br>
                  Patrick</td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Tue, May 2, 2017 at 2:21 PM, Matthew
          Barth <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:msbarth@linux.vnet.ibm.com" target="_blank">msbarth@linux.vnet.ibm.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000"><span class=""> On
                05/02/17 2:33 PM, Patrick Venture wrote:<br>
                <blockquote type="cite">
                  <div dir="ltr">Please elaborate on the format or
                    layout of the control configuration file.</div>
                </blockquote>
              </span> This will be a yaml file containing the zone and
              fan definitions with the associated set of parameters that
              feed into the control algorithm. Currently this contains
              the zone number, the zone initial speed, and the list of
              fans(including their inventory path, sensor name, etc...).<span
                class=""><br>
                <blockquote type="cite">
                  <div dir="ltr">
                    <div>Please elaborate on the mechanism planned to
                      import it into code?  Y'all often use python
                      programs to make c++, will that be the case here?</div>
                  </div>
                </blockquote>
              </span> Correct, that will be the case here as well.<span
                class=""><br>
                <blockquote type="cite">
                  <div dir="ltr">
                    <div>Please elaborate on how the control program
                      will execute it's "pluggable" algorithm?</div>
                  </div>
                </blockquote>
              </span> Filling out the associated yaml file for the
              control application defines how the algorithm will control
              the fan speeds based on the values, sensors listed,
              delays, etc.. that will be supported as parameter inputs
              to the algorithm.<span class=""><br>
                <blockquote type="cite">
                  <div dir="ltr">
                    <div>Please elaborate on how the fans will be
                      controlled?  Will that be as a group per system or
                      independently per zone?</div>
                  </div>
                </blockquote>
              </span> This will be configurable by the yaml file where
              the fan speeds are set on the zone, which a zone is a
              group of fans. These zones can be constructed as 1-to-many
              fans enabling individual fans being controlled or a group
              of fans being controlled similarly.<span class=""><br>
                <blockquote type="cite">
                  <div dir="ltr">
                    <div>  -- What is a zone?</div>
                  </div>
                </blockquote>
              </span> A grouping of fans<span class=""><br>
                <blockquote type="cite">
                  <div dir="ltr">
                    <div><br>
                    </div>
                    <div>Patrick</div>
                  </div>
                  <div class="gmail_extra"><br>
                    <div class="gmail_quote">On Tue, May 2, 2017 at
                      11:07 AM, Matthew Barth <span dir="ltr"><<a
                          moz-do-not-send="true"
                          href="mailto:msbarth@linux.vnet.ibm.com"
                          target="_blank">msbarth@linux.vnet.ibm.com</a>></span>
                      wrote:<br>
                      <blockquote class="gmail_quote" style="margin:0 0
                        0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex">Patrick,<br>
                        <br>
                        As Patrick mentioned a few of us have been
                        working on the fan control infrastructure
                        currently and wrote up a quick outline to share
                        our thoughts on the design layout. Let us know
                        if there are areas you'd like to see more
                        detail.<br>
                        <br>
                        Matt<br>
                      </blockquote>
                    </div>
                    <br>
                  </div>
                </blockquote>
                <br>
              </span></div>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </body>
</html>