Améliorer les performances des disques durs avec hdparm

Gazette Linux n°079 — juin 2002

Sébastien Marbrier

Adaptation française 

Prénom Nom du relecteur

Relecture de la version française 

Article paru dans le n°079 de la Gazette Linux de juin 2002.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

1. Introduction
2. Observer le disque dur
3. Configuration du périphérique
3.1. Gestion des E/S
3.2. MultSect ou MultCount
3.3. Activer le DMA
3.4. Modes PIO et DMA
3.5. Readahead
4. Derniers mots

De nos jours, les périphériques IDE disposent déjà d'un taux de transfert élevé (grâce à la technologie UltraDMA, mais il reste d'autres méthodes pour améliorer la performance de vos disques durs et nous vous montrerons comment le faire avec l'utilitaire hdparm.

1. Introduction

hdparm est un utilitaire fournissant un puissant contrôle sur le réglage des disques durs (HD PARaMeters) et c'est de ce que nous allons discuter dans ce document. Parfois votre disque dur est réglé pour ne pas utiliser toute sa puissance comme il le devrait et c'est la raison pour laquelle vous pourriez être gêné par ses performances. Avec hdparm nous pouvons comme par magie atteindre sa puissance maximale en utilisant toutes ses fonctionnalités.

2. Observer le disque dur

La première chose à faire, est de rassembler toutes les informations concernant votre disque dur et ses réglages actuels. Ces informations serviront de base pour la reconfiguration. Soyez extrêmement prudents dans toutes les étapes car toute mauvaise configurations pourrait endommager votre disque, soit partiellement (les données), soit totalement (le matériel).

Supposons que /dev/hda soit notre disque. Saisissons la commande suivante :

darkstar:~$ hdparm -i /dev/hda

Ce qui devrait nous donner quelque chose comme :

/dev/hda:

Model=QUANTUM FIREBALLlct20 20, FwRev=APL.0900, SerialNo=552114732078
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs } 
RawCHS=16383/16/63, TrkSize=32256, SectSize=21298, ECCbytes=4 
BuffType=DualPortCache, BuffSize=418kB, MaxMultSect=8, MultSect=off
CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=39876480
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 
Drive Supports : ATA/ATAPI-5 T13 1321D revision 1 : ATA-1 ATA-2 ATA-3
ATA-4 ATA-5
    

Vous devriez vous demander « Mais que signifie tout ceci ? ». Ne soyez pas effrayés, ces informations vous donnerons bientôt le sourire. Nous avons ici beaucoup d'informations importantes et utiles… regardons certaines :

  • MaxMultSect : ce champ nous indique que le nombre maximum de secteurs pouvant être lus en une fois.

  • MultSec : celui-ci indique le nombre actuel de secteurs lus simultanément.

  • Modes PIO et DMA : ce sont les modes supportés par votre disque dur. Celui marqué par une astérisque (*) est actuellement utilisé.

  • AdvancedPM : si oui cela signifie que votre disque supporte APM (Advanced Power Management) ou Gestion Avancée de l'Énergie.

Une autre commande pour obtenir d'autres informations est : darkstar:~$ hdparm /dev/hda nous donne :

/dev/hda: 
multcount = 0 (on) 
I/O support = 0 (16-bit) 
unmaskirq = 0 (off) 
using_dma = 0 (off) 
keepsettings = 0 (off) 
nowerr = 0 (off) 
readonly = 0 (off) 
readahead = 8 (on) 
geometry = 2482/255/63, sectors = 39876480, start = 0
            

Brève description…

  • multcountest le nombre de secteurs lus simultanément.

  • I/O support indique le mode de fonctionnement de votre disque (16/32/32sync).

  • using_dma nous dit si la fonctionnalité DMA est utilisée ou non.

  • readonly ne vaut normalement 1 que pour les disques compacts, ce paramètre indique au système si le périphérique est en lecture seule ou non.

  • readaheadmontre combien de secteurs seront lus en avance lors de l'accès au disque.

Si vous ne comprenez certaines de ces informations, ne vous découragez pas, vous n'êtes pas bête, et nous les expliquerons au fil de ce document. Certains de ces paramètres sont liés physiquement et non logiquement au matériel de votre disque dur, à moins de changer de matériel, vous ne pourrez pas les modifier (et si vous parveniez, vous endommageriez votre disque dur et détruiriez toutes vos données. =]).

3. Configuration du périphérique

