Linux: Linux-Forum Linux: Linux-Forum

Zurück   Linux: Linux-Forum > Linux-Forum Wiki

Festplatten (Stromsparen)

Aus Linux-Forum Wiki

Wechseln zu:Navigation, Suche

Dieser Artikel befindet sich noch im Aufbau und ist somit unvollständig oder nicht detailiert genug.


Artikel von --Jean-Michel 03. Sep. 2009 (CEST)

Festplatten sind neben dem Prozessor und der Grafikkarte wohl einer der größten Stromfresser in einem System. Glücklicherweise kann man dem etwas entgegenwirken, ausserdem bringen die Hersteller mittlerweile stromsparendere Festplatten auf den Markt, oftmals mit den Buzzwords "Green IT" oder "Green" im Namen.

Inhaltsverzeichnis

Allgemeiner Hinweise

Einstellungen mit hdparm, sowie echo im /sys oder /proc Bereich sind nach einem Neustart nicht automatisch wieder gesetzt. Wie man das automatisieren könnte steht jeweils im entsprechenden Abschnitt. Ein vollständiges Init-Skript, sowie weitere Konfigurationsbeispiele könnt Ihr hier begutachten.

Nutzung von RAM

Je öfter auf die Festplatte zugegriffen wird und je mehr die Festplatte arbeiten muss, desto mehr Strom wird verbraucht. Das Ziel ist also die Festplatte zu entlasten in dem man beispielsweise viel mit Caching (zwischenspreichern von Daten z.B. im RAM) arbeitet.

Das virtuelle tmpfs Dateisystem

Automatisiert nach Neustart: Eintrag in /etc/fstab

In diesem Beispiel werden alle temporären Dateien in /tmp gespeichert welches sich auf /dev/md0 und somit auf der bzw. den Festplatten befindet. Bei jeder Anwendung die temporär Dateien in /tmp speichert haben wir nun also Festplattenzugriffe:

 wdp@yulivee ~ $ df -hT
 Filesystem    Type    Size  Used Avail Use% Mounted on
 /dev/md0      ext4    292G  217G   75G  75% /
 /dev/sdb1     ext3     92M   15M   72M  17% /boot

Abhilfe schafft hier möglicherweise das tmpfs:

 wdp@yulivee ~ $ df -hT
 Filesystem    Type    Size  Used Avail Use% Mounted on
 /dev/md0      ext4    292G  217G   75G  75% /
 /dev/sdb1     ext3     92M   15M   72M  17% /boot
 tmpfs        tmpfs    768M  8.0K  768M   1% /tmp
 tmpfs        tmpfs    4.0M     0  4.0M   0% /var/lock
 tmpfs        tmpfs    4.0M   60K  4.0M   2% /var/run

tmpfs ist ein Dateisystem welches die Daten im Pagecache des Kernels (dieser liegt im RAM) speichert, statt direkt auf der Festplatte. Wenn man sich die Mühe machen will, kann man mit einem Script alle lokalen Cache Verzeichnisse (Den Firefox Webcache in .cache, etc) ebenfalls auf tmpfs legen.

Die /etc/fstab dazu sieht wie folgt aus:

 tmpfs   /tmp            tmpfs   defaults,size=768m,nr_inodes=64m        0 0
 tmpfs   /var/lock       tmpfs   size=4m 0 0
 tmpfs   /var/run        tmpfs   size=4m 0 0

Da /tmp, /var/lock und /var/run keine Daten enthalten die über einen Reboot gesichert werden müssten, kann man diese also ruhig im RAM ablegen. /var/tmp allerdings ist ein Beispiel für ein Verzeichnis dessen Inhalt gemäß Linux Standard Base permanent sein muss, somit fällt diese Option hier weg.

Hardware spezifisches Tuning durch Software

Das Programm hdparm

Automatisiert nach Neustart: Eigenes Init-Skript

hdparm wird meistens genutzt um die Performance von Festplatten zu testen. Das Programm ist aber eigentlich dafür da, Einstellungen an Festplatten und Controllern vorzunehmen. Dabei möchte ich hier nur die interessantesten Möglichkeiten vorstellen.

Ein wichtiger Hinweis: Die falsche Verwendung von hdparm kann zu Festplattenschäden führen! Bitte benutzt hdparm daher nur wenn Ihr euch über die Funktionsweise im Klaren seit und schlagt die einzelnen Optionen in der Manpage nach! Die Benutzung geschieht auf eigene Gefahr. Auch funktionieren nicht alle Parameter bei allen Geräten. Beispielsweise ist von -m bei SATA Geräten abzuraten. -B funktioniert nur auf Platten die APM haben.

