Comment activer l’ultra DMA sous Linux ?

Vous venez d’’installer linux sur votre nouveau PC flambant neuf et il vous paraît aussi rapide que votre ancien pentium 166, ne criez pas tout de suite à l’’arnaque ! Il est, en effet, fort probable que linux, dans un souci de compatibilité maximale, ne soit pas paramétré pour exploiter au maximum toutes les capacités de votre matériel. Voici en quelques étapes simples, la procédure à suivre pour vérifier la configuration de votre contrôleur IDE, activez le support de l’ultra DMA et testez la rapidité de votre disque.
Tout d’abord, vous devrez vous assurer de deux choses :
1) Vérifier que le package hdparm soit présent sur votre système (voir article sur l’installation des packages sous Redhat, mandrake et debian)
2) Vérifier que le support de l’ultra DMA et de votre contrôleur IDE soit activé dans le noyau.
Pour le second point, pas de panique car toutes les options sont généralement activées par défaut pour ce qui concerne le support de l’ultra DMA et de votre contrôleur. Il peut cependant arriver que vous deviez activer le support du DMA ou de votre chipset si vous utilisez un contrôleur peu courant (une carte IDE PCI un peu « exotique » par exemple) ou tout simplement si cela n’est pas activé par défaut. Un moyen très simple de vérifier que votre matériel est bien supporté par votre système linux est de taper la commande dmesg. Celle-ci va vous lister l’ensemble des messages envoyés par le noyau depuis le démarrage de la machine.
Vous devriez entre autres, trouver des lignes qui ressemblent à cela :
VP_IDE: IDE controller at PCI slot 0000:00:11.1
VP_IDE: chipset revision 6
VP_IDE: not 100% native mode: will probe irqs later
VP_IDE: VIA vt8233 (rev 00) IDE UDMA100 controller on pci0000:00:11.1
    ide0: BM-DMA at 0xfc00-0xfc07, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0xfc08-0xfc0f, BIOS settings: hdc:DMA, hdd:pio
          Dans ce cas précis, il s’agit d’un contrôleur VIA mais vous pourriez en trouver d’autres : Intel, ALI, AMD ; NVidia, CMD, Promise ou encore Highpoint pour citer les plus courants.
Si pour une raison ou pour une autre, votre matériel n’était pas supporté, vous devrez en activer le support dans le noyau et recompiler celui-ci (voir notre article consacré à la compilation du noyau pour plus d’informations à ce sujet).
Une fois la question du support résolue, voici les étapes à suivre :


1) Il vous faut vérifier l’état de la configuration de l’ultra DMA à l’aide de hdparm. Pour ce faire, tapez la commande suivante en root : hdparm –c –d  /dev/hdx où hdx correspond à votre disque dur (par exemple hda pour le premier disque situé sur le premier canal IDE, ce qui correspond à la majeure partie des configurations).
Vous devriez obtenir un résultat de ce type :
golgoth:/# hdparm -c -d /dev/hda
/dev/hda:
 IO_support   =  1 (32-bit)
 using_dma    =  1 (on)
golgoth:/#
2) Si vous obtenez la valeur 1 pour les deux lignes, votre système est configuré de manière optimale. Si ce n’est pas le cas, tapez la commande suivante pour optimiser le système :
hdparm –c1 –d1 /dev/hdx.
Si cette commande s’exécute sans problème, vérifier l’état avec hdparm –c –d /dev/hdx, vous devriez obtenir des valeurs 1 pour chaque ligne.
3) Vous pouvez maintenant tester la configuration avec la commande hdparm –tT /dev/hdx.
Voici un exemple de résultat :


golgoth:/# hdparm -t -T /dev/hda
/dev/hda:
 Timing buffer-cache reads:   900 MB in  2.01 seconds = 448.05 MB/sec
 Timing buffered disk reads:   80 MB in  3.04 seconds =  26.31 MB/sec
Pour information, ces résultats ont été obtenus avec un disque de 20Gb 7200Tpm ultra ATA 66 connecté sur une carte mère avec un chipset VIA KT266A. Cette valeur est une moyenne de 10 essais afin d’obtenir un résultat valable.
Cette commande affiche donc le débit en méga bytes par seconde obtenu lors d’un test de lecture dans la mémoire cache du disque (Timing buffer-cache reads) et sur le disque lui-même (Timing buffered disk reads).

Afin de montrer l’’importance de l’activation de ces 2 paramètres, voici les résultats obtenus avec les différentes combinaisons de ces 2 paramètres :
 c=0c=1
d=03.42 MB/sec6.03 MB/sec
d=126.29 MB/sec26.31 MB/sec

On voit que dans notre configuration, le mode 32 bits n’a de l’importance que dans le cas où l’ultra DMA est désactivé.
Pour terminer, on notera la présence d’un autre paramètre qui peut avoir de l’importance dans certains cas où linux ne détecte pas correctement vos interfaces IDE. Ce paramètre permet de forcer la vitesse du canal IDE associé à votre disque. Pour ce faire, il suffit d’utiliser le paramètre –Xyy avec yy pouvant prendre les valeurs suivantes en fonction du débit :


Valeur de yyMode Ultra DMADébit Maximum (MB/s)
64Mode 016.7
65Mode 125.0
66Mode 233.3
67Mode 344.4
68Mode 466.7
69Mode 5100.0
70Mode 6133.3

Dans la pratique, vous utiliserez un des 4 paramètres suivants :
-X66 si votre disque est ultra dma 33
-X68 si votre disque est ultra dma 66
-X69 si votre disque est ultra dma 100
-X70 si votre disque est ultra dma 133

Par exemple, la commande sera hdparm –X68 /dev/hda pour forcer le mode ultra dma 66 sur le disque hda.
N’’oublions pas qu’il est absolument inutile de mettre le paramètre –X70 si votre disque est ultra dma 133 mais que votre carte mère ou votre carte IDE PCI ne supporte que l’ultra DMA 66 au maximum et inversément (carte mère ultra dma 100 et disque ultra dma 33 par exemple). Vous devez donc mettre ce paramètre pour qu’il corresponde à la vitesse maximale supportée par votre disque ET votre contrôleur IDE. Dans notre exemple, l’ajout de ce paramètre n’a rien changé car linux a tout détecté correctement dès le départ.
          Hdparm est un outil très puissant et il propose encore beaucoup d’autres paramètres que nous vous déconseillons fortement d’utiliser sous peine de rendre votre système instable ou même d’endommager votre disque, vous voilà prévenu !
Pour poster vos commentaires et posez vos questions, rendez-vous sur notre forum : Comment activer l’ultra DMA sous Linux ?.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.