Page 1 sur 1

[CPU] Compilation et multi-coeurs (résolu)

Publié : lun. 20 juin 2011, 18:30
par hansi
Quand on a un proc à 2+ coeurs et qu'on compile un logiciel, depuis AUR par exemple, il n'y a à chaque fois qu'1 coeur qui est sollicité et ce coeur change à chaque seconde environ.
N'y aurait-il pas un moyen de configurer quelque chose pour que plusieurs coeurs soient sollicités en même temps pendant le compilation ? Par exemple, sur un i5 ne garder qu'1 coeur au repos et les 3 autres au taquet sur la compilation ?

Merci

Re: [CPU] Compilation et multi-coeurs

Publié : lun. 20 juin 2011, 18:51
par FoolEcho
:rtfm:

Code : Tout sélectionner

man make
Concrètement: modifier le PKGBUILD en ajoutant l'option -j au make (par exemple -j 4 pour lancer 4 processus en parallèle). :wink:

Re: [CPU] Compilation et multi-coeurs

Publié : lun. 20 juin 2011, 18:56
par Desintegr
Il faut modifier le fichier /etc/makepkg.conf.

Ce qui t'intéresse est la variable MAKEFLAGS et son option -j.
Généralement, il est conseillé d'utiliser une valeur égale à 1 + 1 * le nombres de cœurs/processeurs.

Par exemple, pour un quad-core, il faut mettre -j5.

Plus d'informations : https://wiki.archlinux.org/index.php/Makepkg

Re: [CPU] Compilation et multi-coeurs

Publié : lun. 20 juin 2011, 19:45
par hansi
Wow ! :shock: Alors là c'est juste mortel !! Merci infiniment les gars !!!

(je vais enfin pouvoir le faire pleurer ce i5, ahah :lol: )

Re: [CPU] Compilation et multi-coeurs (résolu)

Publié : lun. 20 juin 2011, 21:13
par chipster
fais toi un alias style alias make = make -j7. Perso c'est ce que j'ai fait sur ma machine pour utiliser tous les coeurs dispo

Re: [CPU] Compilation et multi-coeurs (résolu)

Publié : lun. 20 juin 2011, 21:46
par hansi
Mais en modifiant le makepkg.conf c'est pas aussi bien ?

Re: [CPU] Compilation et multi-coeurs (résolu)

Publié : lun. 20 juin 2011, 22:12
par FoolEcho
L'alias a l'avantage de s'appliquer pour toute compilation "maison" (== ne passant pas par un PKGBUILD). Il faut aussi garder en tête que certains PKGBUILD sont susceptibles de redéfinir les différentes variables du makepkg.conf (c'est rare, mais ça arrive).

Re: [CPU] Compilation et multi-coeurs (résolu)

Publié : lun. 20 juin 2011, 22:32
par hansi
Ok, c'est fait. En plus c'est vrai que c'est plus pratique pour sauvegarder.

Merci !

Re: [CPU] Compilation et multi-coeurs (résolu)

Publié : lun. 20 juin 2011, 23:10
par tuxce
Juste pour compléter, la variable MAKEFLAGS est propre à make, du coup, tu peux la définir dans ton .bashrc par exemple (avec un export), elle sera valable pour makepkg et les make lancés depuis un shell.

Re: [CPU] Compilation et multi-coeurs

Publié : mar. 21 juin 2011, 01:03
par jaco
Desintegr a écrit : Généralement, il est conseillé d'utiliser une valeur égale à 1 + 1 * le nombres de cœurs/processeurs.
Ce qui, à l'aide d'une propriété mathématique hyper-complexe, peut être simplifié en 1 + nbre de de cœurs/processeurs :humour:

BTW: la page dont tu donnes le lien évoque la règle -j2 + nbre de coeurs, ce qui donnerait -j6 pour un quad core... Mais j'ai googeulisé et je n'ai trouvé nulle part trace de ce qui motive ce calcul...

Merci pour l'info, en tous cas, bien que je ne sais pas trop si les 4 coeurs de mon I5 sont activés sur mon portable, en fait... J'avais cru comprendre qu'ils n'en activaient que deux pour économiser l'énergie... Je vais mettre -j6 et j'essaierai de surveiller une compilation...

Re: [CPU] Compilation et multi-coeurs (résolu)

Publié : mar. 21 juin 2011, 08:00
par chipster
Pour les histoires de des -j5 ... il est conseillé de mettre +1 juste pour une histoire de cache. Ensuite on peut monter la valeur, cependant, ça sature les I/O de la machine qui compilera plus lentement et sera moins utilisable pendant ladite compilation

Re: [CPU] Compilation et multi-coeurs

Publié : mar. 21 juin 2011, 09:40
par Desintegr
jaco a écrit : BTW: la page dont tu donnes le lien évoque la règle -j2 + nbre de coeurs, ce qui donnerait -j6 pour un quad core... Mais j'ai googeulisé et je n'ai trouvé nulle part trace de ce qui motive ce calcul...
La page indique
Generally -j2, plus 1 for each additional core/processor is an adequate choice.
c'est-à-dire -j2, plus 1 pour chaque cœur/processeur additionnel.
Cela revient au même que -j1, plus 1 pour chaque cœur/processeur. Donc -j5 pour un quad core.

J'ai ajouté un * car je pensais qu'il y avait un coefficient multiplicateur quand j'ai commencé à écrire mon post, mais finalement il n'y en a pas.