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