Linux NetMag
Titel: ATA, UDMA und hdparm
URL: http://www.linuxnetmag.com/de/issue7/m7hdparm1.html
Artikel vom: 28.12.2001
Autor: Sascha Kloss


Wer kauft schon ein moderes, schnelles IDE-System, um es dann im langsamen und CPU-belastenden PIO-4 Modus laufen zu lassen. 4,58MB/sek anstatt >55,3MB/sek - wer will das schon. Dieser Bericht zeigt, wo die Distributionen den sicheren Weg auf Kosten der Geschwindigkeit bevorzugen.


Geschwindigkeit versus Kompatibilität

Haftungshinweis beachten

Da die Distributionen auf möglichst allen Systemen von Anfang an laufen sollen, wird meist die Optimierung unter den Tisch fallen gelassen. Dabei geht es den Benutzern doch auch um die Geschwindigkeit. So schalten die meisten Benutzer nach der Installation Dienste wie Apache (WWW-Server), ProFTPD (FTP-Server) usw. aus, da diese eh nur den Bootvorgang verlängern und nicht benötigt werden.
Trotzdem sind schnelle Festplatten, ein schnelles System und ein Betriebssystem, das mit den Fähigkeiten des Systems umgehen kann, das A und O wenn es um Geschwindigkeit geht. Also kauft man mindestens UDMA-66 Systeme mit entsprechend schnellen Festplatten. Das Referenz-System weist folgende Komponenten auf:

Systemkomponenten
Mainboard:ABIT KT7-Raid (UDMA-66)
South bridge:VIA vt82c686a
Festplatte:IBM DTLA-307030 (UDMA-100)
IDE-Kabel:Standard ATA-100 Kabel (45cm lang!)


Wichtig ist wirklich das Hardware-Setup. Unter Windows wird man nicht über kleine "Fehlinstallationen" der Hardware informiert und unser liebes Pseudo-Betriebssystem "läuft" einfach weiter. Unter Linux kann dies allerdings ganz fatal werden. So kann es passieren, dass - falls die Festplatte zu nah am Netzteil montiert ist - es zu sehr vielen CRC-Fehlern ("Prüfsummenfehler") kommen kann. Also muss ich ersteinmal auf die richtige Hardwareinstallation eingehen.

Hardwareinstallation

Sollten Sie Ihren PC selbst zusammengebastelt haben, so werden meist kleine Fehler gemacht, die allerdings auch in einem Billig-Komplett-System anzutreffen sind. Aber auch Dell, Compaq und HP können sich - aus meiner Erfahrung - nicht freisprechen. Es interessieren uns nun genauer das IDE-Verbindungskabel und die Festplatte.
Das Verbindungskabel sollte die Spezifikationen von Standard-IDE-Kabeln einhalten;

Kabelspezifikationen
Länge:NICHT länger als 55 cm!
Adern:80


Ausserdem darf das Kabel nicht gedreht werden!


Die Festplatte sollte, wie schon gesagt, nicht in der Nähe von einem CD-Rom-Laufwerk oder des Netzteils installiert werden, da der Lüfter und die elektromagnetische Strahlung die Festplatte stören können. Also am Besten wie auf diesen Bildern montieren:

Beispielinstallation
Hardware erzeugt Interferenzen Weg vom Netzteil


Auf dem linken Bild ist die Festplatte ausgebaut dargestellt. Sollte die Festplatte in diesem Zustand betrieben werden, würde dies in vielen CRC-Fehlern und geminderter Geschwindigkeit resultieren, da das Kabel gedreht ist. Die rote Markierung des rehten Bildes ist das Verbindungskabel, das offentsichtlich nicht gedreht ist. Klar wird, dass die Festplatte möglichst weit von den CD-Laufwerken und vor allem dem Netzteil entfernt ist. In diesem Betrieb ist die CRC-Prüfung funktionsfähig, und das System kann mit voller Geschwindigkeit betrieben werden.

Wie stelle ich Linux ein?

Für diese Aufgabe gibt es unter Unix und GNU/Linux ein berühmt-berüchtigtes Programm mit dem Befehl:

>> hdparm
Dieses nette Gnu-Programm erlaubt die Parameteränderung des laufenden IDE-Systems, d.h. dass die Geschwindigkeit geändert werden kann. Die Syntax des Programmes ist ein wenig eigenwillig, jedoch versetzen die übergebenen Optionen meist Berge - mit einer atemberaubenden Geschwindigkeit.

hdparm-Parameter
Param. Bedeutung Beispiel
-dxSchaltet DMA ein(x=1) oder aus(x=0)hdparm -d1 /dev/hda

-cxSetzt den Übertragungsmodus für PCI-IDE-Karten
x=1=16Bit;
x=2=32Bit;
x=3=32Bit w/Sync
hdparm -c3 /dev/hda

-tTestet die Durchsatzrate des Laufwerkshdparm -t /dev/hda

-KxSpeichert die Einstellungen in der Hardware. Trotz Fehlern werden diese Einstellungen geladen --> Fehlerquelle
x=1=Speichere
x=0=Temporär
hdparm -K1 /dev/hda

