Lorsque vous compiler une application ou une bibliothèque, vous vous demandez sûrement comment faire pour que cela aille plus vite. il y a 4 solutions :
1/ vous avez une machine peu puissante (jusqu'à 300MHz), dans ce cas, vous pouvez faire make MAKE=make -jx (ou x appartient à [2;4])
2/ vous avez une machine qui se tient (de 300 à 700 MHz), dans quel cas vous pouvez passer x à des valeurs un peu plus grandes, appartennant à [4;8].
3/ vous avez un super-calculateur de la mort qui tue, ou une machine de plus de 700MHz, dans quel cas vous pouvez passer x à [8;14].
4/ vous aimez prendre des risques et faites make MAKE=make -j, auquel cas toutes les compilations sont lancés en meme temps, et quand il y en a 200, ne vous étonnez pas que la machine freeze ...
--- notez que cela peut ralentir votre machine, normal pour des compilations, mais la c'est un peu plus violent, donc prudence !
# Sur quoi tu te bases ?
Posté par zeDek . Évalué à 0.
[^] # Re: Sur quoi tu te bases ?
Posté par kalahann . Évalué à 1.
# C'est faux...
Posté par Guillaume Laurent (site web personnel) . Évalué à 1.
Je crois que cette "astuce" date du temps où les HD étaient assez lents, maintenant elle n'est plus vraie. Si tu veux aller plus vite avec make -j2, prends un bi-pro. :-)
[^] # Re: faux mais non c'est vrai
Posté par ctof . Évalué à -1.
[^] # poru l histoire
Posté par snurpsss . Évalué à 1.
[^] # Re: poru l histoire
Posté par ToasteR (site web personnel) . Évalué à 1.
Concernant le -j sans arguments, il est pratique de faire :
MAKE=make -j -l 10 dans le top Makefile, ce qui va limiter le load average de la machine à 10
Evidemment, l'option j ne peut que ralentir la machine sur les machines monoprocesseur !
[^] # Re: faux mais non c'est vrai
Posté par starfox . Évalué à 1.
[+]Re: faux mais non c'est vrai (Score: -1/#0, #130031) Notez! [ - ou + ]
Donc dès qu'il a posté il était à [-1], c'est un bug?
[^] # Re: faux mais non c'est vrai
Posté par Arachne . Évalué à 1.
[^] # Re: C'est faux...
Posté par TazForEver . Évalué à 1.
idem pour le noyau: j6 me permet de passer de 22min à 15min et l'utilisaétion CPU touche les 85%
[^] # Re: C'est faux...
Posté par Philippe F (site web personnel) . Évalué à 1.
[^] # Re: C'est faux...
Posté par Raphaël G. (site web personnel) . Évalué à 1.
J'ai un athlon-XP 2100+ et si je balance make MAKE=make -j14, mplayer 1pre2 met une dizaine de seconde, sinon sa met 3 minutes...
par contre la différence c'est que la charge de 10-20% passe a 99% ave n=14!!!
[^] # Re: C'est faux...
Posté par Quake Tsuna . Évalué à 1.
# make -j nb pour les dernieres releases
Posté par ctof . Évalué à 1.
# La même chose avec make-kpkg
Posté par pas_moi . Évalué à 1.
[^] # Re: La même chose avec make-kpkg
Posté par Nico . Évalué à 1.
perso un MAKE = make -j passe tres bien sur ma woody; juste qlq freeze ;)
[^] # Re: La même chose avec make-kpkg
Posté par chucky . Évalué à 1.
oki ?
# Re: make -jx, ou comment ralentir/acceler une compilation
Posté par core . Évalué à 1.
Deux fautes qui me hérissent le poil ici :
[^] # Re: make -jx, ou comment ralentir/acceler une compilation
Posté par Nicolas P . Évalué à 1.
[^] # Re: make -jx, ou comment ralentir/acceler une compilation
Posté par j . Évalué à 1.
http://www.42-networks.com/faq/library.html(...)
[^] # Re: make -jx, ou comment ralentir/acceler une compilation
Posté par samds . Évalué à 1.
pour repondre au premier commentaire, les valeurs sont en effet basees sur des tests, realises a l'epoque sur un P166, disque SCSI-I. mais maintenant ce n'est plus valable. d'ou le titre de l'astuce : comment RALENTIR/acceler une compilation.
++
sam
[^] # Re: make -jx, ou comment ralentir/acceler une compilation
Posté par Quzqo . Évalué à 1.
Et p'is y'a une chose Ôssi kon appelle la NETiquette...
Pour une fois que la toile faisait mine de centrer son intérêt sur le fond et non sur la forme... il fallut qu'un internaute marchât dedans...
[^] # Re: make -jx, ou comment ralentir/acceler une compilation
Posté par - - . Évalué à 1.
et le fond a été couvert par d'autres, il était temps de noter les fautes. ce n'est pas une insulte.
# Si vous avez plusieurs machines : LA solution "distcc"
Posté par Guillaume D. . Évalué à 1.
copier coller de la page principale :
------------
distcc is not itself a compiler, but rather a front-end to the GNU C/C++ compiler (gcc), or another compiler of your choice. All the regular gcc options and features work as normal.
distcc is designed to be used with GNU make's parallel-build feature (-j). Shipping files across the network takes time, but few cycles on the client machine. Any files that can be built remotely are essentially "for free" in terms of client CPU.
distcc has been under development since early 2002. It reliably and successfully compiles large, complex free and proprietary software systems. Programs known to build correctly with distcc include the Linux kernel, rsync, KDE, GNOME (via GARNOME), Samba and Ethereal.
distcc is nearly linearly scalable for small numbers of machines: Building Linux 2.4.19 on a single 1700MHz Pentium IV machine with distcc 0.15 takes 6 minutes, 45 seconds. Using distcc across three such machines on a 100Mbps switch takes only 2 minutes, 30 seconds: 2.6x faster. The (unreachable) theoretical maximum speedup is 3.0x, so in this case distcc scales with 89% efficiency.
-----------
Ca ca booste vraiement votre make !
Guillaume
[^] # Re: Si vous avez plusieurs machines : LA solution
Posté par spart . Évalué à 1.
Grumf :-/
distcc réparti les tâches de compilation entre plusieurs
machines d'un réseau local (ou distant, mais sans aucune sécurité).
Il y a un serveur, distccd, sur la machine principale, qui envoie le code
source directement sorti du préprocesseur à tous les clients distcc qui
répondent à l'appel - lesquels compilent ce qui leur est donné et
renvoient du code objet.
C'est puissant, très souple, et surtout les perfs grimpent de manière
quasi linéaire avec le nombre de processeurs disponibles.
Pour l'installation, si on a l'intention de compiler du code C++, il faut
que toutes les machines engagées dans le réseau aient un g++
compatible niveau ABI (les 3.x et plus sont censées avoir une ABI stable).
Ah oui, j'allais oublier : combiner distcc à ccache (http://ccache.samba.org(...))
- voire utiliser ce dernier seul - donne d'excellents résultats (vitesse x10
dans certains cas, notemment quand on recompile plusieurs fois le
même arbre)
Voilà voilà...
# Re: make -jx, ou comment ralentir/acceler une compilation
Posté par Tof . Évalué à 1.
make CC=distcc -j x
Il faut pour cela installer distcc sur chaque machine, et y lancer distccd. Le x est à priori le nombre de machines x2.
Ca marche top, sans souci pour la mise en place... un peu de mal avec le noyal cependant.
http://distcc.samba.org(...)
# Re: make -jx, ou comment ralentir/acceler une compilation
Posté par Pascal . Évalué à 1.
Pasque si l'on a pas beaucoup de RAM, il n'y en a pas assez pour toutes les instances de gcc -> swap -> temps de compilation x10
# Pour Gentoo
Posté par Calim' Héros (site web personnel) . Évalué à 2.
sous la forme de la ligne suivante :
MAKEOPTS="-jx"
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.