Para compilaciones simples (compilaciones que no son paralelas ni distribuidas), ejecute el mandato rafmake como sigue:
rafmake [ -f makefile ] [ options ] ... [ targets ] ...
donde La lista siguiente proporciona ejemplos por sistema operativo.
% rafmake -u -f project.mk
% rafmake -v -f project.mk a.out
Y:\> rafmake INCL_DIR=C:\src\include
El mandato rafmake soporta compilaciones paralelas, que separan las compilaciones en componentes independientes que se pueden compilar al mismo tiempo para reducir el tiempo de compilación general.
La sintaxis para ejecutar compilaciones paralelas es la siguiente:
rafmake -J num [ -f makefile ] [ options ] ... [ targets ] ...
dondeLa ejecución de compilaciones paralelas proporciona una utilización de recursos eficiente, especialmente con procesadores multinúcleo. La ganancia de rendimiento de las compilaciones paralelas depende del tipo de la compilación. Por ejemplo, en el caso de una compilación con gran uso de la CPU, el número óptimo de trabajos de compilación simultáneos sería el mismo que el número de procesadores (o núcleos). Si especifica un número mayor, es posible que no obtenga una ganancia de rendimiento significativa. Para una compilación con gran uso de E/S, sin embargo, el aumento del número de trabajos paralelos reduce el tiempo de compilación. Intente realizar algunas compilaciones con números distintos para determinar el número óptimo de trabajos de compilación simultáneos para sus recursos.
La lista siguiente proporciona ejemplos de compilaciones paralelas por sistema operativo.
% rafmake -J 3 -f project.mk
Y:\> rafmake -J 5 INCL_DIR=C:\src\include software.exe
Las compilaciones paralelas pueden utilizar recursos sólo en un sistema. La distribución de una compilación lleva a las compilaciones paralelas un paso más allá, al distribuir la carga de compilación en varios sistemas.
Para distribuir una compilación, el entorno debe cumplir los requisitos siguientes:
Para todos los sistemas en los que la compilación se va a distribuir, el mismo código fuente debe estar accesible mediante la misma vía de acceso. Por lo general, el tener el código fuente en unidades compartidas montadas en NFS (y montadas en la misma vía de acceso en todos los sistemas) asegura que el mismo directorio fuente está disponible en todos los sistemas de compilación de la misma vía de acceso.
Cuando un usuario inicia una compilación distribuida desde un sistema principal, el mandato rafmake inicia internamente el motor de construcción (rafbe) en todos los sistemas donde la compilación se va a distribuir. El motor de construcción se inicia mediante el mandato ssh o rsh, que se configura al instalar Build Catalyst. El archivo /opt/rational/buildforge/buildcatalyst/etc/rafbe_starter es un enlace simbólico en el shell remoto que el usuario eligió durante la instalación. El usuario que inicie la compilación debe poder iniciar sesión sin contraseña en todos los sistemas que utilicen el shell remoto elegido. Al iniciar sesión sin contraseña, el motor de construcción puede iniciarse de forma silenciosa en los diversos sistemas. Consulte el manual del mandato rsh o ssh para configurar un inicio de sesión que no requiera contraseña.
Un archivo de hosts de construcción contiene, por lo general, varias líneas con los nombres de host o direcciones IP de muchos sistemas. Dichos sistemas se encuentran donde las compilaciones se han de distribuir. El archivo también contiene líneas que describen otras opciones, tales como -idle num. Este tipo de línea especifica lo desocupado que debe estar un sistema para que las compilaciones se planifiquen en los sistemas que están enumerados debajo de ella. Se presupone que la desocupación es 50, si no se menciona explícitamente. A continuación se muestra un ejemplo de archivo de hosts de construcción:
### Contents of build hosts file
host1.mydomain.com
-idle 25
host2.mydomain.com
host2.mydomain.com
192.168.0.200
-idle 75
host3.mydomain.com
### End of build hosts file
En este ejemplo, la compilación se distribuye en cuatro sistemas: host1, host2, host3 y 192.168.0.200. Se presupone que la desocupación para el sistema host1.mydomain.com ha de ser 50, dado que no se menciona explícitamente. Para los sistemas host2 y 192.168.0.200, la desocupación se especifica como 25. Esto significa que si uno de estos sistemas está ocupado o cargado a menos del 75% (o, al menos, desocupado al 25%), las compilaciones se planificarán en dicho sistema. Si los sistemas están desocupados menos del 25%, las compilaciones no se planificarán en dichos sistemas. A su vez, el ejemplo enumera el sistema host2 dos veces. Como resultado, dos hebras de compilaciones paralelas pueden iniciarse en el sistema host2. En función de las configuraciones del sistema, puede modificar el archivo de hosts de construcción para utilizar los recursos de forma óptima para las compilaciones.
Una vez que cree el archivo de hosts de compilación, puede iniciar la compilación distribuida mediante la siguiente sintaxis de mandato:
rafmake -J num -B build_hosts_file [ -f makefile ]
[ options ] ... [ targets ] ...
El valor num para la opción -J especifica el número total de hebras de compilación para todos los sistemas.
Sin la opción -B, el mandato rafmake realizaría una compilación paralela en lugar de una compilación distribuida. Cuando especifique la opción -B y un archivo de hosts de construcción válido, el motor de construcción planificará las compilaciones distribuidas en los distintos sistemas que están especificados en el archivo de hosts de construcción.