Stromsparendes NAS mit Haswell

Weil mein bisheriges "Fertig"-NAS eines großen Herstellers mir einmal zu oft auf die Nerven ging (diesmal weigerte es sich nach einem Systemupdate mein TimeMachine Backup weiter zu führen), beschloss ich, die Zeit nicht auf eine weitere Reparatur-Aktion in den Eingeweiden des aufs schlimmste zerpatchten BusyBox-Linux zu verschwenden, sondern in ein eigenes NAS aus Einzelkomponenten zu investieren und ein Linux meiner Wahl darauf zu installieren.

Heraus kam ein System mit einem Energiebedarf zw. 11.7W und 23.5W Idle (Details weiter unten), womit ich sehr zufrieden bin. Meine bisherige Lösung1 kam auf 30W bis 45W im Idlezustand. Weil mich einige Leute gefragt haben, wie Komponenten und Konfiguration aussehen, überreisse ich es hier:

Die Hardware

Der Server soll 24h am Tag laufen, deshalb war Energieeffizienz das erste Kriterium, gefolgt von einem guten Verhältnis zwischen Leistungsfähigkeit und ihrem Preis. Meine Komponentenliste:

  • ein Intel Core i3-4330, 2x 3.50GHz Prozessor
  • ein MSI H97M ECO Mainboard
  • ein Scythe Mugen 4 Lüfter
  • das Netzteil ist ein Enermax Triathlor ETL300AWT mit 300W
  • fürs System eine Samsung SSD 840 EVO 120GB SSD
  • 4GB irgendwelcher DDR3 Ram
  • irgendein Micro-ATX Gehäuse

Meine Einkaufsliste mit aktuellen Preisen: bei geizhals.de

Zum Prozessor: Die 4. Generation Core-i Prozessoren, "Haswell", ist in meinen Augen eine für mein Vorhaben ideale Mischung aus Leistungsfähigkeit und niedrigem Energieverbrauch im Idle-Zustand. Mein System wird die meiste Zeit des Tages nichts tun, aber wenn es etwas tut, hat es ordentlich Power. Für den Idle-Stromverbrauch ist es praktisch egal, welche der Haswell-CPUs man verwendet. Die TDP-Angaben spielen kaum eine Rolle, denn sie beziehen sich auf den Verbrauch unter Last. Auch die S und T Varianten, die den TDP unter Leistungseinbußen senken, verschlechtern das Gesamtergebnis (volle Power, wenn es drauf ankommt). Im Idle-Zustand dürften die CPUs nahezu identisch sein. Ich entschied mich der Preis-/Leistung wegen für einen schnellen Dual-Core i3.

Das Mainboard kam diesen Monat erst auf den Markt, weshalb ich keine Tests dafür fand. Es war quasi ein Testkauf. Im Nachhinein ist es OK. Es ist vielleicht nicht die allerbeste Wahl, weil es die Stromspar-Versprechen, die es macht vielleicht verglichen mit dem Wettbewerber-Mittel hält, aber es gibt Boards die noch das ein oder andere Watt effizienter sind, z.B. das Intel-Mainboard DH87RL. Leider hat der 8-Series Chipsatz einen Bug bei USB3, den Intel auf seinem Board nicht mehr behebt und darüber hinaus die ganze Mainboard-Linie einstellt. Sehr schade. Boards, denen man im Netz ebenfalls einen geringen Stromverbrauch im Zusammenhang mit Haswell-CPUs nachsagt kommen von Asrock, z.B. das B85M-ITX. Ich habe es aber nicht getestet.

Besonders wichtig ist das Netzteil. Damit es überhaupt funktioniert, muss es zum einen die Low-Power-States der Haswell-Generation überhaupt erst unterstützen, und zum anderen muss auch bei solchen niedrigen Lastfällen effizient arbeiten. Leider sagt das 80+ Logo nichts über den Wirkungsgrad in diesem Bereich aus. Es bleibt also wirklich nur das Testen, oder Erfahrungen im Netz zu recherchieren.

