Linux und Windows HelpDesk

Supermicro IPMI FAN-Thresholds anpassen.

Hat man seinen Server nicht in einem 19 Zoll Gehäuse mit seinen 40mm "Turbinen" sondern in ein Tower Gehäuse eingebaut kann es vorkommen, dass immer wieder der Lüfter Alarm ausgelöst wird. Dabei fahren die Lüfter auf die maximale Geschwindigkeit und anschließend wieder herunter.
Dieses Verhalten ist insbesondere bei den PUE-Profilen (FAN-Mode PUE / PUE2 / PUE3) und Verwendung von 120mm Lüftern zu beobachten. Die Ursache ist, dass in den PUE-Profilen die Leistung für die Lüfter sehr weit abgesenkt wird und dadurch die unteren Grenzwerte (Thresholds) von vielen Lüftern unterschritten werden. Oft ist es so, dass das Profil "Optimal", welches meist gut funktioniere, nicht mehr zur Verfügung steht, wenn ein PUE-Profil vorhanden ist.

Welche Profile (FAN-Mode) auf dem Mainboard verfügbar sind und welches Profil aktuell verwendet wird, kann man auf diese Art abfragen.

# ipmicfg -fan
Current Fan Speed Mode is [ PUE2 Optimal Mode ]

Supported Fan modes:
0:Standard
1:Full
3:PUE2 Optimal
4:Heavy IO

Hier sieht man, dass der FAN-Mode 2 "Optimal" nicht mehr zur Verfügung steht.

Will man ein PUE-Profil verwenden kann man geeignete Lüfter verbauen, die eine hohe maximale Geschwindigkeit haben und damit auch im unteren Leistungsbereich noch ausreichend schnell drehen oder Lüfter, die eine ausreichend hohe, festgelegte minimale Geschwindigkeit (PWM 0%-20%) haben und dadurch keinen Alarm auslösen. Ist die Kühlleistung mit den vorhandenen Lüftern in den PUE-Profilen aber ausreichend, kann man auch bedenkenlos im IPMI die unteren Grenzwerte der Lüfter anpassen, die einen Alarm auslösen.

Zunächst kann man sich mit diesem Befehl die Thresholds des jeweiligen Lüfters anzeigen lassen. Weiß man den Namen des Lüfter nicht, kann man sich mit ipmitool sensor zunächst alle Sensoren auflisten lassen.

# ipmitool sensor get "FAN7"
Locating sensor record...
Sensor ID              : FAN7 (0x47)
 Entity ID             : 29.7
 Sensor Type (Threshold)  : Fan
 Sensor Reading        : 825 (+/- 0) RPM
 Status                : ok
 Lower Non-Recoverable : 300,000
 Lower Critical        : 450,000
 Lower Non-Critical    : 600,000
 Upper Non-Critical    : 18975,000
 Upper Critical        : 19050,000
 Upper Non-Recoverable : 19125,000
 Positive Hysteresis   : 75,000
 Negative Hysteresis   : 75,000
 Assertion Events      :
 Assertions Enabled    : lcr- lnr- unc+ ucr+ unr+
 Deassertions Enabled  : lcr- lnr- unc+ ucr+ unr+

Die drei unteren Grenzwerte können nun mit diesem Befehl geändert werden. Die hier angegebenen Geschwindigkeiten passt man natürlich an seine Bedürfnisse an.
Es ist möglich, dass nur bestimmte Schrittweiten zulässig sind. Dann werden die eingegebenen Werte, die nicht in dieser Schrittweite liegen automatisch, bis zum nächstgelegenen Schritt, abgeändert.

# ipmitool sensor thresh FAN7 lower 225 375 450
Locating sensor record 'FAN7'...
Setting sensor "FAN7" Lower Non-Recoverable threshold to 225,000
Setting sensor "FAN7" Lower Critical threshold to 375,000
Setting sensor "FAN7" Lower Non-Critical threshold to 450,000

Nicht bei allen Supermicro Mainboards bleibt diese Anpassung dauerhaft, auch beim trennen vom Strom oder Neustart des IPMI bestehen. In diesem Fall kann man sich z.B. ein Init-Script erstellen, welches die Anpassung bei jedem Serverstart erneut ausführt.

Um zu überprüfen, ob die gemachten Änderungen permanente im IPMI hinterlegt sind, kann man den SDR des jeweiligen Lüfter abrufen.

# ipmitool sdr get "FAN7"
Sensor ID              : FAN7 (0x47)
 Entity ID             : 29.7 (Fan Device)
 Sensor Type (Threshold)  : Fan (0x04)
 Sensor Reading        : 825 (+/- 0) RPM
 Status                : ok
 Nominal Reading       : 9600,000
 Normal Minimum        : 1500,000
 Normal Maximum        : 12750,000
 Upper non-recoverable : 19125,000
 Upper critical        : 19050,000
 Upper non-critical    : 18975,000
 Lower non-recoverable : 225,000
 Lower critical        : 375,000
 Lower non-critical    : 450,000
 Positive Hysteresis   : 75,000
 Negative Hysteresis   : 75,000
 Minimum sensor range  : Unspecified
 Maximum sensor range  : Unspecified
 Event Message Control : Per-threshold
 Readable Thresholds   : lnr lcr lnc unc ucr unr
 Settable Thresholds   : lnr lcr lnc unc ucr unr
 Threshold Read Mask   : lnr lcr lnc unc ucr unr
 Assertion Events      :
 Assertions Enabled    : lcr- lnr- unc+ ucr+ unr+
 Deassertions Enabled  : lcr- lnr- unc+ ucr+ unr+

Sind die gemachten Änderungen auch im SDR zu finden, so sind sie permanent im IPMI hinterlegt und werden nur durch einen Werksreset oder eine erneute eigene Änderung überschrieben. Werden im SDR weiterhin die ursprünglichen Werte aufgeführt, müssen die Werte bei jedem Neustart des IPMI erneut hinterlegt werden.

Supermicro stellt im IPMI mehrere Profile bereit, bei denen die Lüfter in verschiedenen Bereichen arbeiten.
  • Full-Speed: PWM 100%
  • Standard: PWM 100%-50%
  • Optimal: PWM 100%-30%
  • Havy IO: PWM 100%-50%
    FAN A/B PWM 100%-75%
Zu den PUE-Profilen mach Supermicro auch auf Nachfrage keine Angaben, wie weit die Leistung der Lüfter reduziert wird.