マニュアルページ dmake.1




名前

     dmake - 分散メーク(DistributedMake)


形式

     dmake [-c <実行時構成ファイル>]
     [-g <構築サーバーグループ>] [-j <最大ジョブ数>]
     [-m serial | parallel | distributed]
     [-o <ディレクトリ>]


機能説明

     注: このマニュアルページは、make ユーティリティのマニュア ル
     ページを補足するものです。

     分散メーク (dmake) は、メークファイルの構文を解析し、次の こ
     とを実行します。
     - 並行して構築できるターゲットを判定します。
     - このようなターゲットの構築処理を、ユーザーが設定したホスト
     上に分散します。

     標準の make ユーティリティを使用している場合、dmake へ移行す
     る 際に必要なメークファイルの変更は、(あったとしても) ほとん
     どありません。dmake は make ユーティリティのスーパーセットで
     す。 make を入れ子にするときは、一番上の makefile が make を
     呼び出す場合に $(MAKE) を使用しなければなりません。

     分散メークは、"dmake ホスト" で実行され、"ジョブ"を"構築サー
     バー"に分散します。ジョブは dmake ホストにも分散できます。こ
     の場合は、dmake ホストも構築サーバーになります。 dmake  は、
     ユーザーのメークファイルの内容を解析し、並行して構築できると
     判断したターゲットごとにジョブを分散させます。

     次の要件を満たしていれば、どのマシンも構築サーバーとして使用
     できます。

          - dmake ホスト (使用中のマシン) から、rsh を使用して 構
          築 サー バー 上でコマンドをリモートで実行できる。このと
          き、パスワードの入力を求めるプロンプトは表示されない こ
          と。例:

               demo% rsh <分散メークを行うマシン名>
               /opt/SUNWspro/bin/dmake
          rsh を実行した時に、不要な出力があってはいけません。

          - dmake ソフトウェアがインストールされている bin ディレ
          ク トリに、構築サーバーからアクセス可能でなければなりま
          せん。デフォルトで、dmake は、構築サーバー上の dmake 実
          行可能ファイルへの論理パスが dmake ホスト上と同じである
          と仮定します。この仮定を変更するには、実行時構成ファ イ
          ルのホストエントリの属性としてパス名を指定します。

     dmake ホストから、使用する構築サーバー、および、各構 築 サー
     バー に割り当てる dmake ジョブ数を指定することができます。特
     定の構築サーバー上で実行することができる dmake ジョブ数の 制
     限は、そのサーバーにも適用されます。


オプション

     -c <実行時構成ファイル>
          実行時構成ファイルを指定します。デフォルトの実行時構 成
          ファイルは ~/.dmakerc です。

     -g <構築サーバーグループ>
          ジョブの分散先にする構築サーバーグループの名前を指定 し
          ま す。サーバーグループは実行時構成ファイルに定義してく
          ださい。デフォルトのサーバーグループは、実行時構成 ファ
          イル中の最初のグループです。

     -j <分散する最大ジョブ数>
          実行時構成ファイル中の構築サーバーの指定グループに分 散
          さ れる最大ジョブ総数を指定します。デフォルトの最大ジョ
          ブ数は、構築サーバーグループに指定されるジョブの総数 で
          す。ジョブは、実行時構成ファイルの中で出現する順に 1 つ
          ずつホストから減算、またはホストに加算されます。たと え
          ば、実行時構成ファイルに指定されるジョブの総数が 8 で、

               host earth { jobs = 3 }
               host mars  { jobs = 5 }

          <分散する最大ジョブ数> を 11 と指定する場合、dmake は次
          の ようにして、現在の最大ジョブ総数 (8) にさらに 3 つの
          ジョブを加算します。

               host earth { jobs = 5 }
               host mars  { jobs = 6 }

          また、<分散する最大ジョブ数> を 4 と指定する場合、dmake
          は 次のようにして、元のジョブ数 8 から 4 つのジョブを減
          算します。

               host earth { jobs = 1 }
               host mars  { jobs = 3 }


     -m {serial | parallel | distributed}
          次のいずれかのキーワードを指定します。

          serial      dmake を標準の make と同じように逐次動作 さ
                      せます。

          parallel    ジョブを dmake ホストにだけ分散させます。こ
                      の 動 作 は、 Sun  WorkShop TeamWare 1.x の
                      ParallelMake プログラムと同じです。

          distributed dmake を完全な分散モードで動作させます。 こ
                      れは dmake のデフォルトです。

     -o dmake_odir
          dmake が一時出力ファイルを書き込みおよび読み取りでき る
          共 通物理ディレクトリを指定します。使用されるディレクト
          リは $(HOME)/.dmake です。このディレクトリと指 定 し た
          ディ レクトリは、すべての構築サーバーから見えなければな
          りません。このオプションは、ユーザーのローカルホスト 上
          の $(HOME) ディレクトリとユーザーのすべての遠隔ホスト上
          の $(HOME) ディレクトリが、異なる物理 $(HOME) ディレ ク
          ト リである場合にだけ使用してください。たとえば、このオ
          プションはスーパーユーザーが使用します。


     注:     これらのオプションと環境変数、およびこのマニュ ア ル
           ページで後述するメークファイルのマクロによって、同じ動
           作が変更されます。優先順位は次のとおりです。

           1. コマンド行オプション

           2. メークファイルのマクロ

           3. 環境変数

           4. dmake のデフォルト


