3.6. Harddisk-tuning

Har du brug for at få ekstra "tryk" på din IDE-harddisk, så kan du bruge hdparm til at tune hastigheden. Her er givet de to vigtigste parametre (bruge DMA og lookahead), som nærmest alle nyere diske understøtter. Der kan tunes endnu mere - have fun! :-)

Når det virker fint, kan og bør du lægge kommandoerne ind i filer, der køres når systemet startes op. I Red Hat f.eks. i bunden af /etc/rc.local (SuSE /etc/rc.d/boot.local).

[root@linus /root]# /sbin/hdparm -tT /dev/hda
 
/dev/hda:
 Timing buffer-cache reads:   128 MB in  3.21 seconds = 39.88 MB/sec
 Timing buffered disk reads:  64 MB in 10.14 seconds =  6.31 MB/sec

Den første og sidste kommando måler hastigheden på harddisken. Der kommer to tal. Det første "buffer-cache" er reelt et mål for processor- og bushastighed, mens det andet tal angiver I/O fra disken.

For de fleste diske er den standardopsætning du har fin, men får du væsentligt mindre på det andet tal (se ovenfor), så skal du i gang med at lege :-)

Start med at notere hvordan dine parametre er nu (og som virker):

[root@linus /root]# /sbin/hdparm /dev/hda

/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     = 39703/16/63, sectors = 40020624, start = 0

Nogle af de parametre du kan dreje på er følgende:

[root@linus /root]# /sbin/hdparm -u1 -m16 -c3 -d1 -X66 /dev/hda

/dev/hda:
 setting 32-bit I/O support flag to 3
 setting multcount to 16
 setting unmaskirq to 1 (on)
 setting using_dma to 1 (on)
 setting xfermode to 66 (UltraDMA mode2)
 multcount    = 16 (on)
 I/O support  =  3 (32-bit w/sync)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)

[root@linus /root]# /sbin/hdparm -tT /dev/hda
/dev/hda:
 Timing buffer-cache reads:   128 MB in  3.23 seconds = 39.63 MB/sec
 Timing buffered disk reads:  64 MB in  5.76 seconds = 11.11 MB/sec

I eksemplet giver jeg kommandoer som passer til de nyere Ultra DMA 66-controllere, og får derved en lidt højere hastighed. Målefunktionen bør dog køres en del gange før man kan få en statistisk korrekt vurdering af ydelsen. Du skal være opmærksom på, at du kan låse din maskine, hvis du angiver mere end hvad din maskine kan yde. I praksis ser du nok et reboot hvis du går for langt. Tilføj den endelige optimale opsætning til /etc/rc.local (SuSE /etc/rc.d/boot.local) eller tilsvarende opstartsfil, når du er sikker på at maskinen kører godt. Se også man hdparm.

Med Red Hat kan du justere i filerne: /etc/sysconfig/harddiskhd[a-h] og så gør /etc/rc.sysinit resten ved systemstart. Udfør cp /etc/sysconfig/harddisks /etc/sysconfig/harddiskhdX, hvor X er a, b, c osv. for hda, hdb, hdc osv. Der er følgende parametre:

USE_dma=1    
# det samme som -d1 
# brug DMA   fra = 0, til = 1

lookahead=1
# det samme som -A1 

MULTIPLE_io=16
# det samme som -m16 

EIDE_32bit=3

EXTRA_params= -X69  
# -X69 UDMA5 for ATA/100 
# UDMAX er -X(64 + X) hvor X er et number 1-5.

Læs også Red Hat 7.1-filen /etc/sysconfig/harddisks hvor generel opsætning kan laves for alle diske.

Samme program, hdparm, kan bruges til at få harddisken til at spinne ned i hastighed - f.eks. efter 5 sekunder. Det betyder mere slid på harddisken, men din maskine bliver stille.

[root@linus /root]# /sbin/hdparm -S 1 /dev/hda

Hvis man har et eller flere programmer der jævnligt tjeker om nogle filer er ændret skal disse filers access-tid også opdateres jævnligt - det giver skrivninger til disken selvom filsystemets egentlige data ikke ændres (kun dets meta-data). Det kan være en god idé at montere disken via /etc/fstab noget i stil med

/dev/hda1  /  ext2  defaults,noatime  1 1

Kernens IDE-driver skal understøtte det IDE-chipsæt, der anvendes af bundkortet, og ikke alle IDE-chipsæt er understøttet med (U)DMA. Så hvis en given funktion ikke tillades af hdparm, så kan det være forklaringen.

hdparm har kun begrænset anvendelse med scsi. Til scsi skal man dels se på driveren, dvs. tilføje eventuelle modulparametre. Symbios scsi-driverne kan dog fintunes via /proc/scsi under drift. Et nyttigt grafisk værktøj til at tune scsi-diske er scsi-config, selvom der normalt ikke er så meget at "tune".

Du kan måske også være interesseret i at se mere på http://www.iozone.org/ hvor der er et program til at benchmark-teste harddisk-ydelse.

Mere info om hdparm kan finds på http://linux.oreillynet.com/pub/a/linux/2000/06/29/hdparm.html.