使用以下範例以更充分地瞭解,如何將 Build Catalyst 用於簡式建置、平行建置和分散式建置。
如果是簡式建置(不是平行建置或分散式建置),請依下列方式執行 rafmake 指令:
rafmake [ -f makefile ] [ options ] ... [ targets ] ...
其中 下列清單依作業系統提供範例。
% rafmake -u -f project.mk
% rafmake -v -f project.mk a.out
Y:\> rafmake INCL_DIR=C:\src\include
rafmake 指令支援平行建置,可將建置區隔為可同時建立的獨立元件,以減少整體建置時間。
用來執行平行建置的語法如下所示:
rafmake -J num [ -f makefile ] [ options ] ... [ targets ] ...
其中執行平行建置能提供有效率的資源使用率,對多核心處理器更是如此。從平行建置獲得的效能增益 視建置類型而定。例如,在 CPU 密集的建置案例中,同時發生之建置工作的最佳數目和處理器 (或核心)的數目相同。如果您指定的數目超過處理器數目,可能就無法實現明顯的效能增益。然而若是 IO 密集的建置,增加平行工作的數目會減少建置時間。您可以嘗試建立幾種不同 工作數目的建置,以判斷對您的資源而言,同時發生之建置工作的最佳數目。
下列清單依作業系統提供平行建置的範例。
% rafmake -J 3 -f project.mk
Y:\> rafmake -J 5 INCL_DIR=C:\src\include software.exe
平行建置只能在一部電腦上使用資源。分散式建置則較平行建置更往前邁進一步,將建置負載分散於多部電腦上。
如果要分散式建置,您的環境必須符合下列需求:
在您要分散式建置的所有電腦上,相同的原始碼必須透過相同的路徑提供存取。一般來說,在裝載了 NFS 的分享上具有原始碼(並將分享裝載於所有電腦的 相同路徑上),可確保所有建置電腦都在相同路徑提供相同的原始檔目錄。
當使用者從主機啟動分散式建置時,rafmake 指令會針對要分散式建置的所有電腦,從內部啟動建置引擎 (rafbe)。建置引擎可透過 ssh 或rsh 指令啟動,這是在安裝 Build Catalyst 時所配置的。/opt/rational/buildforge/buildcatalyst/etc/rafbe_starter 檔案是使用者在安裝期間所選擇之遠端 Shell 的符號鏈結。啟動建置的使用者必須能夠 無密碼登入所有使用選擇的遠端 Shell 的電腦。在無密碼登入的情況下,建置引擎可以在多部電腦上無聲自動啟動。請查閱《rsh 或 ssh 指令手冊》,以設定無密碼登入。
建置 hosts 檔通常包含數行文字,載明多部電腦的主機名稱或 IP 位址。這些就是要用來分散式建置的電腦。檔案同時包含 數行用來說明其他選項的文字,如 -idle num。這類型的行說明下列電腦必須達到何種閒置程度,電腦上的建置才會進行排程。如果沒有 明確提到,閒置程度通常假定為 50。以下是建置 hosts 檔範例:
### 建置 hosts 檔內容
host1.mydomain.com
-idle 25
host2.mydomain.com
host2.mydomain.com
192.168.0.200
-idle 75
host3.mydomain.com
### 建置 hosts 檔結束
在這個範例中,建置被分散到 4 部電腦:host1、host2、host3 及 192.168.0.200。host1.mydomain.com 電腦的閒置程度假定為 50,因為沒有明確提到。host2 和 192.168.0.200 電腦 的閒置程度則指定為 25。這表示如果其中一部電腦的負載或忙碌程度在 75% 以下(或閒置程度至少為 25%),則會在該電腦上進行建置排程。如果電腦的閒置程度在 25% 以下,就不會在這些電腦上排程建置。另外,範例中列出 host2 電腦兩次。因此,可以在 host2 電腦啟動 2 個平行建置執行緒。您可以根據電腦的配置調整建置 hosts 檔,將資源充份運用於建置上。
在您建立建置 hosts 檔之後,就能使用下列指令語法啟動分散式建置:
rafmake -J num -B build_hosts_file [ -f makefile ]
[ options ] ... [ targets ] ...
-J 選項的 num 值指定所有電腦的建置執行緒總計數目。
如果沒有 -B 選項,rafmake 指令會執行平行建置而非分散式建置。當您指定 -B 選項及有效的建置 hosts 檔時,建置引擎會在建置 hosts 檔所指定的不同電腦上,進行分散式建置的排程。