Boostez vos I/O IDE avec hdparm

Posté par  . Modéré par Fabien Penso.
Étiquettes :
0
5
mar.
2001
Linux
Comme beaucoup le savent, hdparm est un outil bien sympathique permettant de booster les I/O sur les disques IDE. Sur les nouvelles cartes mères, il permet parfois d'avoir un facteur multiplicateur de 7 voire 8x ! Mais hdparm a une bien triste renommée. Délicat à l'utilisation, il peut vous rendre très heureux comme vous faire regretter de ne pas avoir sauvegardé vos données auparavant.

Il y a eu beaucoup de questions concernant hdparm sur #linuxfr ces derniers temps. J'en profite donc pour poster un lien vers un howto que O'Reilly a écrit voilà quelques mois. Il a l'avantage d'être court et clair même pour le Newbie(tm).

Attention! si vous tuez votre penguin avec hdparm, ne vous en prenez qu'à vous-même.

Aller plus loin

  • # merci :)

    Posté par  . Évalué à -1.

    ./configure --prefix=/bsdguy && make thanks

    il est vrai qu'avec tout le tintouin qu'il y avait dimanche sa vallait la niouze :)
  • # chitte question?

    Posté par  . Évalué à 1.

    >hdparm a une bien triste renommée

    Juste une petite interrogation.
    Il y a des pertes de données, soit. Mais est-ce dangeureux pour le disque dur en lui même?
    • [^] # Re: chitte question?

      Posté par  . Évalué à 1.

      Moi je rajoute systématiquement /sbin/hdparm -d1 /dev/hda dans rc.local pour enclencher le mode dma (ça double la vitesse de transfert sur un hd DMA 66 ça passe de 11 à 28 M/s), sinon le reste ça fait gagner entre 0,1 et 0,3 M/s -je ne sais pas si ça vaut le coup.
      Jamais eu de problèmes ni de pertes de données ! (rh6.2, debian2.2r0 ou mdk 7.2)
      • [^] # Re: chitte question?

        Posté par  . Évalué à 1.

        > Jamais eu de problèmes ni de pertes de données ! (rh6.2, debian2.2r0 ou mdk 7.2)
        Ce n'est pas un problème de système, mais un problème de matériel (controlleur IDE et disques) et à la rigueur de noyau. Si tu mets un mode non supporté par ton matos ou qui entre en conflit avce le reste de ta machine, attends-toi au pire (même si la plupart du temps tu ne perds rien).

        Cela dit, la moindre des choses est d'activer le transfert 32bits et le dma (-c 1 -d 1) à moins d'avoir du matos exotique.
        • [^] # Re: chitte question?

          Posté par  . Évalué à 1.

          Oui mais le matériel est qd même géré par le noyau qui est différent sur ces 3 distribs :)
          • [^] # Re: chitte question?

            Posté par  . Évalué à 1.

            C'est ce que j'ai voulu dire (très maladroitement) par "à la rigueur de noyau". C'est là que j'ai l'impression de taper avec des moufles ;-)
            En règle générale, tout ce qui concerne le matériel concerne le noyau (et des versions du noyaux différentes supposent un support du matériel différent).

            Ce qui m'a fait réagir, c'est que la fin de ton post laissait entendre que l'accélération du matos ne dépendait que de la distrib alors qu'une distrib récente sur une vieille bécane ne donneras pas l'effet escompté. L'UDMA, ce n'est pas un serveur Web.
      • [^] # DMA au démarrage dans le Noyau ?

        Posté par  . Évalué à 1.

        Ya pas une option dans la compilation du noyau qui permet de booter directement en utilisant le mode dma ? ENABLE_DMA_BOOTTIME ou un truc équivalent ?

        Je crois que c'est même encore plus simple que de rajouter des lignes dans rc.local si on recompile de toute façon le noyau. Par contre effectivement, pour ceux qui préfèrent garder le noyau de base de la distrib', vaut mieux passer par ce genre de manip.
        • [^] # Re: DMA au démarrage dans le Noyau ?

          Posté par  . Évalué à 1.

          Si, il est possible d'utiliser le mode DMA par défaut en recompilant un noyau (les distribs ne l'activent pas par défaut pour des raisons évidentes).
          Sinon sur Red Hat 7, il sufft de mettre les paramètres que l'on veut dans le fichier /etc/sysconfig/harddisks (qui est très bien commenté d'ailleurs) et cela s'appliquera automatiquement au démarrage.
        • [^] # Re: DMA au démarrage dans le Noyau ?

          Posté par  . Évalué à 1.

          > de rajouter des lignes dans rc.local
          Perso, pour ceux qui utilisent SysVinit, je conseille de le mettre en fin de rc.sysinit, vu que les modules sont accessibles et que les services chargés après vont utiliser le disque. (Accessoirement, ma RH6.2 lançait rc.local à chaque changement de runlevel.)

          [OffTopic]
          Sur Léa, j'ai trouvé un bon article sur l'optimisation du système : http://www.lea-linux.org/admin/optimise.php3(...)
        • [^] # Re: DMA au démarrage dans le Noyau ?

          Posté par  . Évalué à 0.

          J'ai testé cette option à mes dépend. J'ai une config hard de monteur avec un disk 33 et une CM Asus P5A, lors d'un accés un peu long au disk (gros fichier, transfert sur plusieurs fichiers) et j'ai eu des messages d'insulte du style:
          Access DMA failed
          ide0:.....IRQ 14 (Busy)
          force de reboot méchant j'ai perdu 1Go de travail.
          Je suis heureux!
          • [^] # Re: DMA au démarrage dans le Noyau ?

            Posté par  . Évalué à 0.

            donc, si je comprends bien, on peut perdre des données (nécessite un reformatage) mais on ne peux pas exploser le disque?

            Alors, j'ai bon?
        • [^] # Re: DMA au démarrage dans le Noyau ?

          Posté par  . Évalué à 0.

          Pas besoin de hdparm, moi! Il suffit de selectionner le bon pilote de busmaster dans le noyau (s'il y est). Je suis passé de +/- 5 Mo/s à +/- 11 Mo/s.
    • [^] # Re: chitte question?

      Posté par  . Évalué à 0.

      Questions bètes :
      ça marche avec le noyau 2.4 et devfs?
      Est-ce util si on a compilé le support DMA dans le noyau?
      • [^] # Re: chitte question?

        Posté par  . Évalué à 1.

        ça marche avec le noyau 2.4 et devfs?
        Avec le 2.4 pas de problème (peut-etre au niveau de la version qd meme), devfs je ne sais pas.

        Est-ce util si on a compilé le support DMA dans le noyau?
        Je suppose que si tu as compilé le support dans le noyau (ide dma par défaut) ça te permet quand meme de régler qq paramètres (avec l'option -m par exemple).
        • [^] # Re: chitte question?

          Posté par  . Évalué à 1.

          bah, je voit pas en quoi le DevFS génerais là...
    • [^] # Re: Réparation

      Posté par  (site web personnel) . Évalué à 1.

      Pour restaurer le disque, voici la recette de Bernard Mayer :
      > Aie, bobo !
      > hdparm -idma=yes, ... udma 0 1 *2,
      > bref, une belle bete
      > hdparm -t = 3.5M/s
      > hdparm -d1 = 9.5
      > hdparm -c1 = 5.6
      > hdparm -c1 -d1 = 9.9
      > youpi, je lance updatedb,
      > dma error, plus rien possible, tant pis reboot,
      > le disque n'est plus reconnu au setup !

      > Que fais-je d'un Quantum UDMA, mon meilleur disque ?

      Ok, j'ai trouve.

      le dd veut bien demarrer, sur une vieille machine, en slave.
      hdparm -c0 -d0 -k1 /dev/hdb, et le tour est joue
  • # Neu² : Et sous NT ? :)

    Posté par  . Évalué à 0.

    nan, je déconne :)
    m'enfin,j'aimerai bien savoir comment sous NT est configuré le transfert pour comparer à linux !
  • # Et pour les scsi?

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    C'est peut-etre une bétise, mais est-ce qu'il existe un outil similaire pour les disques SCSI?
    • [^] # Re: Et pour les scsi?

      Posté par  (site web personnel) . Évalué à 1.

      Hdparm gère les disques IDE et SCSI, mais certaines options ne fonctionnent qu'avec les disques IDE.
      Pour les disques SCSI, il y a aussi dans le paquetage (Debian) hwtools :

      scsiinfo: displays SCSI drive low-level information and modifies SCSI
      drive settings,
      scsidev: makes permanent SCSI LUN -> devicename connections,
      scsifmt: low-level SCSI formatter,
      sraw: benchmarks raw SCSI I/O rates bypassing the buffer cache,
      scsistop: low-level SCSI drive start/stop program,
      scsi-spin: program to manually spin up and down a SCSI device.
    • [^] # Re: Et pour les scsi?

      Posté par  . Évalué à 1.

      Il n'y a pas besoin d'utiliser hdparm puisque le SCSI est quasiment toujours en DMA. C'est parce que l'IDE est une daube et qu'on l'a ensuite amélioré qu'il y a plein de réglages possibles. En SCSI tu es directement plein pot.
  • # ????

    Posté par  . Évalué à 0.

    Tu n'as pas d'autre new plus acienne que celle-ci ?????
  • # Oubliez pas l'Exellentissime Guide de Survie 8)

    Posté par  . Évalué à 1.

    Je sais pas pour vous, mais pour un débutant doublé d'une tête de pioche comme moi, le Guide de Survie est une source de savoir essentielle.
    Les explications y sont claires et la plupart des problèmes que se pose un débutant y sont abordés en offrant des solutions simples a mettre en oeuvre.
    Bref le bonheur !

    hdparm y est abordé... comme ça tombe bien 8).

    Expérience perso:
    Je suis sous SuSE 6.4 et j'ai créé un fichier /etc/rc.disk qui est invoqué par /etc/rc.d/rc en ajoutant la ligne ". /etc/rc.disk" (sans les guillemets) dans la partie "configuration".
    Tout tourne sans probleme et mes hd sont passés de 6 a 20 MB/sec ... Top !
    Je n'ai rencontré aucun problème d'aucune sorte.
  • # Il calcule comment?

    Posté par  . Évalué à 0.

    lors d'un hdparm -T, je me prends un debit 180 mo/s, c'est quoi cette connerie? c'"est pas mon petit ide qui s'est transformée en raid scsi pendant la nuit?
    • [^] # Re: Il calcule comment?

      Posté par  . Évalué à 1.

      -T c'est pour le cache du disque...
      faudrait lire le man mon vieux ;-)
      hdparm -t te sera plus utile
    • [^] # Re: Il calcule comment?

      Posté par  . Évalué à 1.

      man hdparm :

      ... -T Perform timings of cache reads for benchmark and comparison purposes. For meaningful results, this operation should be repeated 2-3 times on an otherwise inactive system (no other active processes) with at least a couple of megabytes of free memory. This displays the speed of reading directly from the Linux buffer cache without disk access. This measurement is essentially an indication of the throughput of the processor, cache, and memory of the system under test. If the -t flag is also specified, then a correction factor based on the outcome of -T will be incorporated into the result reported for the -t operation.
      ....

      c'est pourtant pas difficile de taper "man hdparm" ;)
      • [^] # Re: Il calcule comment?

        Posté par  . Évalué à 0.

        Je me suis mal exprimé, je m'explique. La vitesse théorique de mon disque dur(donc de la cache) est de 66 mo/s(ATA66).
        Jusque la, c'est logique mais hdparm il met 180 mo/s. Je sais qu'il ne faut pas utiliser ces résultats pour comparaison(j'avais lu la manpage), je posais la question pour savoir comment il calculait(c'est pour ma culture generale). Est ce qu'il utilise une partie de la RAM(qui est plus rapide que le bus d'I/O) ou si c'etait une valeur pifometrique?
        Avec mon ancien disque(je_sais_plus_quoi 4, donc 16,6 mo/s théorique), il trouve 136 mo/s.
        Et j'aimerais bien savoir ce que ca représente, c'est tout.
        • [^] # Re: Il calcule comment?

          Posté par  (site web personnel) . Évalué à 1.

          -T teste le cache de Linux. Pas de ton disque. Donc la vitesse théorique max de ton disque ne change rien.

          Relis le man posté plus haut un peu mieux. (elle n'existe pas en francais cette page ?)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.