Moinsen allseits
vor kurzem bin ich mit 3 Freunden von einem vServer auf einen Rootserver umgezogen.
Nachdem der root fertig war, wollten wir die Benutzerprofile migrieren.
Beim kopieren der Dateien(mittels ftp über die Midnight commander oberfläche) fiel mir die miserable datenrate von 900kb/sec auf. Ich dachte mir dass das wohl an vorübergehenden Carrier problemen liegen könnte, und vertagte das ganze. am abend probierte ich es erneut, und wieder nur 900kb. also testete ich den download per ftp von einem neutralen server(in den usa, da liegt mein hosting paket). Der vserver übertrug das 1GB Testfile mit knapp 9MB/sekunde.
der rootserver hingegen wieder nur mit 900k-1MB. daraufhin war klar es liegt am root. ein hdparm -t /dev/hda schlug fehl, da hdparm in der grundkonfiguration des servers fehlte. schnell per apt geholt, test gemacht und siehe da... die platte schaufelte die daten nur mit 1.8mb/sec.
dann habe ich mir die konfiguration der platte angesehen mit
hdparm -i /dev/hda
dies zeigte mir an, dass die platte im 16bit modus ohne DMA läuft
also habe ich zuerst den 32 bit modus angeschaltet mit
hdparm -c1 /dev/hda
was den durchsatz der platte auf 4MB/s anhob
und daraufhin den DMA Modus mit hdparm -d1 /dev/hda
und hier beginnt die krux:
nx-net:~# hdparm -d1 /dev/hda
/dev/hda:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)
okay, google ist dein freund dachte ich mir und guugelte ein bissel nach
wie es scheint, muss das kernelmodul für den IDE Controller geladen werden.
hier mal ein output von lspci -v:
nx-net:~# lspci -v
00:00.0 Host bridge: Silicon Integrated Systems [SiS] 741/741GX/M741 Host (rev 0 3)
Subsystem: ASRock Incorporation Unknown device 0741
Flags: bus master, medium devsel, latency 0
Memory at d0000000 (32-bit, non-prefetchable) [size=64M]
Capabilities: [c0] AGP version 3.5
00:01.0 PCI bridge: Silicon Integrated Systems [SiS] SiS AGP Port (virtual PCI-t o-PCI bridge) (prog-if 00 [Normal decode])
Flags: bus master, 66MHz, fast devsel, latency 32
Bus: primary=00, secondary=01, subordinate=02, sec-latency=32
I/O behind bridge: 0000c000-0000cfff
Memory behind bridge: cfd00000-cfefffff
Prefetchable memory behind bridge: bfa00000-cfbfffff
00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS963 [MuTIOL Media IO] (r ev 25)
Flags: bus master, medium devsel, latency 0
00:02.1 SMBus: Silicon Integrated Systems [SiS] SiS961/2 SMBus Controller
Flags: medium devsel
I/O ports at 0c00 [size=32]
00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (prog-if 80 [ Master])
Subsystem: ASRock Incorporation Unknown device 5513
Flags: bus master, medium devsel, latency 128
I/O ports at ff00 [size=16]
00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 PCI Fast Et hernet (rev 90)
Subsystem: ASRock Incorporation Unknown device 0900
Flags: bus master, medium devsel, latency 32, IRQ 10
I/O ports at dc00 [size=256]
Memory at cfffb000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at cffc0000 [disabled] [size=128K]
Capabilities: [40] Power Management version 2
01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 661/741/760/ 761 PCI/AGP VGA Display Adapter (prog-if 00 [VGA])
Subsystem: ASRock Incorporation Unknown device 6331
Flags: 66MHz, medium devsel, IRQ 11
BIST result: 00
Memory at c0000000 (32-bit, prefetchable) [size=128M]
Memory at cfee0000 (32-bit, non-prefetchable) [size=128K]
I/O ports at cc00 [size=128]
Capabilities: [40] Power Management version 2
Capabilities: [50] AGP version 3.0
und ein output von lsmod
nx-net:~# lsmod
Module Size Used by
ipv6 228320 70
loop 15496 0
analog 11104 0
rtc 12788 0
i2c_sis96x 5700 0
sis_agp 8708 1
agpgart 30216 1 sis_agp
gameport 14920 1 analog
evdev 9408 1
parport_pc 32612 0
parport 33672 1 parport_pc
pcspkr 3392 0
i2c_core 20096 1 i2c_sis96x
shpchp 33312 0
pci_hotplug 29056 1 shpchp
floppy 53668 0
ide_disk 15168 3
processor 29128 0
3c59x 40808 0
3c509 12116 0
sky2 37252 0
skge 35152 0
natsemi 25632 0
bnx2 77104 0
b44 24716 0
netconsole 3744 0
ne2k_pci 11040 0
8390 9728 1 ne2k_pci
8139too 25600 0
e1000 109376 0
e100 32904 0
sis900 22080 0
via_rhine 23112 0
mii 5696 6 3c59x,b44,8139too,e100,sis900,via_rhine
forcedeth 38788 0
r8169 28872 0
ext2 59784 0
ext3 120584 1
jbd 52968 1 ext3
mbcache 8644 2 ext2,ext3
sd_mod 19456 0
linear 6080 0
raid456 115984 0
xor 14536 1 raid456
raid10 22080 0
raid1 21632 0
raid0 8064 0
faulty 4416 0
multipath 8576 0
md_mod 71060 7 linear,raid456,raid10,raid1,raid0,faulty,multipath
dm_zero 2560 0
dm_mirror 19600 0
dm_snapshot 15904 0
dm_emc 6272 0
dm_round_robin 3648 0
dm_multipath 17032 2 dm_emc,dm_round_robin
dm_crypt 11272 0
dm_mod 50776 5 dm_zero,dm_mirror,dm_snapshot,dm_multipath,dm_crypt
iscsi_tcp 22848 0
libiscsi 22848 1 iscsi_tcp
scsi_transport_iscsi 27532 2 iscsi_tcp,libiscsi
raid_class 6272 0
sata_vsc 9156 0
sata_via 10372 0
sata_uli 8324 0
sata_sx4 13636 0
sata_svw 8452 0
sata_sis 8644 0
sata_sil 11784 0
sata_sil24 14788 0
sata_qstor 9860 0
sata_promise 11972 0
sata_nv 11332 0
sata_mv 18248 0
ata_piix 14216 0
ahci 18372 0
libata 90772 14 sata_vsc,sata_via,sata_uli,sata_sx4,sata_svw,sata_sis,sata_sil,sata_sil24,sata_qstor,sata_promise,sata_nv,sata_mv,ata_piix,ahci
3w_xxxx 25248 0
3w_9xxx 30596 0
scsi_mod 124872 9 sd_mod,iscsi_tcp,libiscsi,scsi_transport_iscsi,raid_class,ahci,libata,3w_xxxx,3w_9xxx
piix 9732 0 [permanent]
sis5513 12680 0 [permanent]
via82cxxx 8708 0 [permanent]
ide_generic 1728 0 [permanent]
ide_core 110984 5 ide_disk,piix,sis5513,via82cxxx,ide_generic
Die Frage die ich nun habe... ist das modul bereits geladen?
wenn ja woran könnte es sonst noch liegen dass ich DMA nicht einschalten kann(die platte ist laut hdparm udma5 fähig)
falls das modul nicht geladen ist: wie lautet der name für das passende modul, und wo kriege ich es(falls es nicht schon mit dem kernel kam) her?
Linux 15.012 Themen, 106.877 Beiträge
/usr/src/linux-source-2.6.26/drivers/ide/pci# cat sis5513.c
.....
* Original tests and design on the SiS620 chipset.
* ATA100 tests and design on the SiS735 chipset.
* ATA16/33 support from specs
* ATA133 support for SiS961/962 by L.C. Chang <lcchang@sis.com.tw>
* ATA133 961/962/963 fixes by Vojtech Pavlik <vojtech@suse.cz>
*
* Documentation:
* SiS chipset documentation available under NDA to companies only
* (not to individuals).
*/
Ich will es dir mal übersetzen:
SiS chipset documentation available under NDA to companies only
(not to individuals).
Ein Linuxkernel Entwickler bekommt von der Firma SIS keine Dokumentation wie dier Treiber programmiert werden muß. Die Spezifikationen von SIS bekommen nur Firmen und keine Privatperson.
Wie soll dann ein Programmeirer einen guten Linuxtreiber programmieren ?
Wenn der Treiber nichts taugt, dann kannst du nichts machen als die Hardware wechseln.
Ich kann dir nur empfehlen erstmal auf UDMA zu verzichten und nur den PIO Modus zu nutzen.
Es gibt bei IDE eine IDE Spezifikation und im Linuxkernel gibt es einen Standard IDE Treiber , mit dem zumindest der PIO Modus einer IDE Festplatte laufen sollte. Ich habe nur gehört das manche Chipsatzhersteller sich leider nicht an diese IDE Spezifikation halten und dehalb muß der Standard IDE Treiber im Linuxkernel immer wieder an Spezialfälle angepasst werden.
PCs sind spotbillig. Du mußt mal die Preise von Sun Microsystems für ihre Server sehen. Aber da bekommst du Support und mußt dir keine Gedanken über irgendwelche Treiber machen, wenn du Solaris 10 im Serverbereich nutzt.
Aktiviere erstmal nur im Linuxkernel den Standard IDE Treiber und verzichte auf UDMA.
Der PIO Modus sollte rein theoretisch mit jedem IDE Chipsatz funktioniern. Für UDMA braucht man schon wieder spezielle Treiber (die in diesem Fall wohl nicht richtig funktionieren).
