Journal Démarrage des services en parallèle

Posté par  (site web personnel) .
Étiquettes : aucune
0
2
jan.
2006
Et oui, voici mon 1er journal. je me suis dit que ce serait le meilleur moyen d'informer concernant les développements actuels sous Mandriva.

Pour mon 1er journal, je vais parler de Pinit qui a été intégré dans Mandriva Cooker depuis le 1er janvier 2006. Pinit est un projet qui permet le démarrage des services en parallèle et ceci sans nécessiter de trop grandes modifications au niveau des scripts de démarrage.
Cependant il est possible de tester Pinit avec la Mandriva 2006.0, mais il faudra configurer manuellement le système.

Plus d'informations sur mon blog : http://www.linux-wizard.net/index.php?id_blog=47

Wiki Mandriva sur le projet ( en anglais ) : http://qa.mandriva.com/twiki/bin/view/Main/Pinit

D'après les premières mesures, le durée du démarrage est diminuée de 20% en moyenne.
  • # Petite précision

    Posté par  . Évalué à 3.

    Pour tester Pinit, il vous suffit soit de passer sous cooker, soit de suivre les instructions suivantes pour une Mandriva 2006

    En plus de passer sous cooker, il faut aussi passer "pinit" dans les options du noyau (étape 5).

    Tom
  • # initng ?

    Posté par  . Évalué à 5.

    quelle différence avec initng ? est-ce que les deux peuvent être utilisés en même temps ? initng est-il plus performant ?
    • [^] # Re: initng ?

      Posté par  . Évalué à 3.

      Initng est une refonte totale des script de démarrage. Ce n'est pas compatible avec les scripts sysV.

      pinit/prcsys est juste un ajout ( quelque commentaires de plus dans le script ) afin de savoir les dépendances qu'il y a entre les différend services.

      Les deux sont évidemment mutuellement exclusif.

      Je suppose que initng est plus performant, cependant il faut réécrire tous les scripts et perdre la compatibilité LSB. Ce que aucune distribution "grand publique" veux.
    • [^] # Commentaire supprimé

      Posté par  . Évalué à 3.

      Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: initng ?

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

      La différence, c'est que pinit ne casse pas du tout la manière de booter "traditionnelle" : ce sont juste des tags (en commentaire) rajoutés dans les initscripts. Si ces tags sont absents, pinit boote l'initscript de manière normale (séquentielle et non parallélisée).

      Bref, il y a compatibilité avec System V Init et, cerise sur le gateau, compatibilité LSB, ce qui n'est pas le cas d'initng.
      • [^] # Re: initng ?

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

        >> Bref, il y a compatibilité avec System V Init et, cerise sur le gateau, compatibilité LSB, ce qui n'est pas le cas d'initng.

        Certes mais pinit reste une rustine posée sur un ancien système alors qu'initng est un nouveau système bien pensé et bien réalisé et qui permet d'améliorer encore plus la vitesse du boot.
        N'oublions pas que la vitesse du boot est une grande faiblesse actuelle de GNU/Linux par rapport aux systèmes proprios !

        Le fait que pinit existe et permette de ne pas toucher aux scripts actuels va hélas ralentir (voire tuer) le developpement d'initng.
        • [^] # Re: initng ?

          Posté par  . Évalué à 1.

          N'oublions pas que la vitesse du boot est une grande faiblesse actuelle de GNU/Linux par rapport aux systèmes proprios !

          Pas que par rapport aux systemes proprios en fait !
        • [^] # Re: initng ?

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

          En quoi initng est mieux que pinit ? pinit aussi est "bien pensé" et "bien réalisé".
          • [^] # Re: initng ?

            Posté par  . Évalué à 5.

            pinit aussi est "bien pensé" et "bien réalisé".


            Je n'irais pas jusque la. pinit est juste une couche supplémentaire sur les scripts sysV. Ca relève plus du quick hack que d'un système aussi poussé que initng
            • [^] # Re: initng ?

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

              Comme quoi, même quand on critique son propre logiciel, on peut se faire moinsser :D
              • [^] # Re: initng ?

                Posté par  . Évalué à 3.

                Preuve de l'objectivité la plus totale et de la connaissance toujours parfaite du sujet quans on utilise la plus/moinss ... pertinenteuse/inutiliseuse de commentaire ?
        • [^] # Re: initng ?

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

          Euh ? Ca sert à quoi de gagner ne fut ce que 30 secondes sur le boot d'un PC ?
          Si on est obligé de rebooter tous les quarts d'heure, OK, mais là...

          Pour les systèmes embarqués c'est sûrement plus important, mais le nombre de services lancés est aussi beaucoup plus faible...
          • [^] # Re: initng ?

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

            Ça sert à ne pas dire de gros mots pendant que tu attends que ton PC boote au moment où tu t'apprête à partir en vacances et que tu t'aperçois que t'as pas de plan et qu'il faut que tu le crées et l'imprime le plus rapidement possible sinon t'es à la bourre. (Comment ça c'est du vécu ? :) )
            • [^] # Re: initng ?

              Posté par  . Évalué à 0.

              c'est pas 30 secondes qui vont changer quoi que ce soit dans un cas comme celui la, que tu sois à la bourre ou pas ....
              (par exemple tu peux démarrer sans ceinture avec la porte encore ouverte si tu veux gagner dix secondes ... ceinture et porte que tu mettras en marche (dangereux) )
              • [^] # Re: initng ?

                Posté par  . Évalué à 4.

                Tu veux dire que tu est psychologiquemetn complètement serain quand tu es juste en temps, ou un peu à la bourre ?
                Donnes moi ton secret ... si c'est autre chose que "j'en ai rien à foutre" ou "je suis jamais en retard" ;)
                • [^] # Re: initng ?

                  Posté par  . Évalué à 3.

                  il est vrai que j'essaie d'être le moins possible en retard , mais je relativise beaucoup : je suis 30 sec en retard ? ben mon correspondant attendras et puis voila (je m'en fous pas , mais je vais pas me "ruiner la santé" juste pour 30 sec alors que ca fait presque rien a mon correspondant d'attendre)
                  Surtout quand je prend la voiture : je vais pas me mettre en danger parce que je suis en retard : il faut souvent mieux arriver juste 10 minutes en retard que 3 mois a cause du passage par la case "hopital" !

                  Et puis quand tu es en retard et que tu ne peux rien y faire : tu pestes, mais ca s'arrete la.

                  (en contrepartie peut etre je suis souvent stressé sur des trucs ou les autres le sont bcp moins, chacun a ses défauts ;))
          • [^] # Re: initng ?

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

            Ton PC, tu peux aussi l'éteindre parceque tu penses aux petits oiseaux et à l'énergie non renouvelable que tu es en train de gaspiller. Ou tout simplement, tu penses à la petite facture d'EDF qui t'attend.
            • [^] # Re: initng ?

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

              c'est indispensable au boulot aussi !
              ici dans ma boite c'est extinction obligatoire tous les soirs en partant (et donc reboot le matin en arrivant).
              si Win2k met 30s à booter et Linux 2m30s et bien ça va pas favoriser les efforts de basculement vers linux dans les entreprises !
        • [^] # Re: initng ?

          Posté par  . Évalué à 2.

          N'oublions pas que la vitesse du boot est une grande faiblesse actuelle de GNU/Linux par rapport aux systèmes proprios !
          Ca dependant des scripts de demarages pas de Linux ;)
          Tu crois qu'il font comment dans l'embarqué quand il utilise Linux...
  • # Commentaire supprimé

    Posté par  . Évalué à 1.

    Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Commentaire supprimé

      Posté par  . Évalué à 1.

      Ce commentaire a été supprimé par l’équipe de modération.

      • [^] # Re: outil pour analyser l'amorçage

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

        autant donner la page de bootchart pour mandriva :
        http://qa.mandriva.com/twiki/bin/view/Main/BootTimeOptimisat(...)

        en bref, urpmi bootchart sysstat bootchart-logger (faut aussi un java correctement configuré si je me rappelle bien pour générer les graphiques, sinon passer par le site bootchart.org)
        et c'est bon... à vous les parties de reboot pour générer de belles images !
        • [^] # Re: outil pour analyser l'amorçage

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

          C'est ce que du veux dire par "passer par le site bootchart.org" mais pour enfoncer le clou : il suffit d'uploader le fichier résultant (bootchart.gz je crois) sur le site et il nous sort un graphique qui indique précisément quand les process ont été lancés et pendant combien de temps : très simple.
  • # Où le trouver ?

    Posté par  . Évalué à 2.

    Ce que j'ai vu c'est un prcsys à télécharger, à compiler et à mettre dans /sbin, hors il me semble que ce n'est pas un init vu le code source, mais un module d'init modulaire.

    Ma question est donc, où trouver ce Pinit ?

    La seule chose que j'ai trouvée c'est ça http://pinit.sourceforge.net/ et je suis pas trop trop sûr que ça colle.
    • [^] # Re: Où le trouver ?

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

      Justement l'intérêt de pinit est qu'il ne remplace pas Init !.
      En fait tu crée l'exécutable prcsys et tu modifies le script /etc/rc.d/rc afin que celui-ci appelle l'exécutable prcsys pour lancer les services si l'option pinit est passé au noyau.
      Plus d'infos sur mon blog.

      Par exemple dans le rc de Mandriva il y a désormais :

      pinit=`grep pinit /proc/cmdline`

      # First, run the KILL scripts.
      if [ -n "$pinit" ]; then
      /sbin/prcsys K /etc/rc$runlevel.d/
      progress=$?
      else
      for i in /etc/rc$runlevel.d/K* ; do
      check_runlevel "$i" || continue

      # Check if the subsystem is already up.
      subsys=${i#/etc/rc$runlevel.d/K??}
      rc_splash $subsys
      [ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] \
      || continue

      # Bring the subsystem down.
      if egrep -q "(killproc |action )" $i ; then
      $i stop
      else
      action "Stopping %s: " $subsys $i stop
      fi
      done
      fi

      if [ -n "$pinit" ] && [ ! -f /var/run/confirm -a "$runlevel" != "0" -a "$runlevel" != "1" -a "$runlevel" != "6" ]; then
      /sbin/prcsys S /etc/rc$runlevel.d/
      else
      # Now run the START scripts.
      for i in /etc/rc$runlevel.d/S* ; do
      [........]
  • # Démarrage en "arrière plan"

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

    Bonjour,

    Pourquoi ne pas modifier l'ordre de démarrage, et pour une partie des services les charger en arrière plan?
    Si le démarrage se fait avec un login graphique, c'est d'autant plus facile: il suffit de démarrer le xdm/kdm/gdm une fois le nécéssaire lancé. Le démarrage d'ALSA/Connexion réseau/DHCP.
    Ca pourrai, en plus de la parallèlisation du démarrage, amèliorer les choses?
  • # pinit sur 2006

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

    j'ai recompillé le paquet src initscripts pour la 2006, et j'ai fait un test.
    ben, je n'arrive pas à améliorer le temps de démarrage de mon PC. J'ai pourtant modifié un bon nombre des scripts d'après les fichiers de couriousous, mais je ne gagne rien.

    Un des problèmes notamment est que j'utilise un modem ADSL USB, et le script de démarrage du réseau attend que le modem soit prêt. De cette manière, je perds facilement 15s pendant lesquels le processeur ne travaille pas du tout. En fait il faudrait que le réseau puisse être démarré sans pour autant que la connexion internet le soit. Comme cela, le démarrage d'autres services qui dépendent du démarrage du service réseau peut se faire, et le démarrage de la connexion internet peut se faire tranquillement tout seul.

    Je peut poster mes bootcharts si ça interesse.
    • [^] # Re: pinit sur 2006

      Posté par  . Évalué à 1.

      Le réseau est une étape "capitale" lors du boot d'une distribution linux. La plupart des scripts dépendent du réseau soit directement soit indirectement ( par exemple, il requires syslog qui lui requires network ).

      Le démarrage des service en parallèle n'est pas la solution miracle. Elle aide dans certain cas ( en général 20% sur un boot "normal" ), mais pas dans tous. Hors dans ton cas le facteur limitant est ta connection adsl. Et pour cela le démarrage des service en parallèle ne peu rien y faire.

      Ce que tu peu éventuellement faire, c'est dire à harddrake de ne pas démarrer la conneciton adsl au boot, et le faire à la main dans /etc/rc.d/rc.local .

      A part ca, tu a bien mis l'argument "pinit" au boot et patché les service avec les # X-Parallel-Requries: ( et non pas simplement # Requries ).
      • [^] # Re: pinit sur 2006

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

        J'ai fait un test sans lancer la connexion ADSL au boot, et je ne gagne quasiment rien.

        Je reviens sur ce que je voulais dire sur le lancement de la connexion ADSL. Certains services ont besoins que le réseau soit activé pour pouvoir être lancé (CUPS, syslog...). Mais ils ont juste besoin que le réseau soit lancé, il n'est pas obligatoire que la connexion internet soit activée. Donc on pourrait faire en sorte que le script network active le réseau (le loopback, les cartes ethernet, wifi...), mais que la connexion ADSL soit démarrée plus tard. De cette manière, le réseau est activé, ça permet aux services qui en dépendent de démarrer et ça évite d'être bloqué à cause du modem.

        Sans le faire exprès, je suis tombé sur ce cas de figure.
        Lors de mon dernier boot, il y a eu un problème avec ppp :

        Jan 4 16:35:01 localhost network: Démarrage de l'interface loopback : succeede
        d
        Jan 4 16:35:01 localhost network: Activation de la retransmission de paquets IP
        v4 (forwarding) succeeded
        Jan 4 16:35:02 localhost ifplugd(eth0)[3206]: ifplugd 0.28 initializing.
        Jan 4 16:35:02 localhost ifplugd(eth0)[3206]: Using interface eth0/00:A0:24:4A:
        53:E6 with driver <3c59x> (version: LK1.1.19)
        Jan 4 16:35:02 localhost ifplugd(eth0)[3206]: Using detection mode: SIOCETHTOOL
        Jan 4 16:35:02 localhost ifplugd(eth0)[3206]: Initialization complete, link bea
        t not detected.
        Jan 4 16:35:02 localhost network: Activation de l'interface eth0 : succeeded
        Jan 4 16:35:02 localhost ifup-ppp: pppd started for ppp0 on at
        Jan 4 16:35:02 localhost pppd[3233]: unrecognized option 'Pas'
        Jan 4 16:35:02 localhost ifup: pppd: unrecognized option 'Pas'
        Jan 4 16:35:02 localhost ifup: pppd version 2.4.3
        Jan 4 16:35:02 localhost ifup: Usage: pppd [ options ], where options are:
        Jan 4 16:35:02 localhost ifup: ^I^ICommunicate over the named device
        Jan 4 16:35:02 localhost ifup: ^I^I^ISet the baud rate to
        Jan 4 16:35:02 localhost ifup: ^I:^ISet the local and/or remote inter
        face IP
        Jan 4 16:35:02 localhost ifup: ^I^I^Iaddresses. Either one may be omitted.
        Jan 4 16:35:02 localhost ifup: ^Iasyncmap ^ISet the desired async map to hex

        Jan 4 16:35:02 localhost ifup: ^Iauth^I^IRequire authentication from peer
        Jan 4 16:35:02 localhost ifup: connect Invoke shell command
        to set up the serial line
        Jan 4 16:35:02 localhost ifup: ^Icrtscts^I^IUse hardware RTS/CTS flow control
        Jan 4 16:35:02 localhost ifup: ^Idefaultroute^IAdd default route through interf
        ace
        Jan 4 16:35:02 localhost ifup: ^Ifile ^ITake options from file
        Jan 4 16:35:02 localhost ifup: ^Imodem^I^IUse modem control lines
        Jan 4 16:35:02 localhost ifup: ^Imru ^I^ISet MRU value to for negotiatio
        n
        Jan 4 16:35:02 localhost ifup: See pppd(8) for more options.
        Jan 4 16:35:02 localhost network: Activation de l'interface ppp0 : failed

        Du coup ppp n'a pas attendu que le modem soit prêt, et le boot à continué. Tout s'est bien déroulé puisque malgré que ppp est échoué, le loopback et eth0 on été activé. Et comme l'intégration des modem ADSL est bien faite, il y a un script qui doit vérifié si oui ou non la connexion ADSL est bien active. Si ce n'est pas le cas, alors il la relance. Et, c'est ce que l'on trouve plus loin dans les logs :

        Jan 4 16:35:24 localhost kernel: PPP generic driver version 2.4.2
        Jan 4 16:35:25 localhost pppd[5354]: pppd 2.4.3 started by root, uid 0
        Jan 4 16:35:25 localhost pppd[5354]: Using interface ppp0
        Jan 4 16:35:25 localhost pppd[5354]: Connect: ppp0 <--> /dev/pts/0
        Jan 4 16:35:29 localhost pppd[5354]: CHAP authentication succeeded: CHAP authen
        tication success, unit 22692
        Jan 4 16:35:29 localhost pppd[5354]: local IP address 88.137.78.53
        Jan 4 16:35:29 localhost pppd[5354]: remote IP address 88.137.72.1
        Jan 4 16:35:29 localhost pppd[5354]: primary DNS address 217.19.192.132
        Jan 4 16:35:29 localhost pppd[5354]: secondary DNS address 217.19.192.131


        Résultats: j'ai gagné 15s au boot.

        Il faudrai au démarrage réussir à faire croire au système que la connexion ADSL est lancée sans quel ne le soit réellement. Et derrière le script qui vérifie l'état de la connexion va lui s'apercevoir que la connexion n'est pas active et il s'en occupera (fctStartAdsl).

        Mis à part la connexion ADSL, je n'est pas trouvé d'amélioration mais je tourne sur un athlon 550Mhz ce qui peut expliqué cela, j'ai aussi khubd qui met beaucoup de temps (je ne sais pas trop à quoi ça sert donc c'est peut être normal)

        En tout cas c'est du beau boulot, et c'est surtout très simple et rapide à mettre en place.
        • [^] # Re: pinit sur 2006

          Posté par  . Évalué à 2.

          Ou alors des "dépendances molles", genre, ce truc là a besoin de tel autre, mais ca peut attendre, ce n'est pas forcément bloquant.

          Ici, le réseau doit démarrer la connec adsl, mais il n'en a pas totalement besoin pour fonctionner.

Suivre le flux des commentaires

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