====== HDParm ======

===== Présentation =====
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.

===== Configuration/Installation  =====

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

  #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é :

  #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 :

  #hdparm -d1 /dev/hda

Remarquez que cette commande n’active le DMA que jusqu’au prochain redémarrage de la machine.
==== Activer le DMA au démarrage de la machine ====

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 :

  #nano /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 :

  #/etc/init.d/hdparm restart

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

  #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

==== 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 :

  #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 :

  #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 (#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 #nano /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
