chyby pri zapnutom dma na ide diskoch

Rybarik, Michal mrybarik na tronet.sk
Pondělí Červen 30 09:24:26 CEST 2003


hello all,

pri zapnutom DMA na IDE diskoch mi stroj robi prapodivne veci. pri
citani suboru nie vzdy dostanem to co som zapisal, a semtam zahuci
nejaky segfault (kvoli tomu ze sa zle precita swap z disku).
momentalne bezim s vypnutym DMA, co nie je nic moc.

prelaboroval som dva dni. masina je pomerne cersto zinstalovane
PII350, i440BX, 2x WD20GB ako RAID1, 192MB RAM + 2x 210MB swap.
restoroval som vacsiu databazu a objavovali sa mi chyby v datach, jak
pri restore, tak pri citani. jedna tabulka nebola vobec citatelna, ani
dumpnut sa nedala, spadol na tom backend. vyskusal som postgres 7.2.3
(rpm) i 7.3.3 (source), cele restorovanie som opakoval niekolkokrat, s
tym istym (nechodivym) vysledkom.

viacmenej nahodou som zistil, ze ked spravym diff dvoch identickych
suborov (kopia toho isteho dumpu databazy), pri kazdom behu su najdene
ine odlisnosti! v niektorych riadkoch sa niekde stratia obvykle 4 po
sebe iduce bajty, a diff to ohlasi ako rozdiel. pri niektorych behoch
diff nenajde ziadne rozdiely (to je ok) ale obvykle najde tak 4
rozdielne riadky na dump s milionom riadkov.

myslel som ze to bude pamatami, vymena neviedla k nicomu, zistil som
akurat ze ked je v stroji 256mb ram tak sa pri diffe chyby takmer
nevyskytuju, pri 64mb je ich 4-6 na milion riadkov a pri 32mb je to
takych 10-15 z miliona.

pri odpojeni swapov nebolo na diffovanie dost pamate, ale zistil som
ze ak vypnem diskom DMA, ide to sice pomaly, ale chyby sa absolutne
stratili. pri zapnutom DMA je to okamzite naspat.

skusal som aj vselijake kombinacie PIO a DMA, ale result je
jednoznacny - ak je zapnute DMA, blbne to.

skusal som nakompilovat najnovsie jadro 2.4.21 (normalne bezim kvoli
staremu driveru na wireless 2.4.18), bolo to to iste. prezrel som
vsetky changelogy od 2.4.18 po sucasnost, okolo dma je tam dost uprav
ale nic co by zodpovedalo tomu mojmu problemu.

bios na doske mam posledny ktory vysiel [rok tusim 2001]. pod
xp-ckami na tom stroji neboli udajne ziadne problemy..

nateraz som sa zmieril s tym, ze mi idu disky 1-3 megabajty za
sekundu, ale rad by som s tym pohol. ked mate napad co mozem este
skusit, sem s nim.

$ cat /proc/ide/piix

                                Intel PIIX4 Ultra 33 Chipset.
--------------- Primary Channel ---------------- Secondary Channel -------------
                 enabled                          enabled
--------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------
DMA enabled:    no               no              no                no 
UDMA enabled:   yes              no              yes               no 
UDMA enabled:   2                X               2                 X
UDMA
DMA
PIO



$ hdparm -i /dev/hda /dev/hdc

/dev/hda:

 Model=WDC WD200BB-00DEA0, FwRev=05.03E05, SerialNo=WD-WMAD22541541
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
 BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=39102336
 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=no WriteCache=enabled
 Drive Supports : Reserved : ATA-1 ATA-2 ATA-3 ATA-4 ATA-5 


/dev/hdc:

 Model=WDC WD200BB-00DEA0, FwRev=05.03E05, SerialNo=WD-WMAD22212406
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
 BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=39102336
 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 
 AdvancedPM=no WriteCache=enabled
 Drive Supports : Reserved : ATA-1 ATA-2 ATA-3 ATA-4 ATA-5 


$ hdparm /dev/hda /dev/hdc

/dev/hda:
 multcount    = 16 (on)
 I/O support  =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 nowerr       =  0 (off)
 readonly     =  0 (off)
 readahead    =  8 (on)
 geometry     = 38792/16/63, sectors = 39102336, start = 0
 busstate     =  1 (on)

/dev/hdc:
 multcount    = 16 (on)
 I/O support  =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 nowerr       =  0 (off)
 readonly     =  0 (off)
 readahead    =  8 (on)
 geometry     = 38792/16/63, sectors = 39102336, start = 0
 busstate     =  1 (on)

btw, v tomto case je ako secondary master pripojena cdrom, mozno preto
hdparm -i pre hdc nezobrazuje udma3-5. pripojil som ju az pred
chvilou, takze na to co som pisal to nema vplyv.

-- 
s pozdravom
michal na rybarik.sk


Další informace o konferenci Linux