Linux 15.070 Themen, 107.540 Beiträge

Geringer Durchsatz trotz UDMA?

Jayage / 1 Antworten / Baumansicht Nickles

Hi,
ich benutze Debian 3 (Woody).
Wenn ich mit hdparm -Tt meine Festplatte teste bekomme ich als zweiten Testwert ca. 5 MB/s geliefert.
hdparm -i zeigt mir beim UDMA5-Eintrag ein kleines Sternchen (*) das mir anzeigt, das UDMA aktiviert ist. Laut UDMA-Howto müßte der oben beschriebene Wert jedoch weit über 10 MB/s liegen. Bei meiner SCSI-Platte wird mir ein Wert von ca. 50 MB/s angezeigt.

Ist meine IDE-Platte falsch konfiguriert? Was muss ich ändern?

Bis denne
Jayage

bei Antwort benachrichtigen
NANÜ Jayage „Geringer Durchsatz trotz UDMA?“
Optionen

Zitat: http://channel.debian.de/faq/ch-confighw.html



4.4 UltraDMA aktivieren



ACHTUNG: VERWENDUNG VON ULTRADMA UND MULTIWORD DMA KANN ZU DATENVERLUST UND -BESCHÄDIGUNG FÜHREN. Es sind einige IDE-Geräte im Umlauf, die in diesen Modi stillschweigend Datenfehler produzieren.


Bei der Aktivierung von DMA gibt es prinzipiell zwei Dinge zu beachten: Erstens, ob DMA beim Booten automatisch aktiviert wird (von der Kernel-Konfiguration abhängig) und zweitens, ob der bestmögliche DMA-Modus ausgewählt ist.


Der erste Punkt ist weniger kritisch. Fast alle aktuellen Platten kommen mit DMA klar. Es gibt aber schwarze Schafe, die sich als (U)DMA-kompatibel ausgeben, aber in diesem Modus Datenfehler produzieren. Im Zweifelsfall sollte man die Finger von DMA lassen.


Beim zweiten Punkt sollte man sich i.d.R. auf die Auswahl verlassen, die das BIOS gemacht hat. Unter Umständen kann man diese Auswahl übergehen (hdparms -X-Parameter), aber dies ist sehr riskannt. Wählt man etwas aus, was nicht vom Kontroller oder von der Platte unterstützt wird, so sind Datenfehler fast vorprogrammiert.


Als erstes brauchst du einen Kernel, der deinen Chipsatz optimal unterstützt. Für Onboard-Controller bis zur ersten Athlon/P3-Generation sollten die Treiber im 2.2er Kernel ausreichen. Für neuere braucht man Kernel 2.4 oder gepatchten 2.2, z.B. aus dem kernel-image-2.2.20-udma100-ext3 Paket (in Woody).


Zum aktivieren installiert man hdparm:

apt-get install hdparm hwtools



Dann erstmal die Hardware/Treiber überprüfen:

$ hdparm /dev/hda

/dev/hda:
multcount = 0 (off)
IO_support = 0 (default 16-bit)
unmaskirq = 1 (on)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 9964/255/63, sectors = 160086528, start = 0



Wie man sieht, läuft die Platte nicht optimal. Multicount ist aus (aka HDD-Block-Mode, 16blocks sind okay), 16-bit IO wird verwendet (32 sind besser), und DMA ist aus. Diese Einstellungen werden jetzt mit hdparm verbessert (siehe hdparm-Manpage).

$ hdparm -m 16 -d 1 -c 3 /dev/hda

/dev/hda:
setting 32-bit IO_support flag to 3
setting multcount to 16
setting using_dma to 1 (on)
multcount = 16 (on)
IO_support = 3 (32-bit w/sync)
using_dma = 1 (on)



Sieht schon mal besser aus. Nun überprüfen wir, ob auch das beste UDMA-Modus verwendet wird. Auf aktuellen Boards ist das kein Thema und sie können den folgenden Absatz überspringen. Meinem älteren BIOS ist aber nicht zu trauen.

$ hdparm -i /dev/hda

/dev/hda:

Model=Maxtor 4D080H4, FwRev=DAH017K0, SerialNo=D40BKWHE
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=57
BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=off
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=160086528
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive Supports : ATA/ATAPI-6 T13 1410D revision 0 : ATA-1 ATA-2 ATA-3 ATA-4 ATA-5 ATA-6



Die aktuell ausgewählten Modis wären normalerweise mit * markiert. Nur in meinem Fall eben nicht, da älteres BIOS. Darum schlage ich jetzt in den Mainboard- und Festplatten-Specs nach, und beobachte die Kernel-Meldungen beim Booten (Oct 31 11:43:03 zombie kernel: VP_IDE: VIA vt82c686a (rev 22) IDE UDMA66 controller on pci00:07.1). Also wähle ich UDMA66 aus, mit dem Parameter -X68, aus dieser Tabelle.

hdparm -X68 /dev/hda

/dev/hda:
setting xfermode to 68 (UltraDMA mode4)



VORSICHT: Einige Modi werden zwar von der Festplatte unterstützt, aber nicht vom Chipsatz (oder andersrum) - diese Modi sollten NICHT verwendet werden. Ebenso wenn das Datenkabel nicht für den schnellen Datenmodus ausgelegt ist, oder die Festplatte auf der schwarzen Liste steht, darf KEIN DMA-Modus aktiviert werden.


Auf einen Punkt gebracht:


/etc/init.d/hwtools editieren, dort den (extra vorgesehenen) Abschnitt für hdparm finden und so etwas eintragen:

# hdparm optimization
# Switches on interrupts during transfers and does multi sector transfers
if command -v hdparm >/dev/null 2>&1; then
# Maxtor-Platte, UDMA66
/sbin/hdparm -c3 -d1 -m16 -X68 -S 200 /dev/hda &
# alte IBM-Platte, UDMA66
/sbin/hdparm -c3 -d1 -m16 -X68 -S 200 /dev/hdb &
# TEAC-Cdrom, UDMA33
/sbin/hdparm -d1 -X64 /dev/hdd
fi



Die Werte an die eigene Platte anpassen, siehe hdparm-Manpage.

cu

NANÜ

bei Antwort benachrichtigen