使用

  特殊な目的のターゲット
     dmake を使うと、構築サーバー上でターゲットを並行して構築でき
     ます。並行して処理を行うと、大規模なシステムやプロジェクトを
     構築するのに要する時間を大幅に短縮できます。dmake は、並行処
     理 とタイミングを制御するために .PARALLEL 、 .NO_PARALLEL 、
     LOCAL 、 .WAIT という、特殊なメークファイルターゲットを使 用
     します。

     .NO_PARALLEL:    このターゲットは、逐次処理を行うターゲッ ト
                      を指定するために使用します。

     .PARALLEL:       このターゲットは、並行処理を行うターゲッ ト
                      を指定するために使用します。

     .LOCAL:          このターゲットは、ローカルホスト上で逐次 処
                      理 を行うターゲットを指定するために使用しま
                      す。

     .WAIT            依存関係リストにこのターゲットを指 定 す る
                      と、 dmake は、並行処理の場合でも、この前の
                      依存関係の処理が終了するまで待機してか ら、
                      次の依存関係を処理します。

     このようなターゲットを使って記述してあるメークファイ ル は、
     Solaris  1.x と Solaris 2.x で配布される標準 make でも互換性
     を保っています。標準の make はこれらのターゲットを許容し、エ
     ラーを出しません (処理も行いません) 。


  dmake ジョブの制御
     dmake ジョブの分散は、次の 2 つの方法で制御されます。

     1. dmake ホスト上の dmake ユーザーは、構築サーバーとして使用
       したいマシンと各構築サーバーに分散したいジョブ数を指定する
       ことができます。

     2. 構築サーバーの所有者(/etc/opt/SPROdmake/dmake.conf
       ファイルを変更できるユーザー)は、その構築サーバーに分散可
       能な dmake ジョブの最大総数を制御することができます。

  dmake ホスト
     dmake は、実行を開始すると、実行時構成ファイルを検索 し て、
     ジョブを分散する場所を調べます。一般に、このファイルは dmake
     ホスト上のユーザーのホームディレクトリに置いて、.dmakerc  と
     いう名前を付けます。dmake は、次の場所と順序で実行時構成ファ
     イルを検索します。

     1.  -c オプションを使ってコマンド行で指定されたパス名

     2.  DMAKE_RCFILE というメークファイルのマクロを使って指定 さ
         れたパス名

     3.  環境変数 DMAKE_RCFILE を使って指定されたパス名

     4.  ~/.dmakerc

     実行時構成ファイルが見つからない場合は、dmake は並行モードに
     切り替え、(デフォルトの) 2 つのジョブを dmake ホストに分散し
     ます。-j オプションまたは DMAKE_MAX_JOBS を使用してこの設 定
     を変更することもできます。

     実行時構成ファイルには、構築サーバーのリストと、各構 築 サー
     バーに分散したいジョブ数を含めることができます。次は、単純な
     実行時構成ファイルの例です。

          # 自分のマシン。このエントリにより dmake はこのマシンにジョブを分散します。
          falcon { jobs = 1 }
          hawk
          eagle { jobs = 3 }
          # マネージャーのマシン。マネージャーはいつも会議中です。
          heron { jobs = 4 }
          avocet

     falcon、hawk、eagle、heron、avocet の各エントリが 構 築 サー
     バーとして一覧表示されています。

     各構築サーバーに分散したいジョブ数を指定することができます。
     デフォルトのジョブ数は 2 です。

     "#" 文字で始まる行はコメントとして解釈されます。

     注:     この構築サーバーの一覧には、dmake ホスト で も あ る
           falcon  が含まれています。dmake ホストは構築サーバーと
           しても指定することができます。実行時構成 ファ イ ル に
           falcon  を含めない場合、falcon には dmake ジョブが分散
           されません。

     実行時構成ファイルには、構築サーバーのグループも構成すること
     ができます。こうすると、状況に応じて、構築サーバーのグループ
     を簡単に切り替えられるという柔軟性が得られます。たとえば、異
     なるオペレーティングシステムでの構築用に別々の構築サーバーの
     グループを定義したり、特殊なソフトウェアがインストールされて
     いる構築サーバーのグループを定義したりすることができます。た
     だし、構築サーバーは、すべて同じアーキテクチャで、同じ SunOS
     をインストールしている必要があります。

     次の実行時構成ファイルには、いくつかのグループが含まれていま
     す。

     earth                   { jobs = 2 }
     mars                    { jobs = 3 }

     group lab1 {
                    host falcon    { jobs = 3 }
                    host hawk
                    host eagle     { jobs = 3 }
     }

     group lab2 {
                    host heron
                    host avocet    { jobs = 3 }
                    host stilt     { jobs = 2 }


     group labs {
                    group lab1
                    group lab2
     }

     group sunos5.x {
                    group labs
                    host jupiter
                    host venus     { jobs = 2 }
                    host pluto     { jobs = 3 }
     }

     "group" 命令によって形式上のグループを指定します。グループの
     メンバーのリストは、中括弧 ({}) で括ります。

     グループのメンバーである構築サーバーは、省略可能な "host" 命
     令によって指定されます。
     あるグループが、他のグループのメンバーになっていてもかまいま
     せん。

     個々の構築サーバーを、構築サーバーのグループを含む実行時構成
     ファイルに指定することもできます。この場合、dmake はこれらの
     構築サーバーを名前の付いていないグループのメンバーとして処理
     します。

     dmake は、次に示すリストで指定される単一のホストのグ ルー プ
     に、1 〜 4 の優先順位でジョブを分散させます。

     1. -g オプションへの引数としてコマンド行に指定されたグループ

     2. DMAKE_GROUP というメークファイルのマクロによって指定さ れ
        たグループ

     3. 環境変数 DMAKE_GROUP によって指定されたグループ

     4. 実行時構成ファイルで 1 番目に列挙されている形式上のグルー
        プ

     実行時構成ファイルに指定するグループとホストの名前は、二重引
     用符で囲むことができます。これにより、グループとホストの名前
     をより柔軟な文字シーケンスで表現できます。たとえば、グループ
     の名前が数字で始まる場合、この名前は二重引用符で囲まなければ
     なりません。

     group "123_sparc"

     上記のとおり、dmake ソフトウェアがインストールされている bin
     ディレクトリは、構築サーバーからアクセス可能でなければなりま
     せん。デフォルトでは dmake は、構築サーバー上の dmake 実行可
     能 ファイルへの論理パスが dmake ホスト上と同じであると仮定し
     ます。この仮定を変更するには、実行時構成ファイルのホストエン
     トリの属性としてパス名を指定します。次に例を示します。

     group sparc-cluster {
        host wren   { jobs = 10 , path = "/export/SUNWspro/bin" }
        host stimpy { path = "/opt/SUNWspro/bin"                }
     }

  構築サーバー
     /etc/opt/SPROdmake/dmake.conf ファイルは、構築サーバーのファ
     イルシステム中に置かれています。このファイルは、次の内容を指
     定するために使用します。

     - 該当する構築サーバー上で並行処理できる、すべてのユーザー
       からの dmake ジョブの最大総数 (必須指定)。

     - すべての dmake ジョブに適用される、
       /usr/bin/nice で指定する優先順位 (必要に応じて)。

     次に dmake.conf ファイルの例を示します。

          max_jobs: 8
          nice_prio: 5

     このファイルは、すべての dmake ユーザーから構築サーバー上 で
     実行が許可される最大 dmake ジョブ数を 8 に設定します。ジョブ
     を実行する優先順位は、nice_prio コマンドで変更することができ
     ます。詳細は、nice(1) を参照してください。

     注:  /etc/opt/SPROdmake/dmake.conf ファイルが構築サーバー 上
     に ない場合には、そのサーバー上では dmake ジョブの実行は許可
     されません。


環境変数 / マクロ

     以下は、環境変数またはメークファイルのマクロとして定義するこ
     とができます。

     DMAKE_RCFILE             実行時構成ファイルを定義します。 デ
                              フォ ル ト の 実 行時構成ファイルは
                              ~/.dmakerc です。

     DMAKE_GROUP              ジョブの分散先にする構築サーバー グ
                              ルー プの名前を定義します。サーバー
                              グループは実行時構成ファイルに定 義
                              さ れ ま す。デフォルトのサーバーグ
                              ループは、実行時構成ファイルの 1 番
                              目のグループです。

     DMAKE_MAX_JOBS           実行時構成ファイルの中で指定され て
                              い る構築サーバーグループに分散され
                              る最大ジョブ数を定義します。デ フォ
                              ル トの最大ジョブ数は、構築サーバー
                              グループに指定されるジョブの総数 で
                              す。 ジョブは、実行時構成ファイルの
                              中で出現する順に 1 ずつホストから減
                              算、 またはホストに加算されます。例
                              については、このマニュアルページ の
                              -j オプションを参照してください。


     DMAKE_ADJUST_MAX_JOBS    次のいずれかのキーワードを含める こ
                              とができます。

                              YES         システムの現在の負荷 に
                                          応 じ て、 dmake が並列
                                          ジョブの制限を調整で き
                                          る ようにします。システ
                                          ムの負荷が過剰でない 場
                                          合、 dmake はユーザーが
                                          定義した制限を使用し ま
                                          す。 システムの負荷が過
                                          剰な場合、dmake は 「現
                                          在 の」制限を、ユーザー
                                          が定義した制限より下 に
                                          設定します。

                                          この変数が設定されな い
                                          場 合、dmake はシステム
                                          の現在の負荷に応じて 並
                                          列 ジョブの制限を調整し
                                          ます。これは dmake のデ
                                          フォルトになります。


                              NO          dmake の自動調整機構 を
                                          オフに切り替えます。



     DMAKE_MODE               次のいずれかのキーワードを含める こ
                              とができます。

                              serial      dmake を標準の make  と
                                          同 じように逐次動作させ
                                          ます。

                              parallel    dmake がジョブを  dmake
                                          ホ ストにだけ分散するよ
                                          うにします。こ の 動 作
                                          は、    Sun    WorkShop
                                          TeamWare 1.x の  Paral-
                                          lelMake  プログラムと同
                                          じです。

                              distributed dmake を完全な分散 モー
                                          ド で動作させます。これ
                                          は dmake のデフォルトで
                                          す。

     DMAKE_ODIR               dmake が一時出力ファイルを書き込 む
                              先、 もしくは一時出力ファイルを読み
                              取る元の共通の物理ディレクトリを 定
                              義 します。この環境変数やマクロは、
                              ローカルホスト上のホームディレク ト
                              リ とすべてのリモートホスト上のホー
                              ムディレクトリが同じ物理ホーム ディ
                              レ ク ト リでない場合にだけ使用しま
                              す。たとえば、スーパーユーザーが こ
                              のオプションを使用します。


ファイル

     $(HOME)/.dmakerc    デフォルトの実行時構成ファイル。構築サー
                         バーと構築サーバーグループの名前が含まれ
                         ます。

     /etc/opt/SPROdmake/dmake.conf
                         構築サーバー上にあるこのファイルは、すべ
                         て の dmake ユーザーによって構築サーバー
                         に分散することができる最大ジョブ総数を指
                         定するために使用されます。また、すべての
                         dmake ジョブに適用され る  /usr/bin/nice
                         で指定する優先順位を指定するためにも使用
                         されます。



関連項目

     HTML ブラウザで以下の URL を指定して、完全な Sun ONE  Studio
     8,  Compiler Collection マニュアルセットにアクセスできます。
     /opt/SUNWspro/docs/index.html
  コンパイラコレクションソフトウェアがデフォルトの /opt ディレ ク
  ト リにインストールされていない場合は、システム管理者に正しいパ
  スをお問い合わせください。

  更に詳しい情報は、以下のマニュアルページを参照してください。
  make(1),  rsh(1),  hosts(4),  hosts.equiv(4),   attributes(5),
  largefile(5),