À présent… la démonstration ! Nous allons configurer notre disque dur. SOUVENEZ-VOUS : les erreurs au cours du processus de configuration peuvent endommager votre disque dur ainsi que toutes ses données. Les données fournies par hdparm -i sont à présent votre guide. Suivez-les et vous ne devriez rencontrer aucun problème.

3.1. Gestion des E/S

À moins d'avoir une carte d'interface (E)ISA IDE, les autres (PCI/VLB) supportent toutes le mode 32 bits. Si votre processeur est plus récent qu'un 486, vous avez sans doute un contrôleur PCI IDE. Si ce n'est pas le cas, vérifiez…

  • hdparm -c0 active le mode de fonctionnement sur 16 bits.

  • hdparm -c1 active le mode de fonctionnement 32 bits.

  • hdparm -c3 active le mode 32 bits synchronisé.

Le mode 3 n'est utile que pour certains jeux de puces. Les gens utilisent souvent le mode 1 pour de meilleures performances. Nous n'avons trouvé aucune information sur le mode 2 (on suppose qu'il s'agit du mode 16 bits synchronisé).

3.2. MultSect ou MultCount

Celui-ci est facile. Vérifiez l'information MaxMultSect de votre disque dur pour savoir ce que vous pouvez faire. Nous positionnons notre MultSect à 8 puisque notre disque dur le supporte, donc… #hdparm -m 8 /dev/hda

N'oubliez pas de replacer /dev/hda par votre VOTRE périphérique et 8 par la valeur MaxMultSect supporté par votre disque dur grâce à hdparm -i.

3.3. Activer le DMA

Le plus simple de tous. Tapez simplement : #hdparm -d 1 pour activer le mode DMA.

3.4. Modes PIO et DMA

Vous pouvez activer les deux en utilisant le drapeau -X. Celui-ci, est à utiliser avec des précautions EXTRÊMES, au risque d'éjecter votre disque dur (CROYEZ-MOI ! ) et d'en faire le premier disque dur à atteindre la Lune par lui-même. N'utilisez que les modes gérés par votre disque dur.

Hum, cela fonctionne ainsi… pour les modes DMA normaux (DMA multi-mots ou mdma, utilisez -X 32 + identifiant DMA. Pour mdma2, ce serait : # hdparm X 34 /dev/hda (32 + 2 de mdma2)

Pour que les modes PIO et UltraDMA la procédure est presque identique. La différence est que pour les modes PIO le nombre de base est 8 et pour les modes UltraDMA c'est 64. Le disque dur utilisé lors de l'écriture de ce document supporte ATA100, nous avons alors activé le mode udma5 grâce à : # hdparm -X69 /dev/hda

Gardez à l'esprit que les modes DMA les plus élevés ne sont disponibles que sur quelques jeux de puces.

Les modes ATA66 et ATA100 nécessitent un câble IDE à 80 pistes. Dites-vous que configurer un disque en mode ATA100 sans ces câbles ne fonctionnera pas.

3.5. Readahead

L'option readahead N'EST PAS la même chose que MultCount. MultCount indique la faculté du matériel à lire plus d'un secteur en une fois alors que l'option readahead est le nombre de secteurs préparés avant que l'ordinateur ne les lise. Readahead est une fonctionnalité formidable pour la lecture de fichiers volumineux mais dégrade les performances avec des petits fichiers. Une bonne idée est de donner à readahead la même valeur que MultCount, ainsi il ne sera pas nécessaire d'effectuer plus d'un accès à la fois pour lire plus de secteurs en avance.

Si vous allez accéder à des fichiers volumineux vous pouvez assigner une plus grande valeur à readahead. La valeur par défaut est 8 secteurs par accès en lecture (environ 4 kilo-octets). À présent la syntaxe : # hdparm -a N /dev/hda

N est le nombre de secteurs pour readahead.

4. Derniers mots

Il existe beaucoup d'autres fonctionnalités que vous pouvez configurer avec hdparm. La plupart sont décrites dans la page man. Celles que nous avons étudiées sont les plus courantes.

La configuration sera réinitialisée au redémarrage de la machine (la conservation des paramètres ne fonctionne qu'avec le redémarrage à chaud). Placez les commandes dans votre rc.local (avec de longues configurations, une bonne idée serait peut-être d'utiliser un rc.hdparm ou quelque chose du même genre).

Tout doute sur ce document peut être envoyé à :

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.