Lors de l'init, ce sont les autres applications lancées qui prennent du temps. Le temps CPU consacré à l'interprétation doit être très faible.
Je pense aussi. Concrètement, pendant le démarrage, plusieurs milliers de processus sont lancés! Et si lancer un processus ça coûte relativement peu, en lancer plusieurs milliers, c'est très coûteux, surtout lorsque le processus s'arrête quasi aussitôt! Il a fallu aller le chercher sur disque (ça, c'est très coûteux en temps), le charger en mémoire, faire l'édition de lien dynamique et donc aller chercher sur disque les librairies,... Lors du démarrage, certains processus mettent peut-être plus de temps à se lancer qu'à faire leur travail!!
On voit d'ailleurs la différence entre un premier lancement et les suivants:
mfertre@paraphrase:~$ time /bin/echo toto
toto
real 0m0.060s
user 0m0.000s
sys 0m0.004s
mfertre@paraphrase:~$ time /bin/echo toto
toto
real 0m0.002s
user 0m0.000s
sys 0m0.000s
Sur un processus qui demande 2 milli-secondes de travail, il en a fallu 64 lors d'un premier appel!
En faisant un calcul tout à fait à la louche, en admettant que 1000 processus correspondant à des exécutables différents soient lancés lors du démarrage (bon, je pense pas quand même, il doit y avoir beaucoup de bash, grep, sed, awk, sort, cut, touch, etc.), ça prendrait environ (64-2ms * 1000) soit environ 1 min (ne soyons plus à une approximation près) ! Sans compter le temps de traitement!
[^] # Re: Re:
Posté par gentildemon . En réponse au journal Un meilleur shell. Évalué à 5.
Je pense aussi. Concrètement, pendant le démarrage, plusieurs milliers de processus sont lancés! Et si lancer un processus ça coûte relativement peu, en lancer plusieurs milliers, c'est très coûteux, surtout lorsque le processus s'arrête quasi aussitôt! Il a fallu aller le chercher sur disque (ça, c'est très coûteux en temps), le charger en mémoire, faire l'édition de lien dynamique et donc aller chercher sur disque les librairies,... Lors du démarrage, certains processus mettent peut-être plus de temps à se lancer qu'à faire leur travail!!
On voit d'ailleurs la différence entre un premier lancement et les suivants:
mfertre@paraphrase:~$ time /bin/echo toto
toto
real 0m0.060s
user 0m0.000s
sys 0m0.004s
mfertre@paraphrase:~$ time /bin/echo toto
toto
real 0m0.002s
user 0m0.000s
sys 0m0.000s
Sur un processus qui demande 2 milli-secondes de travail, il en a fallu 64 lors d'un premier appel!
En faisant un calcul tout à fait à la louche, en admettant que 1000 processus correspondant à des exécutables différents soient lancés lors du démarrage (bon, je pense pas quand même, il doit y avoir beaucoup de bash, grep, sed, awk, sort, cut, touch, etc.), ça prendrait environ (64-2ms * 1000) soit environ 1 min (ne soyons plus à une approximation près) ! Sans compter le temps de traitement!