hdparm og langsom harddisk
Dette skal forestille at være en miniguide til folk som har problemer med at deres harddisk er langsom. (Min var, så jeg har googlet lidt frem og tilbage, søgt lidt her i forumet og fundet lidt ting hist og her) Og det vil jeg nu prøve at dele med resten af jer. (Kan da være andre har nogenlunde samme problem, har i hvert fald set en som havde det herinde.)
DENNE GUIDE/ARTIKEL ER BRUG PÅ EGET ANSVAR. VISSE INDSTILLINGER KAN FÅ HARDISKEN TIL AT HOLDE OP MED AT VIRKE.
Jeg vil bare ikke have røv for at i har ødelagt jeres harddisk.
Her i artiklen vil jeg bruge min egen hd som forsøgskanin: /dev/hdb
En 250Gb maxtor harddisk af modellen 7Y250P0.
1. Første trin er at få nogle informationer omkring drevet dette gøre hdparm -i, i mit tilfælde giver det resultatet:
/dev/hdb:
Model=Maxtor 7Y250P0, FwRev=YAR41BW0, SerialNo=Y63VC1HE
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=57
BuffType=DualPortCache, BuffSize=7936kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=268435455
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
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 udma6
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: (null):
* signifies the current active mode
Udfra ovenstående kan vi se en masse information, en del af dem giver sig selv og der er stadigt nogle af dem som jeg selv ikke forstår endnu. Men vi kan se MaxMultSect=16 og at den allerede er sat til 16 via MultSect=16. Og vi kan se en masse UDMA modes, nu skal vi bare i gang med at bruge dem og se om vi kan få gjort harddisken hurtigere.
2. Test af nuværende (uændret performance)
hdparm -tTf /dev/hdb
/dev/hdb:
Timing cached reads: 900 MB in 2.01 seconds = 448.72 MB/sec
Timing buffered disk reads: 10 MB in 3.27 seconds = 3.06 MB/sec
Som det kan ses er dette ikke særligt hurtigt en overførelse på lige over 3MB/sec kan ikke siges at være vildt impornerende når ATA-133 kan overføre 133MB/Sec (teoretisk, meget teoretisk, faktisk kommer man aldrig op på den hastighed med ATA-133 men det er en anden side af sagen.)
Først prøver vi hdparm -c3 -m16 (-m16 er ikke nødvendigt da den allerede kører det) og endnu en test:
/dev/hdb:
Timing cached reads: 900 MB in 2.00 seconds = 449.39 MB/sec
Timing buffered disk reads: 16 MB in 3.25 seconds = 4.92 MB/sec
Nu er harddisken blevet næsten dobbelt så hurtigt ved at slå -c3 som er (E)IDE 32-bit I/O support til med synkronisering, se evt. man hdparm for mere information.
c0 32-bit I/O fra, c1 32-bit I/O til, c3 32-bit I/O w/sync (Det fleste chipset i dag burde kunne klare c3)
Nu prøver vi at slå lidt flere ting til og se hvor stærkt vi kan få den til at rende:
hdparm -c3 -m16 -d1 -u1 -X34
/dev/hdb:
setting 32-bit IO_support flag to 3
setting multcount to 16
setting unmaskirq to 1 (on)
setting using_dma to 1 (on)
setting xfermode to 34 (multiword DMA mode2)
multcount = 16 (on)
IO_support = 3 (32-bit w/sync)
unmaskirq = 1 (on)
using_dma = 1 (on)
hdparm -tTf
/dev/hdb:
Timing cached reads: 904 MB in 2.01 seconds = 450.04 MB/sec
Timing buffered disk reads: 44 MB in 3.01 seconds = 14.61 MB/se
Og vi er nu oppe på næsten 4 gange hastighed i forhold til da vi startede med at lege med hdparm.
-u1 sætter unmaskirq flag til 1 {0|1}
-d1 sætter using_dma flag til 1 {0|1}
-X34 sætter multiword DMA mode til 2 (Som den var til at starte med se hdparm -i i toppen DMA modes: mdma0 mdma1 *mdma2)
(-X32 er mdma0 mode 0, -X33 er mdma1 mode 1, -X34 mdma2 mode 2)
Nu skal vi så til at lege med UDMA, for det kan sætte hastigheden seriøst op.
Vi prøver nu med:
hdparm -c3 -m16 -d1 -u1 -X66
hdparm -tTf
/dev/hdb
Timing cached reads: 912 MB in 2.01 seconds = 454.03 MB/sec
Timing buffered disk reads: 80 MB in 3.03 seconds = 26.38 MB/sec
X66 = ATA-33 (UDMA2)
X68 = ATA-66 (UDMA4)
X69 = ATA-100 (UDMA 5)
X70 = ATA-133 (UDMA 6)
Efter at have prøvet de forskellige indstillinger en del gange og kørt hdparm -tTf 3-4 gange med hver, har jeg fundet ud af at X69 er den bedste indstilling for min hd, så:
hdparm -c3 -m16 -d1 -u1 -X69
hdparm -Ttf /dev/hdb
/dev/hdb:
Timing cached reads: 904 MB in 2.01 seconds = 449.82 MB/sec
Timing buffered disk reads: 174 MB in 3.00 seconds = 57.99 MB/sec
Og vi kom så op på omkring 58MB/sec, hvilket er en del mere end de 3MB/sec der blev startet med.
Herefter køres:
hdparm hdparm -c3 -m16 -d1 -u1 -X69 -k1
-k1 for at sætte keep_settings_over_reset flaget.
Til sidst er der så bare at køre et harddisk tjek så man ved om det er stabilt at køre med den indstilling man har fundet frem til. Og derefter tilføje så den kommando til:
/etc/ conf.d/local.start (Med din favorit editor)
Så det bliver kørt hver gang computeren booter.
Håber i kan bruge denne lille guide, den har jeg i hvert fald stået og manglet den sidste måneds tid, mens min harddisk har været langsom. Men husk nu at det er på eget ansvar, så tud nu ikke i brænder jeres hd af på det.
- Log in to post comments
Kommentarer