Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

Ceci est une ancienne révision du document !


DokuWiki

Versions Warty et Hoary

Rédigé par ostaquet.

Comment optimiser les transferts des périphériques IDE ?

Par défaut, les périphériques IDE ne sont pas toujours optimisés au niveau performance sous Ubuntu. Pour ma part, les disques durs ont toujours été reconnus sur les machines que j'ai installées mais les lecteurs DVD ne l'étaient pas.

Sous Dapper Drake, l'activation des transferts DMA est permanente et automatique.

Néanmoins, voici la marche à suivre pour vérifier si les transferts DMA sont actifs sur votre configuration et comment les rendre actifs s'ils ne le sont pas.

Attention, les disques SATA ne sont pas concernés ! (pas besoin de DMA pour eux). Pour le sata, si la lecture est saccadee, ouvrir le fichier hdparm.conf ( taper sudo gedit"/etc/hdparm.conf" dans un terminal puis entrez votre mot de passe. ensuite, cherchez la ligne marquee io32_support=0 et remplacez le 0 par un 1 quittez en sauvant les parametres.

(Verifie sous edgy eft)

Il faut donc connaître les caractéristiques de ses périphériques IDE et de sa carte mère : si vous voyez que vos périphériques IDE ne sont pas bien optimisés par défaut au démarrage, il faudra créer un script shell avec des commandes hdparm pour optimiser les périphériques et configurer le système pour que ce script soit exécuté à chaque démarrage.

Nous prendrons comme exemple un ordinateur qui n'a qu'un seul périphérique IDE : un disque dur branché en Primary Master, donc accessible par /dev/hda. Cet exemple s'applique également aux lecteurs de CD, DVD et graveurs IDE.

Vous allez commencer par recueillir des informations sur votre périphérique :

sudo hdparm -I /dev/hda

Il faut regarder en particulier dans la section Capabilities ce qui concerne le DMA. Par exemple, pour notre disque-dur, nous avons :

DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 udma6

L'étoile sur udma5 signifie que mon disque dur supporte le DMA, et que, si le DMA est activé, il se mettra en mode UDMA 5.

Maintenant, regardez si le DMA est activé :

sudo hdparm -d /dev/hda

Vous devriez obtenir une ligne de la sorte :

/dev/hda:
using_dma = 1 (on)

Ici, le DMA est activé, donc le périphérique est configuré en UDMA - Cependant, le DMA peut ne pas être activé (using_dma = 0). Dans ce cas, examiner la section suivante pour l'activer.

Si votre périphérique supporte le DMA et que celui-ci n'était pas activé, alors il faut absolument le faire, vous gagnerez énormément en performance :

sudo hdparm -d1 /dev/hda

Remarquez que cette commande n'active le DMA que jusqu'au prochain redémarrage de la machine.

A savoir: suite à un bug dans hoary, il se peut que cette manipulation fasse planter votre démarrage de Gnome avec le message suivant: Failed to initialize HAL. Danc ce cas, supprimez cette modification permanente et lancez simplement l'activation de dma lorsque vous en avez besoin.

Pour activer le DMA au démarrage de la machine, vous devez éditer le fichier /etc/hdparm.conf à l'aide de la commande suivante [Alt]+[F2] puis :

(pour Ubuntu) : gksudo gedit /etc/hdparm.conf

(pour Kubuntu) : kdesu kate /etc/hdparm.conf

Vous pouvez ajouter (dans notre cas) les lignes suivantes :

/dev/hda {
  quiet
  dma = on
  io32_support = 1
}

Le paramètre quiet permet de rendre silencieuse la modification des propriétés du disque dur. Sans ce paramètre vous obtiendrez dans la console des informations sur l'état des modifications effectuées sur le disque dur. Le paramètre io32_support correspond à l'activation du transfert 32 bits.

Pour un lecteur cd-rom ou un graveur, ce sera :

/dev/hdc {
  quiet
  dma = on
  io32_support = 1
  cd_speed = 40
}

Le paramètre cd_speed n'est nullement obligatoire mais permet de limiter la vitesse de lecture pour limiter le bruit par exemple (dans l'exemple, 40 correspond à la vitesse choisie, c'est-à-dire 40 fois).

Il est possible de tester ces modifications sans redémarrer l'ordinateur par la commande :

sudo /etc/init.d/hdparm restart

Puis utiliser la commande hdparm sans le paramètre -d :

sudo hdparm /dev/hda

Vous devriez obtenir une liste d'informations équivalente à celle-ci :

/dev/hda:
 multcount    =  0 (off)
 IO_support   =  1 (32-bit)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 30515/255/63, sectors = 490234752, start = 0

Obtenir l'identifiant des périphériques IDE

Toutes les commandes reprises ci-dessus portent sur le périphérique IDE hda. Pour connaître l'identifiant de votre périphérique sur votre système, vous pouvez utiliser la commande suivante :

sudo dmesg | grep hd

Vous obtiendrez des lignes similaires à celles-ci qui vous permettront de connaitre les identifiants de vos périphériques IDE.

hda: Maxtor 6Y080P0, ATA DISK drive
hdb: LITE-ON LTR-40125S, ATAPI CD/DVD-ROM drive

Pour tester la vitesse du disque dur

Pour tester la vitesse de votre disque dur :

sudo hdparm -tT /dev/hda

Exemple de résultat :

/dev/hda:
Timing buffered disk reads:   70 MB in  3.07 seconds =  22.78 MB/sec

Note : si vous testez un lecteur de CD-ROM ou de DVD-ROM, veillez à insérer un support que votre périphérique est capable de lire afin de pouvoir faire le test. Dans le cas contraire (lecteur vide) vous obtiendriez le message suivant :

read() failed: Input/output error

Timeouts ou lecteur pas prêt

Si vos lecteurs sont configurés en mode Cable Select (physiquement, dans la machine) et si lorsque vous exécutez des commandes hdparm, vous recevez des erreurs relatives des timeouts ou des erreurs disant que le lecteur n'est pas prêt. Essayez de changer le lecteur en périphériques maître (master) ou esclave (slave) suivant la configuration de votre système. Une telle opération nécessite d'ouvrir le boitier et d'au moins savoir comment les lecteurs sont positionnés en mode Cable Select.

Opération non permise

Parfois, la commande d'activation du DMA (sudo hdparm -d1 /dev/hda) explicitée ci-dessus peut échouer avec un message "opération non permise" (Operation not permitted). Vous pouvez régler ce problème en éditant le fichier /etc/modules (par le biais de la commande sudo gedit /etc/modules).

Pour un chipset Intel, ajoutez les lignes :

piix
ide-core

avant la ligne :

ide-cd

Pour un chipset nForce ou AMD, ajoutez la ligne :

amd74xx

avant la ligne :

ide-cd

Pour un chipset VIA, ajoutez la ligne :

via82cxxx

avant la ligne :

ide-cd

Ensuite, redémarrer la machine et réessayez la procédure décrite ci-dessus.

  • materiel/optimisation_ide.1170008423.txt.gz
  • Dernière modification: Le 18/04/2011, 14:47
  • (modification externe)