HOGYAN Használjuk a hdparm-ot

A Gentoo Linux Wiki wikiből

Tartalomjegyzék

[szerkesztés] Bemutatás

A hdparm egy olyan eszköz, ami az IDE eszközök beállításait tudja megváltoztatni. Ebbe beletartoznak olyanok, mint a DMA mód, xfer beállítások, és olyan további beállítások, melyeket esetleg be szeretnénk kapcsolni a merevlemezeink vagy cdromjaink sebességének növeléséhez. Ezek alapértelmezetten nincsenek bekapcsolva.

Ez a dokumentum megpróbál friss információkat adni a hdparm-ról, s arról, hogy a felhasználó miként ellenőrizheti, hogy milyen beállítások támogatottak, mit használjunk a legjobb eredmény eléréséhez.

Sok hdparm leírás csak annyit moond el, hogy élesítsük be például a "-X33" vagy a "-c1" kapcsolót, s a legtöbb ilyen leírás elég régi már, s így esetleg újabb beállítások lehetségesek. A merevlemezek gyorsításával egy gyorsabb rendszerünk lehet. Ez ugyancsak segíthet megoldani az ugráló DVD lejátszás problémáját, vagy a nagyon lassú CD-írást.


[szerkesztés] hdparm telepítése

Először is ellenőrizzük, hogy a hdparm már telepítve van-e a rendszeren, rootként a következő parancsot gépeljük be:

# hdparm -V

Ha a hdparm már telepítve van, valami hasonlót kapunk:

hdparm v5.7

Egyébként egy hibaüzenet fogad:

bash: hdparm: command not found


Ha nincs telepítve, megtehetjük ezt a következő paranccsal: # emerge hdparm

A telepítés után ellenőrizzük az előző paranccsal, hogy biztosak legyünk benne, hogy jól működik.


[szerkesztés] Információk beszerzése a különböző meghajtókról

Az egyes meghajtóknak különböző képességeik vannak, ezért a helyes beállításukhoz ismerni kell, hogy mit is tudnak. A következő parancs megadja a kivánt információt. Cseréljük le a hda-t a vizsgált meghajtóra: # hdparm -i /dev/hda

Az udev rendszert használó rendszerek lehetővé teszik a meghajtók még érthetőbb fájlnév alatti elérését is.

Merevlemezekhez (a ? jelet cseréljük le a lemez sorszámára):

# hdparm -i /dev/discs/disc?/disc

CDROM-okhoz:
# hdparm -i /dev/cdroms/cdrom?/cdrom

Valami hasonlót kell kapjunk:

/dev/hdd:

 Model=WDC WD80EB-28CGH2, FwRev=24.84G24, SerialNo=WD-WMA9N7936819
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=15509/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
 BuffType=DualPortCache, BuffSize=768kB, MaxMultSect=16, MultSect=16
 CurCHS=15509/16/63, CurSects=15633072, LBA=yes, LBAsects=15633072
 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 
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: device does not report version: 

 * signifies the current active mode


Ezt a műveletet minden IDE merevlemezre és cdromra megtehetjük. Figyeljünk oda a MaxMultSec és a PIO/DMA/UDMA módokban elérhető maximális mód értékekre!

[szerkesztés] Eszközök összehasonlítása

A hdparm-nak van egy nagyon kézreálló összehasonlító módja is. Ez megmutathatja, hogy mekkora sebességnövekedést ad az adott beállítás. Amikor egy ilyen összehasonlítást futtatunk, ajánlott, hogy minden más, eredményt befolyásoló programot bezárjunk. Az ideális az lenne, ha ezt konzolról futtatnánk, bármilyen grafikus felület nélkül.

Az összehasonlítás végrehajtásához adjuk ki a következő parancsot, de az X helyére írjuk be a meghajtó számát:

# hdparm -tT /dev/hdX

Valami ehhez hasonló sebességértékeket kell kajunk:

/dev/hdd:
 Timing cached reads:   496 MB in  2.00 seconds = 247.42 MB/sec
 Timing buffered disk reads:   60 MB in  3.03 seconds =  19.81 MB/sec

Ajánlott minden meghajtó ellenőrzését véghezvinni és az eredményeket lementeni az állítgatás előtt. Így a végén meg lehet mondani, milyen mértékű volt a javulás.


[szerkesztés] Eszközbeállítások megváltoztatása

FIGYELEM! A beállítások megváltoztatása esetleg tönkreteheti a hardvert vagy akár a rendszert instabillá teheti. A legújabb meghajtók elég jól elboldogulnak, de azért csak a saját feleősségedre próbálkozz!

Megjegyzés: Ezek a beállítások nem maradnak meg újraindítás után. A legjobb beállítások megtalálása után gondoskodni kell a beállítások minden induláskor történő érvényre juttatásáról.


[szerkesztés] Jelenlegi bállítások ellenőrzése

A legtöbb beállítás ellenőrizhető a beállításához használt szám elhagyásával. Például a jelenlegi DMA beállítások ellenőrzését a következők teszik lehetőve:

