Ein einfacher Befehl – schon schalten Festplatten und Laufwerke den Turbo ein. Mit dem Programm Hdparm steigern Sie die Performance Ihrer Massenspeicher.
Sie haben eine neue Festplatte und trotzdem dauert das Kopieren Ihrer Daten unendlich lange? Wenn Sie einen Film ins DVD-Laufwerk legen, ruckelt das Bild beim Abspielen? Wie kann das sein?
Ganz einfach: Viele – vor allem ältere – Festplatten und Laufwerke schöpfen ihr Potential nicht aus, Betriebssystem und BIOS nutzen nicht alle verfügbaren Features der Massenspeicher. Dabei steigt der Datendurchsatz beim Aktivieren oder Optimieren von DMA – einer wesentlichen Funktion – zum Teil enorm, das gilt für Festplatten, aber auch für CD-ROM- und DVD-Laufwerke. DMA steht für Direct Memory Access: Die Technik befördert Daten von einem Laufwerk oder einer Festplatte über einen DMA-Kanal direkt in den Hauptspeicher. Die Übertragung der Daten steuern so genannte DMA-Controller, die auf dem Mainboard sitzen – zusätzlich müssen das BIOS und die Laufwerke DMA unterstützen. DMA erhöht den Datendurchsatz, es fließen also mehr Daten in derselben Zeit. Die Technik entlastet zudem die CPU, weshalb Filme flüssiger laufen, das Kopieren von Daten schneller wird und weniger Probleme beim Schreiben auf DVDs auftreten.
Gefahren lauern
Aktuelle Linux-Distributionen erkennen und aktivieren DMA gewöhnlich während der Installation. Die Suse Linux Versionen 9.3 und 10.0 reizen die Möglichkeiten der Massenspeicher voll aus, während andere Distributionen eher auf konservative Werte setzen. Auch das ist nicht ungerechtfertigt, denn die Features rufen manchmal Komplikationen hervor. So führt die Aktivierung von DMA unter Umständen dazu, dass der Computer regelmäßig abstürzt, Laufwerke nicht erkennt oder das System im laufenden Betrieb oder während der Installation einfriert. Schuld an diesem willkürlich wirkenden Krankheitsbild sind beispielsweise die Flachbandkabel, die Laufwerke, Festplatten und Mainboard miteinander verbinden. Idealerweise sind sie 45 cm lang und nicht verdreht, auf die Praxis trifft das selten zu. Neuere Hardware geht zwar robuster mit solchen Problemen um, dennoch wimmelt es in den aktuellen Hilfeseiten zu Hdparm (man hdparm) vor Warnhinweisen wie “Dangerous” oder “Massive filesystem corruption”. Eine Datensicherung vor dem Experimentieren empfiehlt sich insbesondere beim Einsatz älterer Kernel oder Hardware; alternativ binden Sie die Festplatte im Nur-Lesen-Modus ein.
Einen Gang zulegen
Das Programm Hdparm [1], das Sie einfach über den Paketmanager Ihrer Distribution einspielen, steuern Sie mit Root-Rechten über die Kommandozeile. Es gibt Auskunft über den Status spezifischer Funktionen Ihrer Massenspeicher und schaltet diese auf Wunsch an oder aus. Wie die Laufwerke und Festplatten heißen, erfahren Sie, indem Sie mit Root-Rechten mount aufrufen. Der Befehl listet die eingebundenen Geräte und die zugehörigen Gerätedateien auf: Im Beispiel kam eine auf /dev/hdc eingebundene “Samsung-SP1203N”-Festplatte zum Einsatz.
Um ihr Potential zu nutzen, holen Sie sich zunächst einmal Informationen darüber, welche Features bereits arbeiten. Geben Sie dazu einfach hdparm /dev/hdc ein, folgt eine Ausgabe wie in Abbildung 1. Steht ein 0 (off) neben einem Feature, ist es nicht aktiv. Nach und nach schalten Sie nun die Funktionen für die Festplatte ein. Im Test wirkte sich allerdings nur die Aktivierung von DMA merklich auf die Geschwindigkeit der Datenübertragung aus. Das Einschalten der anderen Features brachte keinen messbaren Effekt, das kann aber bei älteren Festplatten und Laufwerken sowie bei bestimmten Distributionen durchaus anders sein: Probieren Sie es am besten aus.

