マニュアルページ 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),