# hdparm -d /dev/hda

Némely beállítás azonban nem így működik, például az xfer mód (-X) inkább nullára állítja értékét, mintsem az aktuális értékét adná vissza. Az írási gyorstár (write-caching, -W) bekér egy értéket. Általánosan a jelenlegi beállítások megjelenítésére a

# hdparm /dev/hda

parancs szolgál.

Ez a következőhöz hasolót ad vissza:

/dev/hda:
 multcount    = 16 (on)
 IO_support   =  3 (32-bit w/sync)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 15509/16/63, sectors = 8004132864, start = 0

Vagy használjuk a 'hdparm -i' parancsot úgy, ahogy fentebb le van írva, például az xfer mód állítása esetén, vagy egyéb, magasabb szintű beállításokhoz.

[szerkesztés] DMA mód -d

A DMA mód megváltoztatása lefagyaszthatja a rendszert! Figyeljünk oda! Az első mód, amit engedélyezni szeretnénk, az valószínűleg a DMA. A DMA bekapcsolása fontos például DVD meghajtóknál ha DVD-t szeretnénk nézni vagy írni. DMA nélkül a lejátszás ugrik, az írás nagyon hosszú ideig tart, és valószínű, hogy hibás lesz. Normál CDROM-okon és merevlemezeken is ajánlott a DMA-t bekapcsolni, mert nagyban növeli a sebességet, és csökkenti a processzor terhelését. A kernelbe bele kell fordítani a chipsethez tartozó DMA opciót is. Ehhez a kernel konfiguráció "Device Drivers > ATA/ATAPI/MFM/RRL support" pontja alatt a chipsetünkhöz tartozó opciót kell bejelölni.

Egy eszközön a kövektező paranccsal engedélyezhetjük a DMA-t:

# hdparm -d1 /dev/hda

Ha minden jól megy, a következőhöz hasonló kimenetet kapunk:

/dev/hda:
 setting using_dma to 1 (on)
 using_dma    =  1 (on)

Most futtassunk egy összehasonlítást/tesztet, hogy lássuk, mennyit javult a sebesség.


[szerkesztés] Xfer mód (PIO/SDMA/MDMA/UDMA) -X

A DMA-nak többféle xfer módja van. Ez lehet PIO 1-4 (Programmed IO), SDMA 0-2 (Sinlge-word DMA), MDMA 0-2 (Multi-word DMA) és UDMA 0-5 (Ultra-DMA). Ezeket a módokat a következő paranccsal állíthatjuk, ha a ##-t és a hda-t lecseréljük a kívánt saját módunkkal illetve meghajtónkkal:

# hdparm -X## /dev/hda

Általában a magasabb számú mód a jobb. Itt egy lista a különböző xfer módokról a hozzá tartozó számmal:

0 1 2 3 4 5
PIO 08 09 10 11 12
SDMA 16 17 18
MDMA 32 33 34
UDMA 64 65 66 67 68 69


Például az UDMA2 mód beállítása:

# hdparm -X66 /dev/hda

A kívánt mód ugyancsak kiválasztható a nevének magadásával is:

# hdparm -X udma2 /dev/hda

A legtöbb modern merevlemez valószínűleg UDMA módot használ. Az xfer mód beállítása után futtassunk egy 'hdparm -i' parancsot, hogy ellenőrizhessük, hogy a mód valójában be lett-e állítva. A bállítás után csináljunk egy összehasonlító tesztet.


[szerkesztés] 32-bit IO_SUPPORT -c

Be lehet állítani a 32 bites IO támogatást is a -c opcióval.

Az IO_support-nak 4 különböző szintje van:

0 alapértelmezett, 16-bit
1 32-bit
2 16-bit
3 32-bit w/sync

Ha lehetséges, az 1-es vagy a 3-as opció a kívánatos. A 3-as módott a következő paranccsal lehet beállítani: # hdparm -c3 /dev/hda Ez a beállítás megváltoztatja, hogy az adatok hogyan kerülnek át a PCI buszról a kontrollerre. Ez megduplázhatja az átvitelt.

[szerkesztés] MultSect -m

