Je suis en train d'installer des Debian chez des copains. Et qui dit
installation dit recompilattion pour prendre en compte leurs
périphériques.
Mais sur un 350 MHz/256Mo, la compil prend une demie-heure au bas mot
(avec un 2.4.24)
Il y a de ça un certain temps (du temps du 2.2 ou du 2.0), il était
possible d'augmenter la vitesse de compilation du noyau.
Pour cela il suffisait dans /usr/src/linux/Makefile de modifier une
ligne:
A la place de "MAKE=make"
On mettait "MAKE=make -j N"
Avec N le nombre de jobs simultamément possible, N étant déterminé par
la formule N = ( (RAM en Mo) / 8 ) + 1
Chez mon copain qui dispose de 256 Mo de RAM, on aurait n = 33
Et ça marchait très bien, Je me rapelle que sur mon 233MHz/64Mo la
charge explosait, mais on avait une dizaine de make qui s'exécutait en
même temps et la compil du noyau boostait.
Le problème est que je ne trouve pas cette ligne dans le makefile de la
lignée des 2.4.X
Bref: Que modifier pour que la compil du noyau s'effectue plus
rapidement sur une machine faible en processeur, mais bien dotée en RAM ?
PS: En explorant le /usr/src/linux/makefile, je suis tombé sur l'option
':htmldocs: sgmldocs
$(MAKE) -C Documentation/DocBook html'
Donc je m'attendais a trouver pleinde doc au format html dans le-dit
répertoire... Que nenni.. C'est plein de 'sgml' et de 'tmpl'. Avec quoi
quoi peut-on lite cette doc ? Y aurait-il un parser (c'est comme ça
qu'on dit ?) capable de transformer ces fichiers en html, c'est à dire
(petit lamers deviendra grand) en language human-readable)
Merci de votre aide
--
"Marre des versions stables, je vais tester les instables, au moins je
saurai pourquoi ça plante !"
-+- JCD in Guide du linuxien pervers - "Maintenant que j'ai liquidé le
tout venant, je peux me risquer dans le bizarre". -+-
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian Marillat
Hugolino writes:
Bonjour,
Bonjour,
Je suis en train d'installer des Debian chez des copains. Et qui dit installation dit recompilattion pour prendre en compte leurs périphériques.
Ho, le méchant troll.
[...]
Bref: Que modifier pour que la compil du noyau s'effectue plus rapidement sur une machine faible en processeur, mais bien dotée en RAM ?
Si tu es sous debian tu dois utiliser make-kpkg ? Donc tu vas dans /etc/kernel-pkg.conf et tu ajoutes 'CONCURRENCY_LEVEL := X' ou X est le nombres de jobs que tu veux.
Pour plus d'options :
man 5 kernel-pkg.conf
Christian
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Hugolino <hugolino@fri.fr> writes:
Bonjour,
Bonjour,
Je suis en train d'installer des Debian chez des copains. Et qui dit
installation dit recompilattion pour prendre en compte leurs
périphériques.
Ho, le méchant troll.
[...]
Bref: Que modifier pour que la compil du noyau s'effectue plus
rapidement sur une machine faible en processeur, mais bien dotée en RAM ?
Si tu es sous debian tu dois utiliser make-kpkg ? Donc tu vas dans
/etc/kernel-pkg.conf et tu ajoutes 'CONCURRENCY_LEVEL := X' ou X est le
nombres de jobs que tu veux.
Pour plus d'options :
man 5 kernel-pkg.conf
Christian
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Je suis en train d'installer des Debian chez des copains. Et qui dit installation dit recompilattion pour prendre en compte leurs périphériques.
Ho, le méchant troll.
[...]
Bref: Que modifier pour que la compil du noyau s'effectue plus rapidement sur une machine faible en processeur, mais bien dotée en RAM ?
Si tu es sous debian tu dois utiliser make-kpkg ? Donc tu vas dans /etc/kernel-pkg.conf et tu ajoutes 'CONCURRENCY_LEVEL := X' ou X est le nombres de jobs que tu veux.
Pour plus d'options :
man 5 kernel-pkg.conf
Christian
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
TiChou
Dans l'article news:, Hugolino écrivait :
Bonjour,
Bonjour,
Je suis en train d'installer des Debian chez des copains. Et qui dit installation dit recompilattion pour prendre en compte leurs périphériques. Mais sur un 350 MHz/256Mo, la compil prend une demie-heure au bas mot (avec un 2.4.24) Il y a de ça un certain temps (du temps du 2.2 ou du 2.0), il était possible d'augmenter la vitesse de compilation du noyau.
Pour cela il suffisait dans /usr/src/linux/Makefile de modifier une ligne: A la place de "MAKE=make" On mettait "MAKE=make -j N" Avec N le nombre de jobs simultamément possible, N étant déterminé par la formule N = ( (RAM en Mo) / 8 ) + 1
D'où vous tenez cette formule que je qualifierai bien de fantaisiste ?
La règle d'usage pour déterminer le nombre de jobs à mettre en argument à l'option -j de make est le nombre de cpu + 1. Donc, dans le cas d'un monoprocesseur, -j2. Au delà on améliore en rien les performances, bien au contraire (cf fin du post).
Chez mon copain qui dispose de 256 Mo de RAM, on aurait n = 33
Et ça marchait très bien,
Sûrement pas, juste une impression.
Je me rapelle que sur mon 233MHz/64Mo la charge explosait,
Forcément oui.
mais on avait une dizaine de make qui s'exécutait en même temps
Et comme la charge était énorme, chaque instance de make n'avait que très peu de ressources disponibles pour travailler.
et la compil du noyau boostait.
Elle s'étouffait vous vouliez dire.
Le problème est que je ne trouve pas cette ligne dans le makefile de la lignée des 2.4.X
Bref: Que modifier pour que la compil du noyau s'effectue plus rapidement sur une machine faible en processeur, mais bien dotée en RAM ?
Il n'y a pas besoin de modifier le Makefile. Il suffit simplement de passer l'option '-j N' en ligne de commande :
$ make -j2 bzImage
Merci de votre aide
De rien.
Je vous laisse maintenant apprécier différents tests de compilation sur trois types de machine avec différentes valeurs pour l'option '-j'. Vous remarquerez alors que, dès qu'on dépasse la valeur de cpu+1, les temps de compilation augmentent.
Pentium 3 550MHz - RAM 256Mo - Slackware 9.0
:~/linux-2.4.25# time make bzImage [...]
real 13m47.685s user 12m58.150s sys 0m37.450s
:~/linux-2.4.25# time make -j2 bzImage [...]
real 13m40.676s user 12m59.860s sys 0m35.750s
:~/linux-2.4.25# time make -j3 bzImage [...]
real 13m40.880s user 13m1.420s sys 0m35.750s
:~/linux-2.4.25# time make -j4 bzImage [...]
real 13m41.397s user 13m2.760s sys 0m35.060s
:~/linux-2.4.25# time make -j5 bzImage [...]
real 13m41.541s user 13m0.570s sys 0m36.800s
Pentium 3 1GHz - RAM 640Mo - Gentoo 1.4
pegase linux-2.4.20 # time make bzImage [...]
real 8m4.589s user 7m13.530s sys 0m35.895s
pegase linux-2.4.20 # time make -j2 bzImage [...]
real 7m55.599s user 7m7.230s sys 0m35.715s
pegase linux-2.4.20 # time make -j3 bzImage [...]
real 8m3.905s user 7m26.835s sys 0m34.520s
pegase linux-2.4.20 # time make -j4 bzImage [...]
real 8m7.209s user 7m28.335s sys 0m33.200s
pegase linux-2.4.20 # time make -j81 bzImage [...]
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Dans l'article news:slrnc45523.rpm.hugolino@Deborah.RocknRoll.org,
Hugolino <hugolino@fri.fr> écrivait :
Bonjour,
Bonjour,
Je suis en train d'installer des Debian chez des copains. Et qui dit
installation dit recompilattion pour prendre en compte leurs
périphériques.
Mais sur un 350 MHz/256Mo, la compil prend une demie-heure au bas mot
(avec un 2.4.24)
Il y a de ça un certain temps (du temps du 2.2 ou du 2.0), il était
possible d'augmenter la vitesse de compilation du noyau.
Pour cela il suffisait dans /usr/src/linux/Makefile de modifier une
ligne:
A la place de "MAKE=make"
On mettait "MAKE=make -j N"
Avec N le nombre de jobs simultamément possible, N étant déterminé par
la formule N = ( (RAM en Mo) / 8 ) + 1
D'où vous tenez cette formule que je qualifierai bien de fantaisiste ?
La règle d'usage pour déterminer le nombre de jobs à mettre en argument à
l'option -j de make est le nombre de cpu + 1. Donc, dans le cas d'un
monoprocesseur, -j2. Au delà on améliore en rien les performances, bien au
contraire (cf fin du post).
Chez mon copain qui dispose de 256 Mo de RAM, on aurait n = 33
Et ça marchait très bien,
Sûrement pas, juste une impression.
Je me rapelle que sur mon 233MHz/64Mo la charge explosait,
Forcément oui.
mais on avait une dizaine de make qui s'exécutait en même temps
Et comme la charge était énorme, chaque instance de make n'avait que très
peu de ressources disponibles pour travailler.
et la compil du noyau boostait.
Elle s'étouffait vous vouliez dire.
Le problème est que je ne trouve pas cette ligne dans le makefile de la
lignée des 2.4.X
Bref: Que modifier pour que la compil du noyau s'effectue plus
rapidement sur une machine faible en processeur, mais bien dotée en RAM ?
Il n'y a pas besoin de modifier le Makefile. Il suffit simplement de passer
l'option '-j N' en ligne de commande :
$ make -j2 bzImage
Merci de votre aide
De rien.
Je vous laisse maintenant apprécier différents tests de compilation sur
trois types de machine avec différentes valeurs pour l'option '-j'.
Vous remarquerez alors que, dès qu'on dépasse la valeur de cpu+1, les temps
de compilation augmentent.
Pentium 3 550MHz - RAM 256Mo - Slackware 9.0
root@clodo:~/linux-2.4.25# time make bzImage
[...]
real 13m47.685s
user 12m58.150s
sys 0m37.450s
root@clodo:~/linux-2.4.25# time make -j2 bzImage
[...]
real 13m40.676s
user 12m59.860s
sys 0m35.750s
root@clodo:~/linux-2.4.25# time make -j3 bzImage
[...]
real 13m40.880s
user 13m1.420s
sys 0m35.750s
root@clodo:~/linux-2.4.25# time make -j4 bzImage
[...]
real 13m41.397s
user 13m2.760s
sys 0m35.060s
root@clodo:~/linux-2.4.25# time make -j5 bzImage
[...]
real 13m41.541s
user 13m0.570s
sys 0m36.800s
Pentium 3 1GHz - RAM 640Mo - Gentoo 1.4
pegase linux-2.4.20 # time make bzImage
[...]
real 8m4.589s
user 7m13.530s
sys 0m35.895s
pegase linux-2.4.20 # time make -j2 bzImage
[...]
real 7m55.599s
user 7m7.230s
sys 0m35.715s
pegase linux-2.4.20 # time make -j3 bzImage
[...]
real 8m3.905s
user 7m26.835s
sys 0m34.520s
pegase linux-2.4.20 # time make -j4 bzImage
[...]
real 8m7.209s
user 7m28.335s
sys 0m33.200s
pegase linux-2.4.20 # time make -j81 bzImage
[...]
real 25m36.938s
user 7m35.670s
sys 0m42.705s
(640 / 8) + 1 = 81
Bi Pentium 3 1,2GHz - RAM 2Go - Mandrake 9.2
[tichou@spe188 linux-2.4.25]$ time make bzImage
[...]
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Je suis en train d'installer des Debian chez des copains. Et qui dit installation dit recompilattion pour prendre en compte leurs périphériques. Mais sur un 350 MHz/256Mo, la compil prend une demie-heure au bas mot (avec un 2.4.24) Il y a de ça un certain temps (du temps du 2.2 ou du 2.0), il était possible d'augmenter la vitesse de compilation du noyau.
Pour cela il suffisait dans /usr/src/linux/Makefile de modifier une ligne: A la place de "MAKE=make" On mettait "MAKE=make -j N" Avec N le nombre de jobs simultamément possible, N étant déterminé par la formule N = ( (RAM en Mo) / 8 ) + 1
D'où vous tenez cette formule que je qualifierai bien de fantaisiste ?
La règle d'usage pour déterminer le nombre de jobs à mettre en argument à l'option -j de make est le nombre de cpu + 1. Donc, dans le cas d'un monoprocesseur, -j2. Au delà on améliore en rien les performances, bien au contraire (cf fin du post).
Chez mon copain qui dispose de 256 Mo de RAM, on aurait n = 33
Et ça marchait très bien,
Sûrement pas, juste une impression.
Je me rapelle que sur mon 233MHz/64Mo la charge explosait,
Forcément oui.
mais on avait une dizaine de make qui s'exécutait en même temps
Et comme la charge était énorme, chaque instance de make n'avait que très peu de ressources disponibles pour travailler.
et la compil du noyau boostait.
Elle s'étouffait vous vouliez dire.
Le problème est que je ne trouve pas cette ligne dans le makefile de la lignée des 2.4.X
Bref: Que modifier pour que la compil du noyau s'effectue plus rapidement sur une machine faible en processeur, mais bien dotée en RAM ?
Il n'y a pas besoin de modifier le Makefile. Il suffit simplement de passer l'option '-j N' en ligne de commande :
$ make -j2 bzImage
Merci de votre aide
De rien.
Je vous laisse maintenant apprécier différents tests de compilation sur trois types de machine avec différentes valeurs pour l'option '-j'. Vous remarquerez alors que, dès qu'on dépasse la valeur de cpu+1, les temps de compilation augmentent.
Pentium 3 550MHz - RAM 256Mo - Slackware 9.0
:~/linux-2.4.25# time make bzImage [...]
real 13m47.685s user 12m58.150s sys 0m37.450s
:~/linux-2.4.25# time make -j2 bzImage [...]
real 13m40.676s user 12m59.860s sys 0m35.750s
:~/linux-2.4.25# time make -j3 bzImage [...]
real 13m40.880s user 13m1.420s sys 0m35.750s
:~/linux-2.4.25# time make -j4 bzImage [...]
real 13m41.397s user 13m2.760s sys 0m35.060s
:~/linux-2.4.25# time make -j5 bzImage [...]
real 13m41.541s user 13m0.570s sys 0m36.800s
Pentium 3 1GHz - RAM 640Mo - Gentoo 1.4
pegase linux-2.4.20 # time make bzImage [...]
real 8m4.589s user 7m13.530s sys 0m35.895s
pegase linux-2.4.20 # time make -j2 bzImage [...]
real 7m55.599s user 7m7.230s sys 0m35.715s
pegase linux-2.4.20 # time make -j3 bzImage [...]
real 8m3.905s user 7m26.835s sys 0m34.520s
pegase linux-2.4.20 # time make -j4 bzImage [...]
real 8m7.209s user 7m28.335s sys 0m33.200s
pegase linux-2.4.20 # time make -j81 bzImage [...]
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Daniel Dechelotte
TiChou a écrit :
| La règle d'usage pour déterminer le nombre de jobs à mettre en | argument à l'option -j de make est le nombre de cpu + 1. Donc, dans le | cas d'un monoprocesseur, -j2. Au delà on améliore en rien les | performances, bien au contraire (cf fin du post). | [...]
Oui. Merci pour les stats !
| Je vous laisse maintenant apprécier différents tests de compilation | sur trois types de machine avec différentes valeurs pour l'option | '-j'. Vous remarquerez alors que, dès qu'on dépasse la valeur de | cpu+1, les temps de compilation augmentent. | | Pentium 3 550MHz - RAM 256Mo - Slackware 9.0 | [...]
Une amelioration de 0.8 % entre -j1 et -j2 pour cette machine au nom charmant.
| Pentium 3 1GHz - RAM 640Mo - Gentoo 1.4 | [...]
Une amelioration de 1.9 % de -j1 a -j2. Mais c'est peut-etre la RAM supplementaire qui permet de cacher tous l'arbre de compil et d'expliquer la "meilleure amelioration".
En gros, pour nos autres petites gens qui n'ont qu'un processeur, ca ne vaut probablement pas le coup. (enfin, ca ne coute pas grand chose non plus, sauf peut-etre avoir les sorties des compils qui se melangent).
Je m'attendais a au moins 10 % d'amelioration, me voila detrompe.
-- Daniel Déchelotte http://yo.dan.free.fr/
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
TiChou <gro.uohcit@uohcit.news.free.fr> a écrit :
| La règle d'usage pour déterminer le nombre de jobs à mettre en
| argument à l'option -j de make est le nombre de cpu + 1. Donc, dans le
| cas d'un monoprocesseur, -j2. Au delà on améliore en rien les
| performances, bien au contraire (cf fin du post).
| [...]
Oui. Merci pour les stats !
| Je vous laisse maintenant apprécier différents tests de compilation
| sur trois types de machine avec différentes valeurs pour l'option
| '-j'. Vous remarquerez alors que, dès qu'on dépasse la valeur de
| cpu+1, les temps de compilation augmentent.
|
| Pentium 3 550MHz - RAM 256Mo - Slackware 9.0
| [...]
Une amelioration de 0.8 % entre -j1 et -j2 pour cette machine au nom charmant.
| Pentium 3 1GHz - RAM 640Mo - Gentoo 1.4
| [...]
Une amelioration de 1.9 % de -j1 a -j2. Mais c'est peut-etre la RAM
supplementaire qui permet de cacher tous l'arbre de compil et
d'expliquer la "meilleure amelioration".
En gros, pour nos autres petites gens qui n'ont qu'un processeur, ca ne
vaut probablement pas le coup. (enfin, ca ne coute pas grand chose non
plus, sauf peut-etre avoir les sorties des compils qui se melangent).
Je m'attendais a au moins 10 % d'amelioration, me voila detrompe.
--
Daniel Déchelotte
http://yo.dan.free.fr/
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
| La règle d'usage pour déterminer le nombre de jobs à mettre en | argument à l'option -j de make est le nombre de cpu + 1. Donc, dans le | cas d'un monoprocesseur, -j2. Au delà on améliore en rien les | performances, bien au contraire (cf fin du post). | [...]
Oui. Merci pour les stats !
| Je vous laisse maintenant apprécier différents tests de compilation | sur trois types de machine avec différentes valeurs pour l'option | '-j'. Vous remarquerez alors que, dès qu'on dépasse la valeur de | cpu+1, les temps de compilation augmentent. | | Pentium 3 550MHz - RAM 256Mo - Slackware 9.0 | [...]
Une amelioration de 0.8 % entre -j1 et -j2 pour cette machine au nom charmant.
| Pentium 3 1GHz - RAM 640Mo - Gentoo 1.4 | [...]
Une amelioration de 1.9 % de -j1 a -j2. Mais c'est peut-etre la RAM supplementaire qui permet de cacher tous l'arbre de compil et d'expliquer la "meilleure amelioration".
En gros, pour nos autres petites gens qui n'ont qu'un processeur, ca ne vaut probablement pas le coup. (enfin, ca ne coute pas grand chose non plus, sauf peut-etre avoir les sorties des compils qui se melangent).
Je m'attendais a au moins 10 % d'amelioration, me voila detrompe.
-- Daniel Déchelotte http://yo.dan.free.fr/
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Hugolino
Le 02 Mar 2004 13:28:02 GMT, TiChou a écrit:
Dans l'article news:, Hugolino écrivait :
> Bonjour,
Bonjour,
> Je suis en train d'installer des Debian chez des copains. Et qui dit > installation dit recompilattion pour prendre en compte leurs > périphériques. > Mais sur un 350 MHz/256Mo, la compil prend une demie-heure au bas mot > (avec un 2.4.24) > Il y a de ça un certain temps (du temps du 2.2 ou du 2.0), il était > possible d'augmenter la vitesse de compilation du noyau. > > Pour cela il suffisait dans /usr/src/linux/Makefile de modifier une > ligne: > A la place de "MAKE=make" > On mettait "MAKE=make -j N" > Avec N le nombre de jobs simultamément possible, N étant déterminé par > la formule N = ( (RAM en Mo) / 8 ) + 1
D'où vous tenez cette formule que je qualifierai bien de fantaisiste ?
De <http://www.faqs.org/docs/Linux-mini/Modules.html>
Mais c'est vrai que Google donne plus de réponses à propos des machines multi-processeurs (avec «where N = number of CPU + 1»)
Merci de votre réponse.
-- je suis assez têtu et utilise toujours Linux en root et en voulant effacer tous les fichiers dans un repertoire j'ai fait un rm -fr * or en tapant sur entree je me suis rendu compte que je suis sur / : oooooooups -+- T in Guide du linuxien pervers : "Et paf le tétu" -+-
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Le 02 Mar 2004 13:28:02 GMT, TiChou a écrit:
Dans l'article news:slrnc45523.rpm.hugolino@Deborah.RocknRoll.org,
Hugolino <hugolino@fri.fr> écrivait :
> Bonjour,
Bonjour,
> Je suis en train d'installer des Debian chez des copains. Et qui dit
> installation dit recompilattion pour prendre en compte leurs
> périphériques.
> Mais sur un 350 MHz/256Mo, la compil prend une demie-heure au bas mot
> (avec un 2.4.24)
> Il y a de ça un certain temps (du temps du 2.2 ou du 2.0), il était
> possible d'augmenter la vitesse de compilation du noyau.
>
> Pour cela il suffisait dans /usr/src/linux/Makefile de modifier une
> ligne:
> A la place de "MAKE=make"
> On mettait "MAKE=make -j N"
> Avec N le nombre de jobs simultamément possible, N étant déterminé par
> la formule N = ( (RAM en Mo) / 8 ) + 1
D'où vous tenez cette formule que je qualifierai bien de fantaisiste ?
De <http://www.faqs.org/docs/Linux-mini/Modules.html>
Mais c'est vrai que Google donne plus de réponses à propos des machines
multi-processeurs (avec «where N = number of CPU + 1»)
Merci de votre réponse.
--
je suis assez têtu et utilise toujours Linux en root et en voulant effacer
tous les fichiers dans un repertoire j'ai fait un rm -fr * or en tapant sur
entree je me suis rendu compte que je suis sur / : oooooooups
-+- T in Guide du linuxien pervers : "Et paf le tétu" -+-
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
> Je suis en train d'installer des Debian chez des copains. Et qui dit > installation dit recompilattion pour prendre en compte leurs > périphériques. > Mais sur un 350 MHz/256Mo, la compil prend une demie-heure au bas mot > (avec un 2.4.24) > Il y a de ça un certain temps (du temps du 2.2 ou du 2.0), il était > possible d'augmenter la vitesse de compilation du noyau. > > Pour cela il suffisait dans /usr/src/linux/Makefile de modifier une > ligne: > A la place de "MAKE=make" > On mettait "MAKE=make -j N" > Avec N le nombre de jobs simultamément possible, N étant déterminé par > la formule N = ( (RAM en Mo) / 8 ) + 1
D'où vous tenez cette formule que je qualifierai bien de fantaisiste ?
De <http://www.faqs.org/docs/Linux-mini/Modules.html>
Mais c'est vrai que Google donne plus de réponses à propos des machines multi-processeurs (avec «where N = number of CPU + 1»)
Merci de votre réponse.
-- je suis assez têtu et utilise toujours Linux en root et en voulant effacer tous les fichiers dans un repertoire j'ai fait un rm -fr * or en tapant sur entree je me suis rendu compte que je suis sur / : oooooooups -+- T in Guide du linuxien pervers : "Et paf le tétu" -+-
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Jeremy JUST
On 01 Mar 2004 08:32:47 GMT Hugolino wrote:
On mettait "MAKE=make -j N" Avec N le nombre de jobs simultamément possible, N étant déterminé par la formule N = ( (RAM en Mo) / 8 ) + 1
Chez mon copain qui dispose de 256 Mo de RAM, on aurait n = 33
Il a combien de processeurs, ton copain? Il me semble peu utile de demander beaucoup plus de processus qu'il n'y a de processeurs. Pour mes compilations courantes, sur une machine à 2 processeurs, je demande 4 processus simultanés (et sur une 12 procs, je demande (12 - load_average), mais ça, c'est parce que je ne suis pas tout seul que je ne veux pas gêner les autres).
Demander un nombre de processus légèrement supérieur au nombre de processeurs permet de mieux utiliser globalement la machine: pendant que quelques compilateurs tourneront à fond sur les CPU (sans I/O), d'autres pourront charger leurs données en RAM depuis le disque (étape qui prend peu de CPU mais beaucoup d'I/O). Intuitivement, j'ai l'impression qu'un nombre trop grand de processus simultanés risque d'être moins intéressant.
Accessoirement, l'option `-j n' complique *beaucoup* le débuggage, puisque les sorties de tous les processus sont enchevêtrées. Et quelques compilations ne la supporte pas (de mémoire, la compilation de Xemacs plante lamentablement quand on la tente en parallèle).
la charge explosait
Si c'est ton but, tu peux utiliser `-j' sans argument. ;)
PS: En explorant le /usr/src/linux/makefile, je suis tombé sur l'option ':htmldocs: sgmldocs $(MAKE) -C Documentation/DocBook html'
Donc je m'attendais a trouver pleinde doc au format html dans le-dit répertoire... Que nenni.. C'est plein de 'sgml' et de 'tmpl'.
Normal: c'est du DocBook, le format natif de la doc, et la règle que tu as recopiée ci-dessus le convertit en HTML.
Avec quoi quoi peut-on lite cette doc ?
Le format DocBook est standard. Tu devrais trouver sans difficulté plein de filtres pour le convertir en d'autres formats. Tiens, je l'ignorais, mais j'ai tout ça d'installé sur ma Mdk9.2: docbook2dvi docbook2man docbook2rtf docbook2texi docbook2html docbook2ps docbook2tex docbook2txt
Le plus simple, si tu as l'espace disque suffisant, est de laisser le makefile que tu as lu s'en occuper (il fera appel au bon convertisseur avec les bonnes options).
-- Jérémy JUST
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
On 01 Mar 2004 08:32:47 GMT
Hugolino <hugolino@fri.fr> wrote:
On mettait "MAKE=make -j N"
Avec N le nombre de jobs simultamément possible, N étant déterminé par
la formule N = ( (RAM en Mo) / 8 ) + 1
Chez mon copain qui dispose de 256 Mo de RAM, on aurait n = 33
Il a combien de processeurs, ton copain?
Il me semble peu utile de demander beaucoup plus de processus qu'il n'y
a de processeurs.
Pour mes compilations courantes, sur une machine à 2 processeurs, je
demande 4 processus simultanés (et sur une 12 procs, je demande (12 -
load_average), mais ça, c'est parce que je ne suis pas tout seul que je ne
veux pas gêner les autres).
Demander un nombre de processus légèrement supérieur au nombre de
processeurs permet de mieux utiliser globalement la machine: pendant que
quelques compilateurs tourneront à fond sur les CPU (sans I/O), d'autres
pourront charger leurs données en RAM depuis le disque (étape qui prend
peu de CPU mais beaucoup d'I/O).
Intuitivement, j'ai l'impression qu'un nombre trop grand de processus
simultanés risque d'être moins intéressant.
Accessoirement, l'option `-j n' complique *beaucoup* le débuggage,
puisque les sorties de tous les processus sont enchevêtrées. Et quelques
compilations ne la supporte pas (de mémoire, la compilation de Xemacs
plante lamentablement quand on la tente en parallèle).
la charge explosait
Si c'est ton but, tu peux utiliser `-j' sans argument. ;)
PS: En explorant le /usr/src/linux/makefile, je suis tombé sur l'option
':htmldocs: sgmldocs
$(MAKE) -C Documentation/DocBook html'
Donc je m'attendais a trouver pleinde doc au format html dans le-dit
répertoire... Que nenni.. C'est plein de 'sgml' et de 'tmpl'.
Normal: c'est du DocBook, le format natif de la doc, et la règle que tu
as recopiée ci-dessus le convertit en HTML.
Avec quoi quoi peut-on lite cette doc ?
Le format DocBook est standard. Tu devrais trouver sans difficulté plein
de filtres pour le convertir en d'autres formats. Tiens, je l'ignorais,
mais j'ai tout ça d'installé sur ma Mdk9.2:
docbook2dvi docbook2man docbook2rtf docbook2texi
docbook2html docbook2ps docbook2tex docbook2txt
Le plus simple, si tu as l'espace disque suffisant, est de laisser le
makefile que tu as lu s'en occuper (il fera appel au bon convertisseur
avec les bonnes options).
--
Jérémy JUST <jeremy_just@netcourrier.com>
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
On mettait "MAKE=make -j N" Avec N le nombre de jobs simultamément possible, N étant déterminé par la formule N = ( (RAM en Mo) / 8 ) + 1
Chez mon copain qui dispose de 256 Mo de RAM, on aurait n = 33
Il a combien de processeurs, ton copain? Il me semble peu utile de demander beaucoup plus de processus qu'il n'y a de processeurs. Pour mes compilations courantes, sur une machine à 2 processeurs, je demande 4 processus simultanés (et sur une 12 procs, je demande (12 - load_average), mais ça, c'est parce que je ne suis pas tout seul que je ne veux pas gêner les autres).
Demander un nombre de processus légèrement supérieur au nombre de processeurs permet de mieux utiliser globalement la machine: pendant que quelques compilateurs tourneront à fond sur les CPU (sans I/O), d'autres pourront charger leurs données en RAM depuis le disque (étape qui prend peu de CPU mais beaucoup d'I/O). Intuitivement, j'ai l'impression qu'un nombre trop grand de processus simultanés risque d'être moins intéressant.
Accessoirement, l'option `-j n' complique *beaucoup* le débuggage, puisque les sorties de tous les processus sont enchevêtrées. Et quelques compilations ne la supporte pas (de mémoire, la compilation de Xemacs plante lamentablement quand on la tente en parallèle).
la charge explosait
Si c'est ton but, tu peux utiliser `-j' sans argument. ;)
PS: En explorant le /usr/src/linux/makefile, je suis tombé sur l'option ':htmldocs: sgmldocs $(MAKE) -C Documentation/DocBook html'
Donc je m'attendais a trouver pleinde doc au format html dans le-dit répertoire... Que nenni.. C'est plein de 'sgml' et de 'tmpl'.
Normal: c'est du DocBook, le format natif de la doc, et la règle que tu as recopiée ci-dessus le convertit en HTML.
Avec quoi quoi peut-on lite cette doc ?
Le format DocBook est standard. Tu devrais trouver sans difficulté plein de filtres pour le convertir en d'autres formats. Tiens, je l'ignorais, mais j'ai tout ça d'installé sur ma Mdk9.2: docbook2dvi docbook2man docbook2rtf docbook2texi docbook2html docbook2ps docbook2tex docbook2txt
Le plus simple, si tu as l'espace disque suffisant, est de laisser le makefile que tu as lu s'en occuper (il fera appel au bon convertisseur avec les bonnes options).
-- Jérémy JUST
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Jeremy JUST
On 02 Mar 2004 13:28:02 GMT TiChou wrote:
Il n'y a pas besoin de modifier le Makefile. Il suffit simplement de passer l'option '-j N' en ligne de commande :
$ make -j2 bzImage
Je ne suis pas sûr que cela fonctionne aussi bien que désiré: le premier make (le père des autres) utilisera bien cette option, mais d'après la doc de Make, il ne la passera pas à ses fils. Make a ce comportement pour éviter une explosion: - le père lance 2 fils - chaque fils lance 2 fils... - qui lancent chacun 2 fils...
Donc ça ne marchera que si le make-père réalise un travail significatif de compilation. Or dans le Makefile du noyau Linux, ce n'est pas le cas: je vois plutôt apparaître des règles du genre: $(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@) qui lancent un make-fils (qui n'aura donc pas l'option `-j', d'où la ruse de Hugolino, qui modifiait directement le contenu de $MAKE).
-- Jérémy JUST
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
On 02 Mar 2004 13:28:02 GMT
TiChou <gro.uohcit@uohcit.news.free.fr> wrote:
Il n'y a pas besoin de modifier le Makefile. Il suffit simplement de
passer l'option '-j N' en ligne de commande :
$ make -j2 bzImage
Je ne suis pas sûr que cela fonctionne aussi bien que désiré: le premier
make (le père des autres) utilisera bien cette option, mais d'après la doc
de Make, il ne la passera pas à ses fils.
Make a ce comportement pour éviter une explosion:
- le père lance 2 fils
- chaque fils lance 2 fils...
- qui lancent chacun 2 fils...
Donc ça ne marchera que si le make-père réalise un travail significatif
de compilation. Or dans le Makefile du noyau Linux, ce n'est pas le cas:
je vois plutôt apparaître des règles du genre:
$(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@)
qui lancent un make-fils (qui n'aura donc pas l'option `-j', d'où la ruse
de Hugolino, qui modifiait directement le contenu de $MAKE).
--
Jérémy JUST <jeremy_just@netcourrier.com>
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Il n'y a pas besoin de modifier le Makefile. Il suffit simplement de passer l'option '-j N' en ligne de commande :
$ make -j2 bzImage
Je ne suis pas sûr que cela fonctionne aussi bien que désiré: le premier make (le père des autres) utilisera bien cette option, mais d'après la doc de Make, il ne la passera pas à ses fils. Make a ce comportement pour éviter une explosion: - le père lance 2 fils - chaque fils lance 2 fils... - qui lancent chacun 2 fils...
Donc ça ne marchera que si le make-père réalise un travail significatif de compilation. Or dans le Makefile du noyau Linux, ce n'est pas le cas: je vois plutôt apparaître des règles du genre: $(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@) qui lancent un make-fils (qui n'aura donc pas l'option `-j', d'où la ruse de Hugolino, qui modifiait directement le contenu de $MAKE).
-- Jérémy JUST
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Arnaud Launay
Le 07 Mar 2004 16:29:34 GMT, Jeremy JUST écrivit:
Donc ça ne marchera que si le make-père réalise un travail significatif de compilation. Or dans le Makefile du noyau Linux, ce n'est pas le cas: je vois plutôt apparaître des règles du genre: $(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@) qui lancent un make-fils (qui n'aura donc pas l'option `-j', d'où la ruse de Hugolino, qui modifiait directement le contenu de $MAKE).
Sauf que pour le 2.6, ils ont modifie la partie construction pour que justement cette option marche, en la passant juste au pere.
Arnaud.
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Le 07 Mar 2004 16:29:34 GMT, Jeremy JUST écrivit:
Donc ça ne marchera que si le make-père réalise un travail significatif
de compilation. Or dans le Makefile du noyau Linux, ce n'est pas le cas:
je vois plutôt apparaître des règles du genre:
$(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@)
qui lancent un make-fils (qui n'aura donc pas l'option `-j', d'où la ruse
de Hugolino, qui modifiait directement le contenu de $MAKE).
Sauf que pour le 2.6, ils ont modifie la partie construction pour
que justement cette option marche, en la passant juste au pere.
Arnaud.
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Donc ça ne marchera que si le make-père réalise un travail significatif de compilation. Or dans le Makefile du noyau Linux, ce n'est pas le cas: je vois plutôt apparaître des règles du genre: $(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@) qui lancent un make-fils (qui n'aura donc pas l'option `-j', d'où la ruse de Hugolino, qui modifiait directement le contenu de $MAKE).
Sauf que pour le 2.6, ils ont modifie la partie construction pour que justement cette option marche, en la passant juste au pere.
Arnaud.
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.