JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: 分散メイク (dmake)     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

分散メイク (dmake)

形式

機能説明

オプション

-c dmake_rcfile

-g dmake_group

-j dmake_max_jobs

-m {serial | parallel | distributed | grid}

-o dmake_odir

使用法

特殊な目的のターゲット

dmake ジョブの制御

dmake ホスト

ユーザーコマンド

構築サーバー

使用するリモートシェルを指定する

環境/マクロ

DMAKE_RCFILE

DMAKE_GROUP

DMAKE_MAX_JOBS

DMAKE_ADJUST_MAX_JOBS

DMAKE_MODE

DMAKE_ODIR

DMAKE_OUTPUT_MODE

ファイル

関連項目

使用法

特殊な目的のターゲット

dmake によって、いくつかの構築サーバー上にターゲットを同時に構築できます。並行処理によって、大規模なシステムまたはプロジェクトを構築するのに必要な時間が大幅に削減されます。dmake は、並行性とタイミングを制御するために次の特殊なメイクファイルターゲットを提供します。

これらのターゲットを使用して記述したメイクファイルは、Oracle Solaris とともに配布される 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. $(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

エントリ falconhawkeagleheron、および 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 の優先順位でジョブを分散させます。

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

  2. DMAKE_GROUP メイクファイルマクロで指定されたグループ。

  3. DMAKE_GROUP 環境変数で指定されたグループ。

  4. 実行時構成ファイルにリストされている先頭の形式上のグループ。

実行時構成ファイル内で指定されるグループおよびホストの名前は、二重引用符で囲むことができます。これにより、グループおよびホストの名前の一部として表示される文字シーケンスに関して、高い柔軟性を得ることができます。たとえば、グループの名前が数字で始まる場合、次のように二重引用符で囲むようにしてください。

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.conf ファイルのサンプルです。

max_jobs: 8
nice_prio: 5

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


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