Amikor a 'hdparm -i' parancsot futtattuk, volt ott egy olyan szakasz, hogy MaxMultSect. Ezt a -m kapcsolóval lehet állítani, mint ahogy a következő parancs is mutatja (cseréljük ki a # jelet):

# hdparm -m# /dev/hda

Ez megadja, hgoy mennyi szektort olvasson be előre a lemezről egy I/O megszakításkor. A legújabb meghajtók akár a MultSect 16-os értékét is kezelni tudják, a régiek a 8-at. Ennek megváltoztatása csökkentheti a lemezelérések erőforrásigényét és növeli a lemezek sávszélességét.


[szerkesztés] unmaskirq -u

Az unmaskirq bekapcsolható az alábbi paranccsal:

# hdparm -u1 /dev/hda

Az unmaskirq megengedi a Linux-nak, hogy más megszakításokat unmask-oljon (!! FIXME !!) egy lemezmegszakítás alatt. Ezzel lehetővé válik a rendszernek, hogy egyszerre csináljon hasonló műveleteket, ami növeli a rendszer válaszidejét.


[szerkesztés] Írási gyorstár -W

Az írási gyorstár bekapcsolható az alábbi paranccsal:

# hdparm -W1 /dev/hda

[szerkesztés] Read-lookahead -A

A Read-lookahead !! FIXME !! a következő paranccsal kapcsolható be:

# hdparm -A1 /dev/hda

[szerkesztés] Readahead -a

A Readahead fs !! FIXME !! beállítást így lehet megváltoztatni:

# hdparm -a# /dev/hda

Az én merevlemezemen a 256 már automágikusan be lett állítva.


[szerkesztés] A hdparm beállítások állandósítása

Most, hogy már kitaláltuk az ideális hdparm beállításokat, szerkesszük át a /etc/conf.d/hdparm fájlt, s ezzel biztosíthatjuk, hogy a következő rendszerinduláskor is betöltődjenek beállított értékeink. A hdparm fájl szerkesztését elvégezhetjük például a nano szerkesztővel:

# nano /etc/conf.d/hdparm

Egy hasonló fájlt kell kialakítani:

File: /etc/conf.d/hdparm (alapértelmezett)
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/hdparm/files/hdparm-conf.d.3,v 1.2 2004/09/06 02:17:08 swegener Exp $

# You can either set hdparm arguments for each drive using hdX_args,
# discX_args, cdromX_args and genericX_args, e.g.
#
# hda_args="-d1"
# disc1_args="-d1"
# cdrom0_args="-d1"

# or, you can set hdparm options for ALL drives using all_args, e.g.
#
# all_args="-d1"

A meghajtók többsége ugyanazt a beállítást alkalmazza, módosítsuk az all_args sort a kívánt beállításra.

Itt van egy példafájl, ahol a hda és hdb standard merevlemezek, amik támogatják az UDMA-5-öt, míg a hdc csak az UDMA-2-t. A hdd egy cdrom 8-as előreolvasási (readahead) értékkel, s ez az eszköz csak az UDMA-0-t támogatja. S minthogy ez egy egyszerű cdrom, írási cache nem szükséges.

File: /etc/conf.d/hdparm (Sample)
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/hdparm/files/hdparm-conf.d.3,v 1.2 2004/09/06 02:17:08 swegener Exp $

# You can either set hdparm arguments for each drive using hdX_args,
# discX_args, cdromX_args and genericX_args, e.g.
#
# hda_args="-d1"
# disc1_args="-d1"
# cdrom0_args="-d1"

# or, you can set hdparm options for ALL drives using all_args, e.g.
#
#all_args="-d1"
hda_args="-A1 -d1 -u1 -c3 -X69 -W 1 -m 16"
hdb_args="$hda_args"
hdc_args="-A1 -d1 -u1 -c3 -X66 -W 1 -m 16"
hdd_args="-A1 -d1 -u1 -c3 -X64 -m 16 -a 8"

[szerkesztés] Hibaelhárítás

[szerkesztés] A hdparm -i mutatja az UDMA módot, de nem történik semmi, amikor megpróbálom beállítani azt a módot

Ez leggyakrabban attól van, hogy az alaplap nem támogatja ennek a módnak a futtatásához szükséges magasabb ATA módokat. Amennyiben biztos benne, hogy az alaplap támogatja e módot, meg kell győződni arról, hogy az eszköz a megfelelő IDE csatlakozóra van kötve az alaplapon- A különböző ATA specifikációknak különböző színű csatlakozóajzatai lehetnek az alaplapon.

Itt egy lista a különböző UDMA módokról és a hozzájuk tartozó ATA értékekkel:

UDMA ATA
0ATA 16
1ATA 24
2ATA 33
3ATA 44
4ATA 66
5ATA 100


[szerkesztés] Egyszerű parancsoknál is (hdparm -i) az "Operation not supported" hibaüzenetet kapom

Valószínűleg egy SATA vagy más bizarr hardveren próbálja a hdparm-ot futtatni. A hdparm jelenleg nagyon korlátozottan támogatja a SATA meghajtókat. Ezek a meghajtók általában felkonfigurálják magukat legmegfelelőbb beállításokra. Az alapvető információk kiolvasását és a tesztelést ettől függetlenül valószínűleg lefuttathatjuk. Próbáljuk a meghajtót teszteltetni ahhoz, hogy kiderüljön, hogy elég jó sebességeket kapunk (általában 1000MB/s felett cache-elt olvasásnál és 100MB/s felett bufferelt olvasásnál).


[szerkesztés] Hivatkozások


[szerkesztés] Tennivalók

  • Replace output examples with default untweaked examples rather than the already tweaked ones.
  • Add more information about what the different modes actually do and the expected improvements.
  • Some benchmarks to show a rough idea of the speed improvements.
Személyes eszközök