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 et ultérieur, l'activation des transferts DMA est permanente et automatique.
Si le DMA n'est pas actif par défaut, ceci est probablement du à une incompatibilité matérielle ou à un cablage difficile. Exemple : sur certains chipset l'activation du DMA fait planter le noyau lors du premier accès disque, si le lecteur CD/DVD n'est pas en master sur sa propre nappe IDE (constatée sur une Feisty avec une carte mère Gigabyte chipset geforce 6100)
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)
Vérifier si les transferts DMA sont actifs
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.
Activer le DMA directement
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.
Remarques
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
En cas de problème
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.