Build Catalyst の例

以下の例を参考に、Build Catalyst を使用して単純ビルド、並列ビルド、および分散ビルドを行う方法について理解を深めてください。

単純ビルド

単純ビルド (並列でも分散でもないビルド) の場合、rafmake コマンドは以下のようにして実行します。

rafmake [ -f makefile ] [ options ] ... [ targets ] ... 
詳細は以下のとおりです。

オペレーティング・システム別の例を以下にリストします。

  • Linux および Solaris
    • 特定の Make ファイルにあるデフォルトのターゲットを、そのすべての依存関係とともに無条件にビルドします。
      % rafmake -u -f project.mk
    • 特定の Make ファイルにある特定のターゲットをビルドし、詳細な出力を生成します。
      % rafmake -v -f project.mk a.out
  • Windows
    • デフォルトの Make ファイルにあるデフォルトのターゲットを、INCL_DIR マクロが設定する特定の値を使用してビルドします。
      Y:¥> rafmake INCL_DIR=C:¥src¥include

並列ビルド

rafmake コマンドは並列ビルドをサポートしています。並列ビルドでは、ビルドを、同時にビルド可能な複数の独立したコンポーネントに分割して、全体的なビルド時間を短縮します。

並列ビルドを実行するための構文は以下のとおりです。

rafmake -J num [ -f makefile ] [ options ] ... [ targets ] ... 
詳細は以下のとおりです。
  • num は、それぞれ独立したターゲットを同時にビルドする並行ビルド・ジョブの数です。
  • makefile は使用する Make ファイルです。
  • options には、rafmake ユーティリティーのリファレンスで説明されているオプションが入ります。
  • targets はビルドするターゲット・ファイルです。

並列ビルドを実行すると、リソースを能率的に利用することができます。マルチコア・プロセッサーの場合に特に効果的です。 並列ビルドによってどれだけのパフォーマンス向上が得られるかは、ビルドのタイプによって異なります。 例えば、CPU 集中型のビルドの場合、並行ビルド・ジョブの最適な数は、プロセッサー (またはコア) の数と同じと考えられます。 それより多く指定した場合、パフォーマンスの大幅な向上は実現しない可能性があります。 しかし、入出力集中型のビルドの場合、並列ジョブの数を増やすことによってビルド時間が短縮されます。 異なる数値でビルドを数回試行して、ご使用のリソースに対する並行ビルド・ジョブの最適な数を判別してください。

並列ビルドの例をオペレーティング・システム別に以下にリストします。

  • Linux および Solaris
    • 3 つの並行ビルド・ジョブによって、特定の Make ファイルにあるデフォルトのターゲットを並列ビルドします。
      % rafmake -J 3 -f project.mk
  • Windows
    • 5 つの並行ジョブによって、デフォルトの Make ファイルにある特定のターゲットを、INCL_DIR マクロが設定する特定の値を使用して並列ビルドします。
      Y:¥> rafmake -J 5 INCL_DIR=C:¥src¥include software.exe

分散ビルド

並列ビルドでは、1 つのコンピューター上にあるリソースのみを使用できます。 ビルドの分散は並列ビルドをさらに一歩押し進めたもので、ビルドの負荷を複数のコンピューターに分散します。

注: Build Catalyst を分散ビルドに対して使用するには、分散ビルドで使用するすべてのコンピューターに Build Catalyst をインストールします。

ビルドを分散させるためには、環境が以下の要件を満たしている必要があります。

  • 各コンピューターがソース・コードを共有している。

    ビルドの分散先となるすべてのコンピューターにおいて、同じパスで同じソース・コードにアクセスできる必要があります。 通常は、NFS マウントされたシェア上にソース・コードを置くこと (およびそれらをすべてのコンピューター上で同じパスにマウントすること) で、すべてのビルド・コンピューター上の同じパスで同じソース・ディレクトリーを使用できるようになります。

  • 選択したリモート・シェル (rsh または ssh) でのログインが、パスワードを要求しないように構成されている。

    ユーザーがホスト・コンピューターから分散ビルドを開始すると、ビルドの分散先となるすべてのコンピューター上で、rafmake コマンドによりビルド・エンジン (rafbe) が内部的に開始されます。 ビルド・エンジンは、Build Catalyst のインストール時に構成された ssh コマンドまたは rsh コマンドを使用して開始されます。 /opt/rational/buildforge/buildcatalyst/etc/rafbe_starter ファイルは、インストール時にユーザーが選択したリモート・シェルへのシンボリック・リンクです。 ビルドを開始するユーザーは、この選択されたリモート・シェルを使用しているすべてのコンピューターに、パスワードなしでログインできる必要があります。 パスワードなしでログインすることにより、各コンピューター上でビルド・エンジンをサイレント状態で開始できます。 パスワードを要求しないログインのセットアップ方法については、rsh コマンドまたは ssh コマンドの資料を参照してください。

  • ビルド・ホスト・ファイルに、各コンピューターへのビルドの分散方法が記述されている。

    通常、ビルド・ホスト・ファイルには、多くのコンピューターのホスト名または IP アドレスが記述されたいくつかの行が含まれています。 これらのコンピューターが、ビルドの分散先となるコンピューターです。 このファイルには、-idle num などの他のオプションを記述した行も含まれています。 このタイプの行では、その下にリストされたコンピューターでビルドをスケジュールに入れる際の基準となるアイドル率が指定されます。 明示されていない場合、アイドル率は 50 であると想定されます。 ビルド・ホスト・ファイルの例を以下に示します。


    ### 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

    この例では、host1、host2、host3、および 192.168.0.200 の 4 つのコンピューターにビルドが分散されます。 host1.mydomain.com コンピューターのアイドル率は明示されていないため、50 であると想定されます。 host2 コンピューターおよび 192.168.0.200 コンピューターのアイドル率は 25 に指定されています。 これは、これらのいずれかのコンピューターの負荷率またはビジー率が 75% より低くなった (つまり、少なくとも 25% のアイドル率になった) 場合に、そのコンピューターでビルドがスケジュールに入れられることを示します。 コンピューターのアイドル率が 25% 未満の場合、それらのコンピューターでビルドはスケジュールに入れられません。また、この例では host2 コンピューターが 2 回リストされています。 結果として、host2 コンピューターでは 2 つの並列ビルド・スレッドを開始できます。 コンピューターの構成に応じて、ビルドでのリソース使用が最適化されるようにビルド・ホスト・ファイルを調整することができます。

    ビルド・ホスト・ファイルを作成した後、以下のコマンド構文を使用することによって分散ビルドを開始できます。

    rafmake -J num -B build_hosts_file [ -f makefile ] 
            [ options ] ... [ targets ] ...

    -J オプションの num 値には、全コンピューターのビルド・スレッドの総数を指定します。

    -B オプションがない場合、rafmake コマンドは分散ビルドではなく並列ビルドを実行します。 -B オプションおよび有効なビルド・ホスト・ファイルを指定した場合、ビルド・エンジンは、ビルド・ホスト・ファイルに指定された各コンピューターで分散ビルドをスケジュールに入れます。


フィードバック