Abbildung 1: Der Befehl “hdparm /dev/hdc” ohne Optionen verrät Ihnen die aktivierten Features der Festplatten und Laufwerke.
DMA einschalten
DMA existiert etwa seit 1989 und war Teil der ATA-Spezifikation [2]: Übertrugen Festplatten und Laufwerke im Modus DMA single 2 noch 8,3 MByte/s, brachte es das so genannte Ultra DMA (UDMA) als Bestandteil des ATA4-Standards von 1997 im UDMA0-Modus bereits auf circa 16,7 MByte/s. Heute setzt man als Versionsnummer für die UDMA-Standards gewöhnlich die Datenübertragungsrate ein: Der aktuelle UDMA133-Standard schafft also eine Übertragungsrate von 133 MByte/s – allerdings nur rein theoretisch. In der Praxis liegen die Werte meist ziemlich weit unter dem theoretisch erreichbaren Datendurchsatz.
Um DMA einzuschalten, prüfen Sie zunächst, welchen DMA-Modus Ihr Laufwerk unterstützt: Die Ausgabe des Befehls hdparm -i /dev/hdc informiert Sie darüber (Abbildung2). Die betreffende Zeile heißt UDMA modes, den bestmöglichen Modus finden Sie dort ganz rechts.

Abbildung 2: Die DMA-Fähigkeit testen: “hdparm -i” zeigt Ihnen in der Zeile “UDMA modes”, welche DMA-Modi Ihr Laufwerk überhaupt unterstützt.
Bevor Sie eine der Optionen einschalten, nehmen Sie einen einfachen Performance-Test vor, der Ihnen im Vergleich zeigt, ob der Datendurchsatz steigt: Der Befehl hdparm -Tt /dev/hdc liefert – wie Abbildung 1 zeigt – zwei Ergebnisse: Der obere Wert misst den Datendurchsatz bei einem Lesezugriff auf den Linux Buffer Cache, der ausschlaggebende Wert darunter offenbart Ihnen die Übertragungsrate beim Lesen von Ihrer Festplatte oder Ihrem Laufwerk. Idealerweise nehmen Sie diesen Test vor, wenn der Computer nicht anderweitig arbeitet und wiederholen ihn auch zwei- bis dreimal, um einen verlässlichen Wert zu erzielen.
Ist keine der Funktionen aktiv, überträgt die Festplatte Daten mit 1,99 MByte/s – das sind gerade einmal 2 Prozent der theoretisch erreichbaren 100 MByte/s. Nun schreiten Sie zur Tat: Mit hdparm -d1 -X69 /dev/hdc aktivieren Sie DMA für Ihre Festplatte, wobei Sie hdc durch die Bezeichnung der Gerätedatei Ihrer Festplatte ersetzen. Die Option -d1 aktiviert DMA und wählt auch gewöhnlich den besten verfügbaren Wert. Um das aber sicher zu stellen, legen Sie den Modus manuell über die Option -X69 fest. Die Zahl ergibt sich aus einer einfachen Rechnung: Sie addieren den bestmöglichen UDMA-Modus mit der Zahl 64: UDMA5 + 64 macht 69, ähnliche Additionen brauchen Sie auch, um DMA und PIO einzustellen (siehe dazu man hdparm). Der anschließende Performance-Test (Abbildung 3) verblüfft: Dank DMA liegt die Datenübertragungsrate nun bei 53.90 MByte/s – eine enorme Steigerung.

