Journal Gestion du matériel gourmande en resources (udev, hal) ?

Posté par  (site web personnel) .
Étiquettes : aucune
0
6
juin
2008
Bonsoir,

Suite au récent journal parlant de la manière d'installer GNU/Linux sur un vieux PC, et à des pensées personnelles, je me demande jusqu'à quel point la gestion du matériel peux prendre des ressources (je pense au temps CPU au démarrage).

En effet, j'ai bien l'impression que udev et HAL [http://en.wikipedia.org/wiki/HAL_(software)], à eux deux, consomment pas mal. je n'ai pas de chiffres, mais il me semble que c'est ce qui met le plus de temps à démarrer. De plus on voit des gens se plaindre de la lenteur d'udev (que j'ai rencontrée moi même, à une moindre échelle), et une dépêche récente parle des problèmes de HAL [http://linuxfr.org/2008/05/08/24045.html]

Alors voilà, la question est ouverte.

Je suppose que si cela prend du temps, c'est qu'il faut tester toutes les combinaisons possibles de matériel. Et comme finalement, GNU/Linux support nativement plein de matériel, ça fait plein de tests à faire.
Serait il possible de mettre en cache le résultat de cette investigation ? Comme ça, ça prend du temps juste la première fois. Ensuite tout est cherché en cache. Bien sûr il faudrait faire quelques petits tests pour voir si il n'y a pas eu de changement, mais on pourrait penser que c'est plus rapide ...

En regardant comment le EEEpc ou d'autres pc similaires peuvent faire booter Linux rapidement sur une config matérielle maîtrisée, on peut raisonnablement en déduire que le problème de performances vient bien de là.

Qu'en pensez vous ?
  • # Temps variable

    Posté par  . Évalué à 1.

    Moi ce que je ne comprend pas, c'est le temps de démarrage variable du simple au décuple que je constate sans rien changer à ma config

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Temps variable

      Posté par  . Évalué à 2.

      fsck mon cher watson ?
      • [^] # Re: Temps variable

        Posté par  . Évalué à 4.

        Pas seulement, il se peut aussi que la distrib' soit en attente du réseau (ex : DHCP) et que le démarrage ne se poursuive que sur un timeout. Vécu aussi.
        • [^] # Re: Temps variable

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

          J'ai eu ça à une époque (1 ou 2 ans) sous Mandriva Linux, je sais pas si ça a été corrigé depuis...
          • [^] # Re: Temps variable

            Posté par  . Évalué à 3.

            Sur Ubuntu également. Trop de trucs en cascade et qui ne communiquent pas forcément ensemble : /init.d, qui contient S10network, qui veut démarrer toutes les interfaces réseau déjà configurées dans un fichier propre, qui contient une référence au DHCP, qui provoque le lancement du programme idoine, qui préfère mourir plutôt que d'échouer dans sa mission, ce qui peut être très long si le câble réseau n'est pas branché.

            En général, un petit Ctrl-C permet de vite passer à la suite (quitte à rappeler soit même pump ou dhclient une fois loggué s'il n'y a pas déjà un daemon pour s'en charger).
            • [^] # Re: Temps variable

              Posté par  . Évalué à 2.

              En fait, suite au post, je viens de me rendre compte que c'est quand j'ai un câble réseau branché que ça met du temps.

              « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

              • [^] # Re: Temps variable

                Posté par  . Évalué à 3.

                Ça peut donc être les mêmes causes :débranchée, la carte réseau se présente comme telle et le processus échoue, branchée, ton système est peut-être en attente d'une adresse DHCP ou autre ...
    • [^] # Re: Temps variable

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

      Ubuntu?

      Parce que la splash screen d'Ubuntu ne permet pas de savoir qu'un fsck est en route donc effectivement, parfois, on peut se demander se que fait la machine...

      Chez moi, sur ma debian, c'est fsck à l'arret du PC. Ca évite d'attendre trois plombe au démarrage.
      • [^] # Re: Temps variable

        Posté par  . Évalué à 2.

        Je suis sous Mandriva, j'avais pas ce problème sous Ubuntu si je me souviens bien.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: Temps variable

          Posté par  . Évalué à 2.

          Les distributions y sont pour très peu en général : elles intègrent les mêmes règles hal et udev. Il est probablement que si tu prends deux distributions avc la même version de noyau, elles seront aussi rapides....

          Le problème introduit par ces facilités est qu'effectivement, un périphérique peut retarder le démarrage de toute la machine...

          ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

          • [^] # Re: Temps variable

            Posté par  . Évalué à 2.

            Mais quel périphérique puisque ma configuration ne change pas. Je ne branche rien, je ne met pas de CD, et j'ai un temps très variable de démarrage de udev

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

            • [^] # Re: Temps variable

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

              On peut imaginer que l'ordre d'initialisation (aléatoire) peut avoir une influence.

              Genre sleep 20s si je ne trouve pas un périphérique dont je dépend (enfin ce n'est sûrement pas aussi gros)
      • [^] # Re: Temps variable

        Posté par  . Évalué à 1.

        Parce que la splash screen d'Ubuntu ne permet pas de savoir qu'un fsck est en route
        Ce n'est plus le cas. Avec la mise à jour en Hardy, j'ai eu la surprise de découvrir qu'un message apparaissait sur le splash screen avec le détail des opérations en cours.
        • [^] # Re: Temps variable

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

          Je suis encore en version Gutsy et, tous les 30 démarrages, j'ai un fsck bien visible (non caché par le splash screen).
          • [^] # Re: Temps variable

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

            Depuis les 3 ou 4 release d'ubuntu qui ont défilé sur ma machine, le fsck était toujours visible. Maintenant c'est juste plus joli avec Hardy, comme dit plus haut c'est intégré au splash screen plutôt que basculer sur un tty.

            De toute façon, le fsck, c'est tous les 30 montages, donc tous les mois environ pour moi qui éteins ma machine tous les soirs.

            Enfin, sur Hardy, je trouve le temps de démarrage tout à fait correct. Jusqu'a GDM, c'est plus rapide que de GDM au bureau Gnome avec Compiz qui fait cuicui.
            • [^] # Re: Temps variable

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

              Ca doit être toute interaction avec le boot qui est intégrée dans usplash, parce que pour entrer la clé de chiffrement de mes partitions, c'est également un zoli dialogue dans usplash. Enfin en tout cas c'est effectivement une nouveauté de Hardy.
      • [^] # Re: Temps variable

        Posté par  . Évalué à 2.

        Sous Ubuntu 8.04, par défaut le splashscreen ne masque pas le lancement de fsck, en fait il y a une ligne en rouge qui indique que fsck est en cours en même temps que le splashscreen tourne.

        De toute façon ça se remarque fortement, car entre 30s pour un boot normal, sur le portable de ma copine le boot passe facilement à 2min quand il fait le fsck.
  • # C'était mieux avant.

    Posté par  . Évalué à 2.

    Il y a toujours la possibilité de compiler judicieusement son kernel puis configurer son système pour se passer de HAL ou udev.

    C'était d'ailleurs comme ça qu'on faisait avant, et je suppose que c'est ce que font les vendeurs qui livrent leur hardware préconfiguré avec Linux.
    • [^] # Re: C'était mieux avant.

      Posté par  . Évalué à 5.

      avec tous les périphériques usb que l'on a maintenant (disques durs externes, clé usb, appareils photos), Hal c'est bien pratique tout de même. Et en plus on a moins de messages sur les forums linux genre "je n'arrive pas à écrire sur ma clé usb..."

      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

      • [^] # Re: C'était mieux avant.

        Posté par  . Évalué à 3.

        j'ajouterais que je n'ai pas vraiment remarqué de problème avec udev, mais je n'ai pas trop cherché à comprendre non plus. En tout cas, j'avais un gros goulot d'étranglement avec FAM, qui de temps en temps bloquait les processus d'ouverture de fichier, et je me porte pas plus mal depuis que je l'ai effacé. (mais là on s'éloigne de la gestion du matériel).

        En tout cas un cache pour le matériel, cela pourrait être bien vu que ce n'est pas souvent que je modifie mon ordinateur. (je pensais qu'il y en avait déjà un)

        Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

      • [^] # Re: C'était mieux avant.

        Posté par  . Évalué à 8.

        Et en plus on a moins de messages sur les forums linux genre "je n'arrive pas à écrire sur ma clé usb..."

        Sinon, on peut aussi enlever les pilotes de la carte réseau.
      • [^] # Re: C'était mieux avant.

        Posté par  . Évalué à 2.

        Et en plus on a moins de messages sur les forums linux genre "je n'arrive pas à écrire sur ma clé usb..."

        et moins de journaux linuxfr avec cette même question
    • [^] # Re: C'était mieux avant.

      Posté par  . Évalué à 4.

      Avant udev/dbus/Hal la reconnaissance automatique du matériel relevait plus du coup de chance et du savoir faire des distributeurs.

      Aujourd'hui grâce à udev/dbus/Hal à peu près toutes les distributions se valent en terme de reconnaissance matérielle. Cela est à payer au prix fort: Le démarrage est devenu lent car les distributions sont conçues de telle sorte qu'à peu près tout ce qui est supportable est supporté y compris les pilotes propriétaires.

      Pour en arriver la, les périphériques sont systématiquement compilés sous forme de modules et chargé à la demande en fonction des résultats de l'évaluation faite par udev. Sur des machines ayant mémoire à profusion et des CPUs dernier cri cela ne se sent pas trop. Par contre sur des machines anciennes c'est un frein considérable.

      Pour remédier à cet état de fait, recompiler le kernel est une option qui apporte énormément. Pour ma part je compile mon kernel de telle sorte que le matériel non amovible (CPU type, ACPI, Ethernet, Carte graphiques, etc…) est directement intégré au noyau et non sous forme de modules. Un gain sensible de performance est indéniable.

      D'autre part et cela pour satisfaire tout un chacun tous les services existants sont démarrer par défauts dans la plupart des distros grand public. Si les utilisateurs de tels ou tels services seront satisfaits, ceux qui ne les utilisent pas traine un ballast inutile ralentissant le démarrage et consomme de la mémoire pour rien. Une revue des scripts de démarrage apporte aussi un gain de performance non négligeable surtout sur les machines un peut juste en mémoire et au processeur plus très frais.
      • [^] # Re: C'était mieux avant.

        Posté par  . Évalué à 2.

        les périphériques sont systématiquement compilés sous forme de modules […] sur des machines anciennes c'est un frein considérable.

        Des chiffres ?

        Pour remédier à cet état de fait, recompiler le kernel est une option qui apporte énormément.

        Idem.

        Un gain sensible de performance est indéniable.

        Sans plus d’arguments, je dénie. Na.
        • [^] # Re: C'était mieux avant.

          Posté par  . Évalué à 2.

          En ce qui me concerne sur ma machine perso , j'ai une économie de RAM d'environ 50 MB et un temps de boot un peu plus court au pif une dizaine de secondes

          Certe ce n'est pas gigantesque mais ce n'est pas non plus négligeable!

          Au Boulot on travaille sur du temps réel et là il n'a y a pas de petite économie. Tout ce qui est inutile est jeté par dessus bord....

          Là on obtient un gain en performance de l'ordre de 50 % sur une config standard...
  • # udev sux

    Posté par  . Évalué à 10.

    Sur le précédent journal, je me suis abstenu de répondre, peut-être aurais je du sur celui là aussi ?

    Est ce qu'on va installer Vista, quitte à désactiver les effets de bureau, sur un duron 700 ? Faudrait être un peu con il me semble. Alors pourquoi un ubuntu ou une mandriva 2008 devrait marcher ? Les dévellopeurs ne sont pas des magiciens, ils utilisent les technologies _actuelles_ pour faire marcher au mieux leurs outils.

    Est ce que windows 98 n'a pas besoin qu'on installe explicitement un à un les pilotes de la carte son, du bus usb, des chipsets, etc ... ? Fait pareil avec ton linux au lieu de le laisser utiliser udev pour trouver tout seul quel module charger, et en effet, il démarrera bien plus vite, et t'auras les même emmerdes qu'avec win 98 en ce qui concerne les clés usb et autres APN. Tu seras aussi emmerdé à l'ajout de chaque nouveau matériel, pour trouver tout seul le bon pilote et faire en sorte qu'il se charge au démarrage.

    Amha il faut comparer du comparable, et arrêter de cracher dans la soupe qu'on bouffe tous les jours parce qu'un kéké ne sait pas comment marche son OS. Sans udev, c'est garantit que linux ne serait pas tant utilisé (parfois on se demande si ça serait pas mieux), il faut juste regarder en arrière les première distributions "grand public", red hat et autre Mandrake. Ça marchait parfois, mais au niveau périphériques c'était toujours la merde : problème de reconnaissance, de droit, duplication des /dev, .... Et oui, à cette époque udev n'existait pas. Tous ces soucis n'existent plus aujourd'hui.

    Pour finir, un petit exemple : j'ai un Duron 700 qui tourne h24 avec mon serveur de fichier, d'impression, mon blog, ma forge, et un tas de saloperie. Il a une slackware 12.0. Bien sûr par de clavier pas d'écran, ... ça sert à rien dans ce cas. La prochaine machine sera un bien plus vieux que ça, au mieux un Pentium 1 ou pire un vieux IBM trouvé aux poubelles avec 8Mo de ram, pour gérer un peu de domotique. Je pourrais installer vista dessus ? parce que j'ai vu qu'il existait des bons outils domo sous vista ... bon pas grave, si je peux pas, je me contenterais d'une Slackware, encore sans X ... putain linux ça pu, on peut rien faire avec !
    • [^] # Re: udev sux

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

      udex sux peut être, mais pour le moment c'est le meilleur.... Je constate juste qu'il mériterait sans doute des améliorations niveau performance.

      A mon avis, ce serait possible de mettre en cache les pilotes que udev doive charger (au lieu de réévaluer toutes ses règles au démarrage). Ça prendrait sans doute moins de temps. Bien sûr il faut un système qui détecte quand le cache est devenu obsolète aussi.

      Pour ce qui est de l'installation manuelle des pilotes, pourquoi pas ? Sauf qu'a l'haure actuele ce n'est pas comme W98 ou on avait un suivant/suivant/terminer, mais c'est plus recompilation de kernel et/ou modification des scripts de démarrage. Autrement moins simple.
      • [^] # Re: udev sux

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

        Une mise en cache pourrait fonctionner ainsi je pense :
        ->Chaque fois qu'un périphérique est branché pour la première fois, une base de donnée est mise à jour pour "retenir" que le matériel est suscéptible d'être branché.
        ->Au démarrage, dans un premier temps, seul les périphériques de la base de donnée sont testés, et les pilotes chargés si nécessaire.
        ->Une fois le bureau complètement chargé, celui-ci envoi un message sur dbus, qui provoque le scan complet du matériel, et si un nouveau matériel est détecté une trayicon indique que le nouveau périphérique est prêt à l'emploi(ou que l'OS télécharge les paquetages réquis, les install, et enfin que le matos est ready for use).
        • [^] # Re: udev sux

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

          Comme windows ?
          • [^] # Re: udev sux

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

            Tiens, c'est vrai que Windows est connu pour booter plus rapidement que Linux. C'est peut-être (en parti?) la raison.
            • [^] # Re: udev sux

              Posté par  . Évalué à 3.

              Je ne peux pas être d'accord avec cette affirmation "Windows est connu pour booter plus rapidement que linux".

              De mon expérience, sur un PC identique, Linux démarre généralement plus vite que Windows. Tout dépend de ce que l'on entend par "booter" bien sur. Pour moi, le chrono ne s'arrête pas quand le bureau est affiché (comme c'est le cas très rapidement avec Windows), mais bien quand il est possible d'effectuer une action avec son PC.

              Pour faire un test comparable, je teste l'ouverture du PC depuis le moment ou on appuie sur le bouton start jusqu'à l'ouverture d'un explorateur de fichier. Et bien dans ces conditions, ma distribution linux (Arch avec KDE) démarre plus vite que Windows XP ... même si le bureau est affiché plus vite sous windows ... ce n'est plus vrai lorsqu'il y a un fsck du HD ... mais je préfère quand même que mon système de fichier soit vérifié régulièrement.

              Et vous quel est votre expérience ?
    • [^] # Re: udev sux

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

      Pour clarifier, le but de mon journal n'est pas de critiquer gratuitement udev ou hal, mais d'essayer de comprendre ce qui pose actuellement problème et voir quelles seraient les solutions possibles.

      Udev est un bon logiciel je pense, mais je pense aussi qu'il peut être amélioré.
      • [^] # Re: udev sux

        Posté par  . Évalué à 6.

        Il ne faut pas oublier que udev et hal étant responsable du chargement des modules (et d'une partie du paramétrage du matériel), on leur attribue facilement une lenteur qui est en pratique celle du temps d'initialisation des périphériques (et de leurs pilotes) ; ne serait-ce que demander au lecteur de cd s'il a quelque chose dans le ventre prends beaucoup de temps.

        udev & hal sont donc la partie « visible » (ou userspace) de ce temps d'initialisation des périphériques, mais n'en sont pas responsable pour autant. Le symptôme, pas la maladie, etc.
        • [^] # Re: udev sux

          Posté par  . Évalué à 5.

          Et c'est parralélisable/parralélisé tout ça ?

          Genre pour le lecteur CD, on doit pouvoir faire pleins de trucs le temps qu'il lance son moteur et lise un peu le CD ...
  • # Profilage

    Posté par  . Évalué à 4.

    Le 2.6.25 ajoute un indicateur temporel dans dmesg. (Bêtement, le nombre de secondes depuis le chargement du noyau.) (Je dis 2.6.25 parce que, même si le patch existe depuis le 2.6.20, il n’était pas présent/actif sur le noyau Debian.)

    Donc vérifiez vos dires.

    Le bon module est la plupart du temps trouvé par les identifiants Vendor et Product, en regardant simplement dans un table (les fichiers *map dans le répertoire contenant les modules). Donc ce n’est pas le lien matériel→module qui prend(rait) du temps. À la rigueur, la lecture du module sur le disque… ah ben non, beaucoup sont dans le initramfs, donc déjà en mémoire…
    • [^] # Re: Profilage

      Posté par  . Évalué à 2.

      Si c'est l'option du noyau que je connais, c'est un indicateur temporel depuis le démarrage de la machine. Si on redémarre, il n'est pas mis à 0. Pas pratique d'éteindre puis de réallumer pour tester ...

Suivre le flux des commentaires

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