ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: 分散メイク (dmake) Oracle Solaris Studio 12.3 Information Library (日本語) |
dmake によって、いくつかの構築サーバー上にターゲットを同時に構築できます。並行処理によって、大規模なシステムまたはプロジェクトを構築するのに必要な時間が大幅に削減されます。dmake は、並行性とタイミングを制御するために次の特殊なメイクファイルターゲットを提供します。
.NO_PARALLEL
逐次に処理するターゲットを示すには、このターゲットを使用します。
.PARALLEL
並列で処理するターゲットを示すには、このターゲットを使用します。
.LOCAL
ローカルホスト上で逐次に処理するターゲットを示すには、このターゲットを使用します。
.WAIT
依存関係リストにこのターゲットを指定すると、処理が並列の場合であっても、dmake はターゲットより優先される依存関係が完了するまで待機したあと、後続のターゲットを処理します。
これらのターゲットを使用して記述したメイクファイルは、Oracle Solaris とともに配布される make の標準バージョンと互換性を保ちます。標準の make は、エラーを出さずに (かつ処理を行わずに) これらのターゲットを受け入れます。
dmake ジョブの分散は、次の 2 つの方法で制御されます。
dmake ホスト上の dmake ユーザーは、構築サーバーとして使用するマシンと、各構築サーバーに分散するジョブの数を指定できます。
構築サーバーの所有者 (/etc/opt/SPROdmake/dmake.conf ファイルを変更できるユーザー) は、その構築サーバーに分散できる dmake ジョブの最大の総数を制御できます。
dmake は実行を開始すると、ジョブの分散先を知るために、実行時構成ファイルを検索します。
このファイルは通常、dmake ホストのホームディレクトリにあり、.dmakerc という名前が付いています。
dmake は次の場所の実行時構成ファイルを次の順序で検索します。
コマンド行で -c オプションを使用して指定したパス名
DMAKE_RCFILE メイクファイルマクロを使用して指定したパス名
DMAKE_RCFILE 環境変数を使用して指定したパス名
$(HOME)/.dmakerc 内
実行時構成ファイルが見つからない場合、dmake は並列モードに切り替わり、dmake ホストに 2 つのジョブ (デフォルト) を分散します。これは、-j オプションか、DMAKE_MAX_JOBS を使用して変更できます。
実行時構成ファイルには、構築サーバーのリストと、各構築サーバーに分散するジョブの数を含めることができます。
次は、単純な実行時構成ファイルのサンプルです。
# My machine. This entry causes dmake to distribute to it falcon { jobs = 1 } hawk eagle { jobs = 3 } # Manager’s machine. She’s usually at meetings heron { jobs = 4 } avocet
エントリ falcon、hawk、eagle、heron、および avocet は、構築サーバーとしてリストされています。
各構築サーバーに分散するジョブの数を指定できます。ジョブのデフォルト数は 2 です。
"#" 文字で始まる任意の行は、コメントとして解釈されます。
注 - この構築サーバーの一覧には、dmake ホストでもある falcon が含まれています。dmake ホストは構築サーバーとして指定することもできます。これを実行時構成ファイルに含めない場合、dmake ジョブはこれに対して分散されません。
また、実行時構成ファイル内に構築サーバーのグループを構築することもできます。これは、状況に応じて、構築サーバーの異なるグループを容易に切り替える柔軟性を提供します。たとえば、異なるオペレーティングシステムのビルド用に異なる構築サーバーのグループを定義したり、特殊なソフトウェアがインストールされている構築サーバーのグループを定義したりすることができます。構築サーバーはすべて同じアーキテクチャーで、同じ OS がインストールされている必要があります。
次の実行時構成ファイルにはグループが含まれています。
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 の優先順位でジョブを分散させます。
コマンド行で -g オプションの引数として指定されたグループ。
DMAKE_GROUP メイクファイルマクロで指定されたグループ。
DMAKE_GROUP 環境変数で指定されたグループ。
実行時構成ファイルにリストされている先頭の形式上のグループ。
実行時構成ファイル内で指定されるグループおよびホストの名前は、二重引用符で囲むことができます。これにより、グループおよびホストの名前の一部として表示される文字シーケンスに関して、高い柔軟性を得ることができます。たとえば、グループの名前が数字で始まる場合、次のように二重引用符で囲むようにしてください。
group "123_sparc"
上記のとおり、dmake ソフトウェアがインストールされている bin ディレクトリに構築サーバーからアクセスできる必要があります。デフォルトでは、dmake は構築サーバー上の dmake 実行可能ファイルへの論理パスが dmake ホストと同じであると仮定します。この仮定は、実行時構成ファイルのホストエントリの属性としてパス名を指定することによって無効にできます。例:
group sparc-cluster { host wren { jobs = 10 , path = "/export/solstudio/bin" } host stimpy { path = "/bin" } }
/etc/opt/SPROdmake/dmake.conf ファイルは構築サーバーのファイルシステムにあります。
このファイルを使用して次を指定します。
必須: その構築サーバー上で同時に実行できる (すべてのユーザーからの) dmake ジョブの最大の総数。
省略可能: すべての dmake ジョブが実行される優先順位。
次は、dmake.conf ファイルのサンプルです。
max_jobs: 8 nice_prio: 5
このファイルは、構築サーバー上で実行が許可される (すべての dmake ユーザーからの) dmake ジョブの最大数を 8 に設定します。実行されるジョブの優先順位は、nice_prio コマンドを使用して変更できます。nice(1) を参照してください。
注 - 構築サーバー上に /etc/opt/SPROdmake/dmake.conf ファイルが存在しない場合、そのサーバー上で dmake ジョブは実行を許可されません。