マニュアルページ dmake.1




名前

     dmake - 分散メーク(DistributedMake)


形式

     dmake [-c dmake-rcfile] [-g dmake-group] [-j dmake-max-jobs]
     [-m {serial | parallel  | grid}] [-o dmake-odir]


機能説明

     注: このマニュアルページは、Solaris の make ユーティリティの
     マニュアルページを補完するものです。 dmake ユーティリティは
     Linux オペレーティングシステムでも動作しますが、 dmake のオ
     プションは他の make ユーティリティと比べて独自のものです。

     分散メーク (dmake) はメークファイルを解析して、並行して構築
     可能なターゲットを特定し、設定された多数のホストにの構築作業
     を分散します。

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

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

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

     - dmake ホスト (使用中のマシン) から、rsh を使用して構築サー
       バー上でコマンドをリモートで実行できる。このとき、パスワー
       ドの入力を求めるプロンプトは表示されないこと。次の例は、
       Solaris オペレーティングシステムを実行しているマシンの場合
       の dmake に対する which コマンドの使用結果を示しています。

            demo% rsh <分散メークを行うマシン名> which dmake
            /opt/SUNWspro/bin/dmake

       rsh を実行した時に、不要な出力があってはいけません。

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

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


オプション

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

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

     -j dmake-max-jobs
          実行時構成ファイル中の構築サーバーの指定グループに分散
          される最大ジョブ総数を指定します。デフォルトの最大ジョ
          ブ数は、構築サーバーグループに指定されるジョブの総数で
          す。ジョブは、実行時構成ファイルの中で出現する順に 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 | grid}
          次のいずれかのキーワードを指定します。

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

          parallel    ジョブを dmake ホストにだけ分散させます。

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

          grid        構築ジョブの分散に SGE (Sun Grid Engine) を
                      使います。

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

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

           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 は、次の場所と順序で実行時構成ファ
     イルを検索します。lp1.  -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 ファイルは、構築サーバーのファ
     イルシステム中に置かれています。このファイルは、次の内容を指
     定するために使用します。

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

     Optional  すべての 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 の ParallelMake プログラムと同
                      じです。

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

          grid        構築ジョブの分散に SGE (Sun Grid Engine) を
                      使います。

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

     DMAKE_OUTPUT_MODE
          ログファイルの形式を定義します。次のキーワードのどれか
          1 つを含むことができます。

          TEXT1   構築ジョブを開始するたびに、dmake はシステム名
                  とコマンド名をログファイルに出力します。また、
                  コマンドそのものに出力がある場合は、ジョブが終
                  了するときに、そのコマンド出力とともに、再びシ
                  ステム名とコマンド名をログファイルに出力しま
                  す。

                  例:
                       host1 --> 1 個のジョブ
                       echo "Done host1"
                       host2 --> 1 個のジョブ
                       echo "Done host2"
                       host1 --> ジョブ出力
                       echo "Done host1"
                       Done host1
                       host2 --> ジョブ出力
                       echo "Done host2"
                       Done host2

                  dmake のデフォルトはこの設定です。

          TEXT2   並列ジョブの出力を直列化します。ログファイルが
                  見やすくなります。このモードでは、dmake は、1
                  つのジョブが終了すると、一度だけコマンドを出力
                  し、その直後に、コマンド出力を続けます。

                  例:
                       echo "Done host1"
                       Done host1
                       echo "Done host2"
                       Done host2



ファイル

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

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


関連項目

     HTML ブラウザで以下の URL を指定して、完全な Sun Studio マ
     ニュアルセットにアクセスできます。

        /opt/SUNWspro/docs/ja/index.html (Solaris の場合)
        /opt/sun/sunstudio11/docs/ja/index.html (Linux の場合)

     デフォルトの /opt 以外のディレクトリにコンパイラがインストー
     ルされている場合は、実際のパスをシステム管理者にお尋ねくださ
     い。

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