-XxxZwingt das Laufwerk und den Chipsatz den angegebenen Modus zu benutzen. Modi werden in der Anleitung zu hdparm (Befehl: man hdparm) ausführlich erklärt.hdparm -X34 /dev/hda

-iZeigt die Laufwerksinformationen. Auch in welchem Modi sich das Laufwerk befindethdparm -i /dev/hda

Für weitere Infos: man hdparm


Dies sind die gängigsten Parameter von hdparm. Nun kommen wir zum Testen und Konfigurieren.

testen und konfigurieren

Wie schon angesprochen, sollten Sie wissen, was Ihre Hardware verträgt. Am Besten Sie schauen in der Betriebsanleitung Ihrer Festplatte und Ihres Mainboards nach.
Wenn Sie diese Informationen vorliegen haben, geht es ans Testen, wie schnell Linux die Hardware mit möglichst wenig Fehlern betreiben kann. Also öffnen wir zwei Konsolen (xterm), und loggen uns in beiden als Root ein (Befehl: su). In der zweiten geben wir diesen Befehl ein:

  >> tailf /var/log/message
  
Nun werden wir in dieser Sitzung fortlaufend über Fehler und Systemmeldungen des Systema informiert.
Die andere Sitzung wird zum Testen gebraucht. Hier testen wir, wie weit das System optimiert werden kann. Aber bitteschön mit Vorsicht - nicht mehr als die Hardware mitmacht! Also gehen wir es an:
HDPARM wird zunächst zur Herausgabe der aktuellen Betriebsparameter gebeten. Mittels
  >> hdparm -v -i /dev/hda
  
erzählt uns hdparm alles, was wir gerade wissen wollen - mit welchen Parametern das System gerade läuft und was die Festplatte mitmacht. Eine Zeile wie
  DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 *udma3 udma4 udma5
  
wird direkt von der Festplatte gelesen und zeigt an, welche Modi unterstützt werden und welcher gerade aktiv ist. Der Eintrag, vor dem der Stern (*) zu sehen ist, entspricht dem aktiven Übertragungsmodus. Also in diesem Fall UltraDMA mode 3 (UDMA33). Da Ihre Festplatte wahrscheinlich eine andere Auswertung liefert, müssen Sie ggf. etwas raten.
Ab ans Testen heisst jetzt das Motto. Ein Blick auf die zweite Sitzung nach jeder Ausführung eines hdparm ist unumgänglich. Also wagen wir uns langsam an eine angemehme Geschwindigkeit heran:
  >> hdparm -dy -Xzz -i -v -t /dev/hda
  
erzeugt, dass die Festplatte 1 (/dev/hda) in einen noch unbestimmten Modus mit oder ohne DMA-Benutzung versetzt wird. Sollte der Wert zz > 4 sein, so sollte y durch 1 ersetzt werden, da ansonsten der Modus keine Änderung der Geschwindigkeit bewirkt. Der Parameter -t bewirkt, dass automatisch die Geschwindigkeit gemessen wird. Es wird geprüft, wie schnell die Festplatte 64MB an die CPU übertragen kann.
Mit einer kontinuierlichen Steigerung des zz Wertes kann das System zu Höchstleistungen getrimmt werden. Sie sollten jedoch immer einen Blick auf die zweite Sitzung werfen. Wenn bei jeder Festplatten-Aktion etwa folgendes zu sehen ist, sollten Sie wieder eine Stufe herunterschalten:

  hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
  hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
  

Nach dem Neustart

Windows, Linux, BeOS & Co. haben auch die Aufgabe, die Hardware beim Starten in einen korrekten Zustand zu versetzen. Also, müssen Sie Linux klar machen, dass die Festplatte (in diesem Fall /dev/hda) in einen bestimmten Zustand versetzt werden soll, d.h. die Parameter eingestellt werden müssen. Also schnell mal /etc/rc.sysinit in einem Texteditor öffnen und den letzten erfolgreichen "hdparm-Befehl" in die vorletzte Zeile kopieren. Nach jedem Neustart wird nun das Laufwerk und der Chipsatz in einen Modus mit einer angenehmen Geschwindigkeit versetzt.

Referenzdaten

Auf dem Testsystem lief die Festplatte nach der Installation von Linux Mandrake 8.1 im mdma1-Modus (MultiWord-DMA mode1) mit einem Durchsatz von 10.76 MB/sec. Nach dem Tuning-Vorgang lief das System stabil im uDMA4-Modus (Ultra-DMA mode4) mit einem konstanten Durchsatz vom 51.20 MB/sec. Somit wurde der Durchsatz verfünfacht!



Das hier beschriebene Programm hdparm kann das System zu "unerwartet" hohen Werten "zwingen". Dabei entsteht ein nicht zu verachtendes Risiko, dass das System die Daten auf der Festplatte zerstört. Dies kann bis zur Zerstörung des Chipsatzes auf dem Mainboard und der Festplatte führen. Sollten Sie also wichtige Daten auf dem System lagern oder Ihnen Ihre Hardware wichtig sein, gehen Sie bitte besonders vorsichtig vor.
Es wird keinerlei Haftung für Schäden jeglicher Art übernommen - Benutzung auf eigene Gefahr