Einige Optionen:

  • -a
    • Mit dieser Option wird grundlegend bestimmt wieviele Sektoren(!) das Betriebssystem im Vorraus von der Festplatte lesen soll um so gerade bei großen Datenmengen einen Performance Vorteil zu bringen. Da die meisten Festplatten so ein Feature schon eingebaut haben, kann man darüber diskutieren ob es sinnvoll ist oder nicht. Wie auch immer - Je mehr die Festplatte in einem Gang liest, desto weniger muss sie im zweiten Gang arbeiten. Theoretisch könnte dieser Wert also sinnvoll sein.
  • -B
    • Mit dieser Option wird das "Advanced Power Management"-Feature gesetzt, sofern die Festplatte es unterstützt. Dabei kann ein Wert von 0-255 genutzt werden. 255 bedeutet aus, die schlechteste Performance und die beste Stromsparmöglichkeit gibt es mit der 1, die beste Performance und die schlechteste Stromsparmöglichkeit mit 254. Eine Besonderheit ist, das ein Wert zwischen 1 und 127 es ermöglicht das die Festplatte einen "spin-down" machen kann (Also den Motor der Festplatte ausschalten), bei einem Wert zwischen 128 und 254 ist dies nicht möglich. Ein Optimaler Wert liegt also zwischen 1 und 127.
  • -S
    • Mit dieser Option kann der Standby Timeout und die Festplatte in den "low-power" mode gesetzt werden. Quasi nach wievielen Sekunden soll die Festplatte den Motor ausstellen um Strom zu sparen sofern keine Aktivität auf der Festplatte war. Die Einstellung ist hierbei etwas komplizierter als die von -B. Bei diesem Wert muss man etwas nachdenken, so sind Server Festplatten dafür ausgelegt durchzulaufen. Desktop Festplatten sind dafür ausgelegt lange zu laufen. Mobile Festplatten sind dafür ausgelegt kurz zu laufen und viel mit Energiesparen zu machen. Das heisst: Server/Desktop Höhere Werte als Net/Notebook:
      • 0 ausgeschaltet
      • 1-240 = Multiple von 5 Sekunden ( 1 = 5 Sek, 2 = 10 Sek, 10 = 50 Sek, 12 = 60 Sek = 1min, etc )
      • 241-251 = Jede Nummer steht für jeweils 30 Minuten die je höher die Nummer ist, addiert werden: 241 = 30min, 242 = 60min, 243 = 90 min, etc)
      • 252 = 21 Minuten
      • 253 = Default Wert vom Hersteller zwischen 8 und 12 Stunden.
      • 254 = reserved/kein Wert
      • 255 = 21 Minuten + 15 Sekunden
  • -m
    • Dieser Wert ist interessant, aber in sehr seltenen Fällen durchaus gefährlich. Interessant ist er, weil es hierbei darum geht wieviele Sektoren gleichzeitig vom Gerät gelesen und geschrieben werden sollen. Normalerweise wird pro Interrupt ein Sektor verarbeitet. Hierbei könnte man pro Interrupt 2 oder mehr Sektoren verarbeiten. Bei einem Notebook und beim Stromsparen geht es darum Interrupts einzusparen - Daher ist dieses Feature interessant. Das Maximum lässt sich mit hdparm -iI /dev/xxx herausfinden - Die meisten Festplatten unterstützen 2, 4, 8 und 16 bei dieser Angabe. WD hat bei eigenen Festplatten kleinere Werte empfohlen (4 und 8) eine Einstellung zwischen 16 und 32 scheint optimal für die meisten Systeme.
  • -W
    • Davon abgesehen das ein Cache die Geschwindigkeit erhöht - Alles was gecached ist verringert den Aufwand und somit die Aktivität und dem damit verbundenen Stromverbrauch. Diese Option setzt Write Caching beim device an oder aus.

Zu beachten ist hier auch, diese Einstellungen werden nach einem Reboot wieder zum Defaultwert gesetzt. Effektiv benötigt man also ein Init Script hierfür.

SATA Aggressive Link Power Management

Automatisiert nach Neustart: InitScript

Viele SATA Festplatten nutzen die AHCI Spezifikationen und haben dadurch ein Feature namens ALPM (Aggressive Link Power Management). Durch dieses Feature wird der Link zur Festplatte in einen low-power-state gelegt wodurch man bis zu 1,5 Watt sparen kann. Effektiv wird dieser low-power-state immer dann kommen wenn die Festplatte nichts zu tun hat.

Die Unterstützung für dieses Feature befindet sich derzeit noch nicht in Linux, es ist jedoch möglich den Kernel zu patchen. Ob es in eurer Distribution ist, könnt ihr mit folgendem Befehl herrausfinden:

 cat /sys/class/scsi_host/host0/link_power_management_policy

