Nachdem ich aus Zeitmangel leider eine etwas längere Pause einschieben musste, ging es dieses Wochenende mit den Bastelarbeiten am neuen Heimserver weiter. Zuletzt war ja noch die Baustelle der noch nicht abgeschlossenen Optimierung des Stromverbrauchs offen. Nach einer etwas systematischeren Suche bin ich dem Übeltäter nun auf die Schliche gekommen: Ausgangspunkt waren die folgenden Zeilen, die ich auf der Basis der Empfehlungen von powertop gleich als erstes in die /etc/rc.local eingefügt hatte und die das S-ATA-Link-Powermanagement einschalten:
echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy' echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy' echo 'min_power' > '/sys/class/scsi_host/host2/link_power_management_policy' echo 'min_power' > '/sys/class/scsi_host/host3/link_power_management_policy' echo 'min_power' > '/sys/class/scsi_host/host4/link_power_management_policy' echo 'min_power' > '/sys/class/scsi_host/host5/link_power_management_policy' |
Man erkennt zwei eigentlich wenig überraschenden Dinge: Zum einen taucht im Pfad ein „scsi_host“ auf (S-ATA-Geräte werden unter Linux ja traditionell als SCSI-Geräte behandelt) und die Hosts (hier also die unterschiedlichen S-ATA-Ports des Mainboards) sind von 0 bis 5 durchnummeriert. Durch den Einbau des zusätzlichen SCSI-Controllers geriet diese Ordnung allerdings ins Wanken, denn der Controller muss ja als weiterer SCSI-Host irgendwie von Linux angesprochen werden. Das Problem dabei war bzw. ist ebenfalls zweischichtig: Zum einen ist es in meiner Hardwarekonfiguration anscheinend nicht 100%ig deterministisch, ob der Adaptec nun als host0 (wodurch sich die S-ATA-Ports auf die Hosts 1–6 verschieben) oder als host6 eingebunden wird. Zum anderen existiert im Pfad des SCSI-Controllers die Datei link_power_management_policy nicht.
Damit ist klar, was passiert war: In ca. ¾ aller Fälle wurde der SCSI-Controller als host0 eingebunden, dadurch existierte die Datei /sys/class/scsi_host/host0/link_power_management_policy nicht und das Skript /etc/rc.local schmierte gleich nach der ersten Zeile ab. Als Lösung habe ich den Block einfach um zwei if-Abfragen erweitert:
if [ -f '/sys/class/scsi_host/host0/link_power_management_policy']; then echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy' fi echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy' echo 'min_power' > '/sys/class/scsi_host/host2/link_power_management_policy' echo 'min_power' > '/sys/class/scsi_host/host3/link_power_management_policy' echo 'min_power' > '/sys/class/scsi_host/host4/link_power_management_policy' echo 'min_power' > '/sys/class/scsi_host/host5/link_power_management_policy' if [ -f '/sys/class/scsi_host/host6/link_power_management_policy']; then echo 'min_power' > '/sys/class/scsi_host/host6/link_power_management_policy' fi |
Nachdem ich dies umgesetzt hatte, scheinen die diversen Energiespar-Optionen nun zuverlässig zu greifen. Als Erfolg verbraucht der Server nun im absoluten Idle und mit abgeschalteten HDDs 20,4 W. Das ist zwar deutlich mehr als die von der c’t angegebenen 12 W, allerdings stecken bei mir ja auch zwei zusätzliche PCIe-Karten im System, wobei eine davon (der SCSI-Controller) eigentlich aus dem Serverbereich stammt und zudem aus einer Zeit, in der Stromsparen in der IT noch nicht so populär war wie heute. Von daher will ich mich mal nicht beschweren. Sparsamer als der aktuell laufende Dual-Pentium-III dürfte er allemal sein. 🙂
Als nächstes steht nun die weitere Einrichtung des Systems an.
0 comments on “Neuer Heimserver, Teil 4 (Energieoptimierung II)”
1 Pings/Trackbacks für "Neuer Heimserver, Teil 4 (Energieoptimierung II)"
[…] (eine IBM IC35L073UCDY10-0) bei eBay gekauft. Den Fehler hatte ich zwar zwischenzeitlich auch so gefunden, allerdings wollte ich die Festplatte testweise trotzdem in Betrieb nehmen. Schon alleine deswegen, […]