Utilisez ces exemples pour mieux comprendre comment vous pouvez utiliser Build Catalyst pour les générations simples, les générations parallèles et les générations réparties.
Pour les générations simples (qui ne sont ni parallèles, ni distribués), exécutez la commande rafmake comme suit :
rafmake [ -f makefile ] [ options ] ... [ cibles ] ...
où La liste suivante fournit des exemples par système d'exploitation.
% rafmake -u -f project.mk
% rafmake -v -f project.mk a.out
Y:\> rafmake INCL_DIR=C:\src\include
La commande rafmake prend en charge les générations parallèles, lesquels séparent les générations en composants indépendants qui peuvent être générés simultanément afin de réduire la durée générale de la génération.
La syntaxe permettant d'exécuter des générations parallèles se présente comme suit :
rafmake -J num [ -f makefile ] [ options ] ... [ cibles ] ...
oùL'exécution de générations parallèles fournit une utilisation efficace des ressources, en particulier avec des processeurs multicoeurs. Le gain de performance issu de générations parallèles dépend du type de génération. Par exemple, dans le cas d'un build exigeant pour le processeur, le nombre optimal de travaux de génération simultanées serait identique au nombre de processeurs (ou coeurs). Si vous spécifiez un nombre plus élevé, vous risquez de ne pas enregistrer un gain de performance significatif. Toutefois, pour un build intensif en E-S, l'augmentation du nombre de travaux parallèles réduit la durée de chaque build. Essayez quelques générations avec différent nombres pour déterminer le nombre optimal de travaux de génération pour vos ressources.
La liste suivant fournit des exemples de générations parallèles par système d'exploitation.
% rafmake -J 3 -f project.mk
Y:\> rafmake -J 5 INCL_DIR=C:\src\include software.exe
Les générations parallèles peuvent utiliser les ressources seulement sur un seul ordinateur. La distribution d'un build fait progresser d'un pas les générations parallèles en répartissant la charge de génération sur plusieurs ordinateurs.
Pour distribuer un build, votre environnement doit répondre aux exigences suivantes :
Pour tous les ordinateurs sur lesquels la génération doit être répartie, le même code source doit être accessible par le même chemin d'accès. Généralement, l'installation du code source sur des parts montées sur NFS (et leur montage dans le même chemin d'accès sur tous les ordinateurs) garantit que le même répertoire source est disponible sur tous les ordinateurs de la génération situés dans le même chemin d'accès.
Lorsqu'un utilisateur démarre un build distribué à partir d'un ordinateur hôte, la commande rafmake démarre en interne le moteur de la génération (rafbe) sur tous les ordinateurs sur lesquels la génération doit être répartie. Le moteur de la génération est démarré à l'aide de la commande ssh ou rsh, qui est configuré à l'installation de Build Catalyst. Le fichier/opt/rational/buildforge/buildcatalyst/etc/rafbe_starter est un lien symbolique vers le shell distant que l'utilisateur a choisi au cours de l'installation. L'utilisateur qui démarre la génération doit être en mesure de se connecter sans mot de passe à tous les ordinateurs qui utilisent le shell distant choisi. En cas de connexion sans mot de passe, le moteur de la génération peut être démarré de manière silencieuse sur les différents ordinateurs. Consultez le manuel de la commande rsh ou ssh pour définir un identifiant de connexion qui ne nécessite aucun mot de passe.
Un fichier d'hôtes de génération contient généralement plusieurs lignes avec les noms d'hôte ou les adresses IP de nombreux ordinateurs. Les générations doivent être réparties sur ces ordinateurs. Le fichier contient également des lignes qui décrivent d'autres options, telles que -idle num. Ce type de ligne spécifie quelle doit être l'inactivité d'un ordinateur pour que des générations soient programmées sur les ordinateurs qui sont répertoriés dessous. L'inactivité est censée être de 50 si elle n'est pas explicitement mentionnée. Voici un exemple de fichier d'hôtes de génération :
### Contenu du fichier d'hôtes de génération
host1.mydomain.com
-idle 25
host2.mydomain.com
host2.mydomain.com
192.168.0.200
-idle 75
host3.mydomain.com
### Fin du fichier d'hôtes de la génération
Dans cet exemple, la génération est répartie sur quatre ordinateurs : host1, host2, host3 et 192.168.0.200. L'inactivité de l'ordinateur host1.mydomain.com est supposée être de 50, car elle n'est pas mentionnée explicitement. Pour les ordinateurs host2 et 192.168.0.200, l'inactivité est spécifiée comme 25. Cela signifie que, si l'un de ces ordinateurs est chargé ou occupé à moins de 75 % (ou inactif à au moins 25 %), les générations sont planifiées sur cet ordinateur. Si les ordinateurs sont inactifs à moins de 25 %, les générations ne sont pas planifiées sur ces ordinateurs. De plus, l'exemple mentionne deux fois l'ordinateur host2. En conséquence, deux unités d'exécution de génération parallèles peuvent être démarrées sur l'ordinateur host2. Selon la configuration des ordinateurs, vous pouvez modifier votre fichier d'hôtes de la génération pour qu'il utilise les ressources de manière optimale pour les générations.
Une fois que vous avez créé le fichier des hôtes de la génération, vous pouvez démarrer la génération répartie en utilisant la syntaxe de commande suivante :
rafmake -J num -B fichier_hôtes_génération [ -f makefile ]
[ options ] ... [ cibles ] ...
La valeur de num pour l'option -J spécifie le nombre total d'unités d'exécution de la génération pour tous les ordinateurs.
Sans l'option -B, la commande rafmake procéderait à un build parallèle au lieu d'un build distribué. Lorsque vous spécifiez l'option -B et un fichier d'hôtes de génération valide, le moteur de génération planifie les générations réparties sur les différents ordinateurs qui sont spécifiés dans le fichier des hôtes de la génération.