Liefert dies eine Nachricht das die Datei nicht gefunden wurde, hat euer Kernel kein ALPM. Wenn vorhanden, kann man 3 Modes übergeben:

  • min_power
    • (SLUMBER) Dieser Mode setzt den Links in den lowest-power-state wenn kein I/O auf der Festplatte ist. Dieser Mode ist vorallem dann brauchbar, wenn davon auszugehen ist das die Festplatte öfter nichts zu tun haben wird.
  • medium_power
    • (PARTIAL) Dieser Mode setzt den Link in den zweit lowest-power-state wenn kein I/O auf der Festplatte ist.
  • max_performance
    • (DISABLED) ALPM ist ausgeschaltet - Es wird kein low-power-state genutzt

Innerhalb von /sys/class/scsi_host befinden sich mehrere Hosts. host0, host1, manchmal bis host4 oder mehr. Für jeden Host will man wahrscheinlich ALPM aktivieren. Den Modus setzen kann man mit echo:

 echo "min_power" > /sys/class/scsi_host/host0/link_power_management_policy

Sonstiges

VM Writeback Time

Automatisiert nach Neustart: /etc/sysctl.conf oder eigenes Init-Script

Der Linux Kernel versucht, I/O zusammenzufassen und "in einem Rutsch" zu schreiben. Dabei schreibt er per Default alle 5 Sekunden. Dies äussert sich im wahrscheinlichen Verlust einer gerade frisch erstellten Datei und anschliessendem erzwungenen Neustart:

 touch test.txt
 reboot -fn

Die Default Einstellung von 5 Sekunden mag zwar relativ sicher sein, ist aber eigentlich recht kurz. Wenn man seinen Festplatten etwas "mehr Zeit" gönnen möchte (und das sollte man), sollte man diesen Wert erhöhen. Empfohlen wird dabei 15 Sekunden (statt 5):

 echo 1500 > /proc/sys/vm/dirty_writeback_centisecs

Laptop Mode (KERNEL)

Automatisiert nach Neustart: /etc/sysctl.conf oder eigenem Init-Script

Den Laptop Mode zur Beeinflussung des I/O-Subsystems gibt es seit einigen Jahren im Linux Kernel. Ist er aktiviert, wird der Kernel versuchen mit I/O "smart" umzugehen und den Festplatten soviel Zeit wie möglich im low-power-state zu geben. Natürlich spart dies Energie ein. Im Prinzip ist es ein Variante des "VM Writeback Tipp" mit eingebauter Logik.

Aktivieren ist relativ einfach:

 echo 5 > /proc/sys/vm/laptop_mode

Den aktuellen Status kann man sich, wie bei fast allem innerhalb von /proc, via cat ausgeben lassen:

 cat /proc/sys/vm/laptop_mode

Weiterhin gilt hier zu sagen: Der Laptop Mode ist wirklich _nur_ das Kernel Feature (Also nur das setzen von vm.laptop_mode) manche Distributoren bieten auch ein Paket namens "laptop-mode" an (siehe nächstes Kapitel).

Laptop Mode (Paket/InitScript)

Einige Distribution, so beispielsweise Lunar Linux, bieten die "Laptop Mode Tools" als Paket an. Dieses Paket vereint meistens die Optimierungen die man ansonsten manuell tätigen müsste. Es kann und sollte daher bei Laptops bzw. Notebooks und Netbooks genutzt werden, kann aber auch in einem Desktop System sinnvoll sein. Die Laptop-Mode-Tools reagieren auch auf ACPI Ereignisse, was das ganze Paket recht interessant macht. Hier ein Beispiel:

 #
 # Disable all data loss sensitive features when the battery level (in % of the
 # battery capacity) reaches this value
 #
 MINIMUM_BATTERY_CHARGE_PERCENT=3


Ein gutes Mittel um unnötigen Datenverlust zu vermeiden. Um nur das Kernel Feature zu nutzen, benötigt man dieses Paket nicht. Zu beachten ist hier folgendes: Wenn Ihr selber SysCtl oder hdparm Einstellungen setzt, solltet Ihr dies nach dem Laden vom Laptop Mode tun, da das Paket eventuelle Einstellungen wieder überschreiben könnte.

Filesystem atime

Automatisiert nach Neustart: Eintrag in /etc/fstab

Dieser Tipp wird oft und überall gegeben. Daher fasse ich mich kurz: Ein Linux speichert Zeiten des letzten Zugriffs auf eine Datei (Access Timestamp - atime). Natürlich werden dabei laufend kleine Datenmengen (die Zeitstempel) auf die Festplatte geschrieben. Die atime ist für normale Anwendungszwecke recht uninteressant, daher kann man dieses Verhalten mit Mountoptionen beeinflussen:

  • noatime: Komplett deaktivieren
  • nodiratime: Für Verzeichnisse deaktivieren (eher unbrauchbar)
  • relatime: Kompromiss zwischen noatime und atime


Konfiguriert wird dies in der Datei /etc/fstab durch Hinzufügen als Mountoption:

 /dev/md0        /       ext4    defaults,relatime       0 0

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:25 Uhr.



Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.3.0 ©2009, Crawlability, Inc.