So niedrig der Strombedarf der Haswell-CPUs im Idle-Zustand auch sein mag... unter Last werden sie ordentlich heiß und müssen aktiv gekühlt werden. Ich entschied mich deshalb für einen mächtigen Tower-Kühler mit großem Lüfter, der sich dafür nur im Bedarfsfall drehen soll. Die meiste Zeit wird die CPU so durch den Gehäuselüfter (auf den ich wegen den Festplatten nicht verzichten möchte) mit gekühlt.

Für das Betriebssystem wählte ich eine SSD, weil sie wenig Strom verbraucht, und es mir den Spindown der Daten-Festplatten erleichtert, wenn ich mir keine Gedanken machen muss ob und wann Komponenten des Betriebssystems gerade auf die Systempartition schreiben.

Die Festplatten kommen aus meinem bisherigen NAS. Momentan sind das zwei 2 TB Platten, eine Seagate und eine Hitachi. Wobei die Hitachi-Platte einen ungünstig hohen Stromverbrauch hat, sogar im Standby (Spindown)-Zustand. Dazu kommt, dass die Platten mit 7200rpm eigentlich zu schnell sind. Würde ich mir neue Festplatten kaufen, würde ich darauf achten, dass es langsame Platten mit niedrigem Verbrauch, v.A. im Standby sind. Und natürlich, dass sie dabei keinen Unsinn machen, wie die Köpfe von selbst alle paar Sekunden zu parken.

Das Gehäuse, für das ich mich entschieden habe, macht einen ausserordentlich robusten Eindruck, ist sehr gut verarbeitet, und ziemlich schwer. Es kommt mit zwei 12cm 3-pin-Gehäuselüftern, von denen ich nur den hinteren betreibe. Ausserdem ist eine Lüfterregelung dabei, die die Spannung des Lüfters per Poti zw. 12V und 6.5V einstellbar macht. Bei der niedrigsten Einstellung braucht der Lüfter noch etwa 0.5W, und ist meinem Eindruck nach immer noch stark genug, genügend Luft durch das an den Seiten relativ dichte Gehäuse zu ziehen, um die Festplatten ausreichend zu kühlen.

Die Konfiguration (im Bios)

Das Bios des MSI-Boards ist klicki, bunti, und irgendwie noch nicht ganz fertig. Einige Einstellungen, die man am Board vornehmen kann, sind nur über die beigelegte Windows-Software möglich, andere nur im Bios-Setup. Naja, das Board ist neu, vielleicht gibt es ja noch ein Update.

Eine weitere Merkwürdigkeit ist, dass das Setup zwar Stromspar-Presets anbietet, aber in allen diesen Presets der Power-State der CPU hart auf C3 limitiert wird. Mag sein, dass das mit Kompatibilität zu einer älteren Core-i Generation zusammenhängt, aber es ergibt keinen Sinn für eine Haswell-CPU. Man kann diese Einschränkung umgehen, indem man einfach die Presets nicht verwendet, sondern alles manuell konfiguiert:

  • ECO -> Cut Power -> PCI slot [Disabled]
  • ECO -> CPU Features -> Intel Adaptive Thermal Monitor [Enabled]
  • ECO -> CPU Features -> Intel C-State [Enabled]
  • ECO -> CPU Features -> C1E Support [Enabled]
  • ECO -> CPU Features -> Package C State Limit [C7s]
  • ECO -> CPU Features -> LakeTiny Feature [Enabled]
  • Settings -> Advanced -> Integraded Peripherals -> SATA Mode [AHCI Mode]
  • Settings -> Advanced -> Integraded Peripherals -> SATA* Hot Plug [Disabled]
  • Settings -> Advanced -> Integraded Peripherals -> HD Audio Controller [Disabled]
  • Settings -> Advanced -> Intel(R) Smart Connect Configuration -> ... [Disabled]

Im "Hardware Monitor" Teil des Bios kann man die Regelung des CPU- und Gehäuselüfters (sofern man einen 4-Pin Gehäuselüfter hat) anpassen.