Abbildung 3: Ziemlich fix: Vor der Aktivierung von DMA überträgt die Festplatte 1,99 MByte/s, nachher 53.90 MByte/s.
Um zu ermitteln, ob die ganze Angelegenheit stabil ist, spielen Sie zum Beispiel etwas Musik oder einen Film von DVD ab oder kopieren eine große Datei zwischen Festplatte und Laufwerk hin- und her. Stürzt der Rechner ab, wählen Sie besser einen weniger schnellen DMA-Modus oder schalten die Funktion – wie weiter unten erläutert – ab.
Multcount, Unmaskirq und Co.
Dank DMA steigern Sie den Datendurchsatz deutlich, die weiteren Features zeigen in dieser Hinsicht eher eine geringe Wirkung. Die im Handbuch gelobten Leistungssteigerungen gelten vorzugsweise für ältere Hardware. Die Option -m16 aktiviert den “Multiple sector mode”: Das Betriebssystem liest beim Zugriff auf die Festplatte nicht nur einen, sondern gleich 16 Sektoren auf einmal aus. Wie viele Sektoren maximal lesbar sind, zeigt der Befehl hdparm -i /dev/hdc (Abbildung 2), der fragliche Wert steht neben dem Eintrag MaxMultSect. Nach dem Aktivieren der Option, stieg der Datendurchsatz auf dem Testrechner auf 54,74 MByte/s – kein sehr großer Gewinn. Ein Blick in die Hilfeseiten von Hdparm zeigt zudem, dass die Optionen bei einigen Festplatten Probleme verursachen – Western Digital empfiehlt zum Beispiel, den Wert auf 4-8 Sektoren zu beschränken.
Mit der Option -c3 aktivieren Sie die (E)IDE 32-Bit Eingabe/Ausgabe-Unterstützung, die den Datenfluss zwischen PCI-Bus und Controller regelt und Anfragen den Massenspeicher beschleunigt. Bleibt noch die Option -u1, mit der Sie das so genannte “unmask”-Flag für die Interrupts setzen. Während das System auf die Daten von der Festplatte wartet, kann es dann zwischenzeitlich andere Aufgaben erledigen.
Start me up!
Um beim Booten die richtigen Einstellungen automatisch zu starten, fügen Sie den kompletten hdparm-Befehl in eines der Linux-Start-Skripte ein. Mandriva-Nutzer öffnen dazu die Datei /etc/rc.d/rc.local mit Root-Rechten, Debianer nutzen /etc/rcS.d/bootmisc.sh. Fügen Sie einfach den kompletten Befehl in die Datei ein – im Beispiel lautet er hdparm -d1 -X69 -u1 -m16 -c3 -k1 /dev/hdc. Dank der Option -k1 bleiben die Einstellungen nach einem so genannten Soft Reset eines Geräts im Zuge einer Fehlerkorrektur erhalten. Unter Suse Linux heißt die entsprechende Datei boot.local, einfacher schaltet man DMA hier aber über Yast an und aus. Rufen Sie Yast auf, wechseln Sie zum Reiter Hardware und wählen Sie den Eintrag IDE DMA-Modus. Nun erscheinen DMA-Informationen zu Ihren angeschlossenen Massenspeichern (Abbildung 4). Über ein Drop-Down-Menü im unteren Bereich wählen Sie den DMA-Modus aus: Stürzt Ihr Rechner häufig ab, probieren Sie es einmal mit einer anderen DMA-Version – wählen Sie zum Beispiel -X67 statt -X69.

Abbildung 4: Suse-Linux-Nutzer haben es einfach: Via Yast aktivieren und deaktivieren Sie bequem den DMA-Modus für Laufwerke und Festplatten.
DMA abschalten
Sie schalten DMA bei Suse gleich doppelt ab: Nicht nur das BIOS aktiviert DMA, sondern auch das Betriebssystem. Zunächst deaktivieren Sie DMA über den Boot-Manager. Für Suse – aber auch Debian – öffnen Sie im Verzeichnis /boot/grub/ die Datei menu.lst mit Root-Rechten. Suchen Sie den Abschnitt, über dem title SUSE LINUX bzw. title Debian GNU/Linux steht. Tragen Sie am Ende der Zeile darunter, die mit kernel beginnt, ide=nodma ein, damit das BIOS nach dem Neustart den DMA-Modus nicht verwendet. Für Mandriva 2006 tragen Sie ide=nodma in die Datei /etc/lilo.conf ein und ergänzen im Abschnitt label="linux" die Zeile, die mit append beginnt.
Hängt sich der Rechner nach dem Aktivieren von DMA beim Booten komplett auf, starten Sie zur Rettung ein aktuelles Knoppix. Mit Root-Rechten und dem Befehl mount -t auto /dev/hdc /Festplatte binden Sie die Festplatte in das Verzeichnis Festplatte ein, das Sie im Wurzel-Verzeichnis von Knoppix anlegen. Mit cd /Festplatte/etc/rc.d wechseln Sie dann in den Ordner, in dem die Start-Skripte liegen. Via mv boot.idedma boot.idedma.alt entfernen Sie die Datei aus dem Boot-Vorgang, welche beim Start DMA einschaltet. Beim nächsten Booten ignoriert das Betriebssystem DMA. Nun ändern Sie mit Root-Rechten den Namen der Datei zurück – mv boot.idedma.alt boot.idedma – und deaktivieren DMA über Yast. Haben Sie die hdparm-Befehle manuell in die Start-Skripte eingetragen, kommentieren Sie einfach die Befehle wieder aus.
Infos
[1] Die Sourceforge-Web-Seite von hdparm: http://sourceforge.net/projects/hdparm/
[2] Übersicht zum ATA-Standard und DMA: http://de.wikipedia.org/wiki/ATA_(Schnittstelle)





