Je recommande de ne pas utiliser l'option -l
. En principe, -l
semble supérieur à -j
. -j
dit, commencer ce nombre d'emplois. -l
dit, assurez-vous que de nombreux travaux sont en cours d'exécution. Souvent, ce sont presque la même chose, mais lorsque vous avez des travaux liés E/S sont d'autres bizarreries, alors -l
devrait être mieux. Cela dit, le concept de moyenne de charge est un peu douteux. C'est nécessairement un échantillon de ce qui se passe dans le système. Donc, si vous exécutez make -j -l N
(pour certains N
) et que vous avez un fichier make bien écrit, make lancera immédiatement un grand nombre de tâches et épuisera des descripteurs de fichier ou de mémoire avant même que le premier échantillon du chargement du système puisse être pris. En outre, la comptabilisation de la moyenne de charge diffère d'un système d'exploitation à l'autre, et d'autres ne le sont pas du tout.
En pratique, vous serez aussi bien en utilisant -j
et aurez moins de maux de tête. Pour obtenir plus de performance sur la construction, ajustez vos makefiles, jouez avec les options du compilateur, et utilisez ccache ou similaire.
(je soupçonne que la raison initiale de l'option -l
vient d'une époque où plusieurs processeurs étaient rares et d'E/S était vraiment lent.)
Expérimentalement si je remarqué sur une machine tout autre utilisation de synchronisation -j I a obtenu les compilations les plus rapides en utilisant -j8 sur une machine à 4 cœurs. – Zitrax
J'ai une expérience similaire. Probablement parce qu'il y a quelques étapes de compilation liées aux E/S, de sorte que lorsqu'un processus de compilation bloque les E/S, un autre peut utiliser cette heure pour la compilation. –