Optimiser vos périphériques IDE avec hdparm
Article écrit par Arnaud Fontaine et wikisé par Pierre Chignac.
Introduction
Lorsque vous faites des copies de fichiers de grosse taille d'un disque dur à un autre ou que vous copiez le contenu d'un cédérom vers un disque dur, vous avez pu constater un ralentissement conséquent de votre système. Lors du transfert, la musique commence à grésiller par exemple ou la lecture des dévédéroms est particulièrement lente.
/dev/hda
.
Prérequis
L'outil que nous allons utiliser afin de tester et d'optimiser le taux de transfert du disque dur se nomme hdparm ; il correspond au paquet du même nom. Nous installons donc ce paquet :
# apt-get install hdparm
Notez aussi que certaines options doivent impérativement être activées dans le noyau afin de pouvoir activer le canal DMA de vos périphériques IDE. Tous les noyaux disponibles dans Debian GNU/Linux ont ces options activées mais si c'est un noyau que vous avez compilé vous même il vaut mieux vérifier que les options suivantes sont présentes :
ATA/IDE/MFM/RLL support -> IDE, ATA and ATAPI Block devices --> [Y] Generic PCI IDE chipset support --> [Y] Generic PCI bus-master DMA support --> [Y] Use PCI DMA by default when available --> [Y] VIA82CXXX chipset support
Si vous ne savez pas sur quelle chipset repose votre carte mère, vous pouvez toujours utiliser la commande lspci. Ce qui donne par exemple :
# lspci | grep "IDE" 00:07.1 IDE interface: VIA Technologies, Inc. VT82C586/B/686A/B PIPC Bus Master IDE (rev 06)
Améliorer le taux de transfert de vos disques durs
Pour vérifier le taux de transfert de votre disque dur il vous suffit de taper la commande suivante :
# hdparm -tT /dev/hda
Avant l'optimisation vous devriez avoir quelque chose de similaire à ça :
/dev/hda: Timing buffer-cache reads: 128 MB in 1.06 seconds = 120.75 MB/sec Timing buffered disk reads: 64 MB in 35.70 seconds = 1.79 MB/sec
La vitesse d'un disque dur est généralement comprise entre 10 et 30 Mo/s pour le deuxième test. Vous pouvez constater qu'ici le disque dur est horriblement lent. Nous allons donc remédier à ce problème en activant le contrôleur DMA et le transfert 32 bits de votre disque dur. Le contrôleur DMA (acronyme de Direct Memory Access ou accès directe à la mémoire) est une puce spéciale qui permet d'accéder à la mémoire vive sans passer par le processeur. J'ai activé cela sans aucun souci, à l'aide de hdparm, sur plusieurs disques durs de capacités et de marques totalement différentes, donc ne craignez rien : ces deux options sont sans danger.
Il suffit de taper la commande suivante pour activer ces deux options :
# hdparm -c 1 -d 1 /dev/hda /dev/hda: setting 32-bit I/O support flag to 1 setting using_dma to 1 (on) I/O support = 1 (32-bit) using_dma = 1 (on)
-c 1 correspondant à l'activation du transfert 32 bits et -d 1 à l'activation du canal DMA. Nous allons ensuite vérifier de nouveau le taux de transfert du disque dur afin de nous rendre compte de la nette augmentation de ce taux de transfert :
/dev/hda: Timing buffer-cache reads: 128 MB in 0.96 seconds =133.33 MB/sec Timing buffered disk reads: 64 MB in 2.44 seconds = 26.23 MB/sec
On remarque donc que le taux de transfert a été multiplié par 15. Vous ne devriez plus avoir de problème de lenteur avec vos disque durs désormais. Notez que les optimisations que vous avez faites sur un disque dur concernent toutes les partitions de ce disque quel que soit leur système de fichier.
Améliorer le taux de transfert de votre lecteur de cédérom ou de dévédérom
L'optimisation d'un lecteur de cédérom ou de dévédérom peut se faire quels que soient les pilotes que vous utilisez pour gérer vos lecteurs de cédérom. Ainsi pour faire des copies de cédéroms à cédéroms, l'émulation SCSI s'avère absolument indispensable. Pourant, que vous disposiez de l'émulation SCSI ou non, vous devrez taper la commande suivante :
# hdparm -c 1 -d 1 /dev/hdc /dev/hda: setting 32-bit I/O support flag to 1 setting using_dma to 1 (on) I/O support = 1 (32-bit) using_dma = 1 (on)
Normalement votre taux de transfert a dû être multiplié par deux et vous pouvez constater que la lecture de dévédéroms est bien plus fluide. De plus afin de réduire le bruit que fait le lecteur de cédérom ou dévédérom, vous pouvez choisir sa vitesse de lecture grâce à cette commande (où 40 correspond à la vitesse choisie, c'est à dire à 40 fois) :
# hdparm -E 40 /dev/hdc
Pour que vos optimisations soient définitives
Les optimisations que vous venez d'effectuer sont certes intéressantes mais au prochain redémarrage il faudra tout refaire. Pour pallier à ce problème nous allons les inscrire dans le fichier de configuration du programme hdparm
Vous devez éditer le fichier /etc/hdparm.conf
. Ce fichier contient dans une première partie l'ensemble des options que vous pouvez utiliser. Vous devez ensuite définir pour chacun de vos disques la liste des options que vous souhaitez activer.
Le bloc suivant active le DMA et l'accès 32 bit pour le disque /dev/hda
.
/dev/hda { quiet dma = on io32_support = 1 }
Si vous avez un lecteur de CD-ROM vous pouvez vous inspirer du bloc ci-dessous :
/dev/hdc { quiet dma = on io32_support = 1 cd_speed = 40 }
Pour activer de suite ces changements vous pouvez exécuter la commande :
# /etc/init.d/hdparm start
Pour activer ces changements à chaque démarrage, vous pouvez utiliser la commande update-rc.d dont le fonctionnement est expliqué plus en détail dans l'article Gérer les services lancés au démarrage, ce qui simplifie grandement la tâche car il vous suffit de taper une seule commande :
# update-rc.d hdparm start 10 2 3 4 5 . Adding system startup for /etc/init.d/hdparm ... /etc/rc2.d/S10hdparm -> ../init.d/hdparm /etc/rc3.d/S10hdparm -> ../init.d/hdparm /etc/rc4.d/S10hdparm -> ../init.d/hdparm /etc/rc5.d/S10hdparm -> ../init.d/hdparm
Le mot de la fin
Je tiens à remercier Patrice et Ptitlouis pour leurs suggestions constructives et j'espère que cet article vous aura été utile. Je vous conseille aussi de lire la page de manuel de hdparm afin d'en apprendre plus sur cette commande :
# man hdparm
Liens sur le sujet :
- Optimisez votre système Linux : Une documentation pour l'optimisation de votre système Linux en entier et pas seulement de vos périphériques IDE.
- Optimiser ses périphériques IDE : Une autre documentation sur l'optimisation de ses périphériques IDE qui fait partie des Formations Debian GNU/Linux d'Alexis de Lattre dont l'interview faite par Patrice est disponible sur Andesi.