Hdparm

hdparm est l’utilitaire par excellence sous Linux pour régler les paramètres des disques durs IDE.

Analyser son disque

Tests de performances

hdparm permet déja d’avoir un petit aperçu des performances de son disque avec les options -t et -T:

#hdparm -tT /dev/hda



/dev/hda:
Timing cached reads: 872 MB in 2.00 seconds = 436.00 MB/sec
Timing buffered disk reads: 120 MB in 3.00 seconds = 40.00 MB/sec

Le premier test représente le flot de données possible impliquant le système, le CPU et la RAM. En gros la partie qui va traiter les informations du disque, mais sans prendre en considération les performances du disque lui même.

Le second test représente le débit d’une lecture séquentielle d’informations tout en utilisant le tampon du disque, sans que le système de fichiers vienne jouer un rôle pénalisant. Dans les conditions normales, lors d’accès simultanés à plusieurs fichiers, en effet le débit est parfois de seulement la moitié du chifre obtenu avec -T.

Informations

  • Bon après ce premier test, il est peut-être bon d’intéroger le disque lui même pour qu’il nous dise ses caractèristiques. On utilise alors les options -i ou -I


#hdparm -i /dev/hda



/dev/hda:

Model=ST340016A, FwRev=3.75, SerialNo=3HS3KKKY
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78165360
IORDY=on/off, tPIO={min:240,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


  • Voir simplement

Utiliser hdparm sans flags donne les réglages primordiaux.

hdparm /dev/hda



/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 = 8 (on)
geometry = 12009/16/63, sectors = 78165360, start = 0


DMA

Le premier facteur, le plus décisif, est le mode dma, ici nous voyons que tout va bien car nous sommes en udma5 ce qui est le mode le plus élévé et correspond au ATA que nous utilisons.

Il arrive que certaines distributions Linux ne règlent pas le mode dma à son plus haut. Il faut donc alors y palier soit même (avec l’option -d1).

Une autre option sympathique est l’option -y qui permet de mettre au repos un disque, ce qui est très pratique pour éviter le bruit du moteur d’un vieux disque de backup qui n’a pas besoin d’être allumé constamment.

Acoustic Management

  • L’AM à une influence indéniable sur les temps d’accès. Ceux ci peuvent grimper à 20 ms même sur les disques récents. D’experience les disques font déja pas beaucoup de bruits à moins d’avoir un vieux dinosaure donc on peut largement s’en passer.

Pour connaître les valeurs

hdparm -M /dev/hda



/dev/hda:
acoustic = 0 (128=quiet … 254=fast)

Pour choisir fast:

hdparm -M254 /dev/hda

Pour choisir silencieux:

hdparm -M128 /dev/hda


Power Management

hdparm -Bx /dev/hda

Set Advanced Power Management feature, if the drive supports it. A low value means aggressive power management and a high value means better performance. A value of 255 will disable apm on the drive.

Write buffer

hdparm -W1 /dev/hda

Permet d’utiliser le cache en écriture. Cette fonction est souvent critiquée par les administrateurs car elle rend vulnérable le système de fichiers en cas de coupure de courant. En fait ce risque est très faible et avec les système de fichiers journalisés, cela n’aurait de conséquence tragique à part la perte du fichier en cours d’écriture à ce moment là. L’amélioration des performances en écriture semble par contre être non négligeable.

Lookahead

hparm -A1 /dev/hda

Disable/enable the IDE drive’s read-lookahead feature (usually ON by default). Usage: -A0 (disable) or -A1 (enable).

Multcount

hdparm -m16 /dev/hda

La valeur de m représente le nombre de secteur pouvant être lus par interruption.
La valeur va de 0 (off) à 16 voir 32 pour les disques les plus récents. L’option -i peut être utilisée pour trouver le réglage maximum supporté par le disque (regardez le champ MaxMult-Sect). Ce réglage peut grandement améliorer les performances du disque (surtout les disques modernes qui autrement seraient bridés).

IOsupport

hdparm -c0/1/3 /dev/hda

Query/enable (E)IDE 32-bit I/O support. A numeric parameter can be used to enable/disable 32-bit I/O support: Currently supported values include 0 to disable 32-bit I/O support, 1 to enable 32-bit data transfers, and 3 to enable 32-bit data transfers with a special sync sequence required by many chipsets. The value 3 works with nearly all 32-bit IDE chipsets, but incurs slightly more overhead. Note that “32-bit” refers to data transfers across a PCI or VLB bus to
the interface card only; all (E)IDE drives still have only a 16-bit connection over the ribbon cable from the interface card.

Unmasking

hdparm -u1 /dev/hda

A setting of 1 permits the driver to unmask other interrupts during processing of a disk interrupt, which greatly improves Linux’s responsiveness and eliminates “serial port overrun” errors.
Difficile à traduire mais cela semble rendre le disque moins vulnérables aux interruptions provoquées par les autres éléments du PC.
Attention cette fonctionnalité avec certains vieux disques et controlleurs peut corrompre votre système de fichiers. Donc vaut mieux faire des tests sur une partition qui craint rien au préalable.


Queuing depth

hdparm -Qx /dev/sda

Cela permet de changer le nombre (x) d’accès pouvant être mis en file avec les disques SATA NCQ. Comme nous l’avons vu, c’est un peu experimental.

Gestion du repos du disque

Il est pratique de déconnecter un disque de backup justement un peu ancien. On a deux solutions soit l’on stop directement le disque (-y) soit l’on régle une période de temps d’inactivité mettant le disque au repos (-S).

Réglages permanents au boot

Cf le fichier /etc/hdparm.conf