Um den CPU-Fan so einzustellen, dass er erst ab einer bestimmten Core-Temeratur anfängt zu drehen, benötigt man leider die Windows-Software. Ich habe diesen Schwellwert bei mir auf 42°C eingestellt.

Die Konfiguration (Linux)

Ich verwende Ubuntu 14.04, aber die Distribution ist eigentlich völlig egal. Die meisten Standard-Kernel sind Multifunktionskernel die mit allen modernen Stromsparmechanismen klar kommen. Der Kernel sollte natürlich nicht älter sein als die Architektur. Am einfachsten verwendet man einen möglichst aktuellen Kernel.

Powertop

Den Rest erledigt das Tool Powertop:

apt-get install powertop

Es kann Statistiken über die aktuellen Core-i Powerstates anzeigen, sowie Hinweise auf Prozesse geben, die die Low-Power-Cycles regelmässig unterbrechen. Ausserdem prüft es das System auf Einstellungen, die sich ungünstig auf dem Stromverbrauch auswirken, und kann diese ggf. auch gleich über die entsprechenden Einstellungen in /proc (die es in neueren Versionen auch anzeigt) beheben. Im sorgenfreien automatik-Modus sorgt es in der rc.local dafür, dass bei jedem Systemstart alles von selbst eingestellt wird. Alternativ kann man sich natürlich auch ein eigenes Shellscript basteln.

/etc/rc.local

#!/bin/sh -e

powertop --auto-tune
exit 0

hdparm

Ich schicke meine Festplatten nach etwa anderthalb Stunden ohne Zugriffe in den Standby-Modus, in dem der Controller den Motor der Platte bis zum nächsten Zugriff abschaltet. Welcher Zeitraum hier geeignet ist hängt vom individuellen Gebrauch ab. Auf der einen Seite sollte man seine Festplatten nicht unnötig oft an-/abschalten, weil es die Mechanik belastet. Auf der anderen Seite möchte man Strom sparen. Da mein Notebook stündlich sein Backup auf dem NAS aktualisiert, sorgt der gewählte Zeitraum dafür, dass die Platten nicht abgeschaltet werden während jemand "am Computer" ist.

Manuellen Standby triggern (z.B. um zu sehen ob die Platte das überhaupt kann):

hdparm -y /dev/sdX

Automatischer Standby nach eingestellter Zeit:

hdparm -S <delay> /dev/sdX

Aktuellen Status anzeigen:

hdparm -C /dev/sdX

Über /etc/hdparm.conf kann man die Einstellungen persistent konfigurieren. Lest bitte die Manpage, die Einstellungen für -S sind nicht intuitiv.

Ergebnis

Für die Messungen des Strombedarfs verwendete ich ein Profitec KD-302 von Reichelt (inzwischen leider nicht mehr lieferbar), das bei einem Test in der c't 2008/24 auch bei geringen kapazitiven Lasten sehr gut abgeschnitten hat.

  • 11.7 Watt mit SSD, ohne weitere Festplatten, Idle
  • 13.6 Watt mit SSD, mit Festplatten im Standby (Spindown), Idle
  • 23.5 Watt mit SSD, mit Festplatten, Idle

Ich bin sehr zufrieden damit. Wenn man das Intel-Board verwendet (und den USB-Bug in Kauf nimmt), würde man sich wahrscheinlich noch 1-2 Watt sparen, und käme damit ohne Festplatten vielleicht auf ~10W. Bei den Festplatten würde ich beim nächsten Kauf zu langsameren Platten greifen. Falls 2TB reichen, und der Preis nachrangig ist, könnte man auf 2.5'' Platten wechseln, die ohne Lese-/Schreib-Zugriffe nur ca. 0.8W brauchen. Durch beide Maßnahmen ließe sich der gesamte Verbrauch im Idle-Zustand womöglich auf unter 13W reduzieren.

Ausserdem könnte man beim RAM und beim Gehäuselüfter noch etwas sorgfältiger wählen, und vielleicht noch etwas rausholen. Auf Undervolting der CPU und des Speichers habe ich bewusst verzichtet.

Tags: NAS, Haswell