Accélérer le processus de compilation et de build avec GNU make
La construction/compilation fréquente de librairies ou de projets via GNU make peut prendre beaucoup de temps. Pour accélérer ces compilations, on peut utiliser make -jN où N est le nombre de build parallèles. Par exemple:
fera 4 compilations en parallèle.
Considérations matérielles
Evidemment, vous ne pouvez pas faire quelque chose comme:
C’est la meilleure manière de voir votre ordinateur figé !!! Vous devez donc vérifier les informations matérielles de votre CPU. Combien de coeurs possédez vous (incluant le multi threading):
Vous pouvez également utiliser dmidecode :
ici vous avez deux processeurs (2 fois Core Count) avec 8 coeurs. Vous pouvez également utiliser la commande lspcu:
Considérations système
Une fois le nombre de coeurs déterminé, on doit avoir un système qui continue à répondre durant la compilation. On utilise l’option -l de make -l [load], –load-average[=load] {Spécifie qu’aucun nouveau job (commande) doit àªtre lancé si d’autres jobs sont en cours d’exécution et que la chage moyenne est d’au moins le paramètre} load
Pour bénéficier d’une exploitation maximale des processeurs sans figer votre système, exportez la variable d’environnement MAKEFLAGS:
Ou:
cela signifie que la charge moyenne ne dépasse pas le nombre de coeurs.
Configuration persistente
Pour garder cette configuration de manière persistente, ajouter dans votre.bashrc ou .bash_profile:
Un dernier exemple en ligne de commande
Si vous ne voulez pas opérer de configuration particulière:
Remarque
Vous pouvez si le montant de votre RAM le permet doubler le nombre de jobs par rapport au nombre de CPU, notamment si votre CPU supporte l’hyper-threading. Typiquement, si vous avez 32 dual cores, vous pouvez lancer 128 jobs (32x2-coeursx2-hyperthreading). Merci à Andrew Stormont pour sa contribution.
Si vous avez trouvé cet article ou ce site utile et souhaitez soutenir notre travail, veuillez envisager de faire un don. Merci !
Aidez-nousArticles dans la même rubrique
- Trouver les processus consommant le plus de cpu/mémoire à l'aide de la commande ps
- Trouver/déterminer les options avec lesquelles python a été compilé
- Trouver/déterminer la version de numpy de numpy que j'utilise
- Télécharger de la musique et des vidéos .mp3, .wma, .avi, .mpg , divx avec google
- Taille du disque et de répertoire: df du
- SVN -- Comment ignorer des fichiers ou des répertoires avec subversion?
- Rechercher un fichier: locate, find et which
- Quelle est la version de mon noyau Linux : uname
- Programmation des actions(tâches) régulières: crontab
- phpMyAdmin: rechercher et remplacer dans une base MySQL
- Ouverture et fermeture de session: login, logout et password
- Nombre de lignes, de mots d'un fichier: wc
- Linux Comment supprimer une imprimante en ligne de commande
- Linux comment se connecter à Windows via remote desktop RDP en CentOS 7 / RedHat 7
- Lancer une commande un jour donné, à une heure donnée: at
- How to shut down or reboot: shutdown command
- Historique des commandes: history
- Faire un diff sur des fichiers distants en utilisant ssh
- Effacer l'écran et enlever certains caractères bizarres: clear reset
- Comment synchroniser les données mémoire sur le disque: sync
- Comment générer des certificats auto-signés OpenSSL sous Linux CentOs/RedHat pour Apache/httpd
- Comment faire un déni de service en BASH à l'aide de fork ?
- Comment éteindre ou redémarrer son pc: shutdown
- Comment définir un timeout lors d'une tentative de connexion SSH ?
- Comment chiffrer/déchiffrer un fichier ou un répertoire sous Linux?
- Chronométrer une tâche: time
- Archivage et compression de données: tar
- Affichage du calendrier en ligne de commande: cal
- Accélérer le processus de compilation et de build avec GNU make
- Accéder à une page de manuel: man
- Linux - Commande du jour