7

安全で無料の Linux 用の、言語にとらわれない優れた分散 make システムはありますか?

背景情報:

私は科学実験 (コンピューター サイエンスの実験) を実行します。この実験では、時には大きな依存関係ツリーがあり、時には数千または数万のツリー ノードが含まれることもあります。この依存関係ツリーは、データ ファイル、データ処理実行可能ファイル、および結果ファイルを対象としています。

私は何年にもわたって、次のようなさまざまな手法を試してきました。

  1. データベースを使用して独自の依存関係トラッカーを展開し、各ワーカー マシンでスクリプトを実行します。これは、特に非スクリプト言語で作業しようとすると、少し面倒になる可能性があります。
  2. すべての処理コマンドを単一の makefile に入れ、さまざまなワーカー マシンで手動で「構築」できる疑似ターゲットを使用します。これには特別なツールは必要ありませんが、手動で作業を均等なサイズの疑似ターゲット チャンクに分割し、各ワーカー ボックスで「make」を正しく呼び出すのは面倒です。
  3. distmake : 単一のメイクファイルからコマンドの実行を自動的に分散します...

私は基本的に distmake のようなものを探していますが、より安全です。私が知る限り、distmake は本質的に、各ワーカー ノードに大きく開いたバックドアを残します。

また、代替品が distmake よりも堅牢であるとよいでしょう。メインの distmake 呼び出しを中断すると、バックドア サーバーをシャットダウンできますが、ワーカー ノードで実行中のプロセスを適切に強制終了することはできません。


説明:

gccでコンパイルしてリンクするのではなく、メイクファイルでデータを処理しています。ドキュメントを読んだところによると、distcc は gcc を配布するための専用ツールです。ソースファイルの gcc ではなく、共有ファイルシステムでホストされている非常に大きなデータファイルで独自の実行可能ファイルを実行するので、distcc は役に立ちません。

ワーカー ノードは外部から見えるマシンなので、すべてのワーカー デーモンを少なくとも ssh と同じくらい安全にする必要があります。ソースを読まなくてもわかることですが、distmake ワーカー デーモンはポートを開き、それに接続するすべてのユーザーからのコマンドを受け入れます。デーモンを起動したユーザーとしてコマンドを実行します。

4

6 に答える 6

3

依存関係を管理するのは難しく、大量の作業を行わずに目的を達成できる完璧なシステムを私は知りません。

私が使用した最も近いものは、次のセットアップです: - クラスター内のマシンを管理するための Condor キュー - 相互に依存するジョブを送信するための Condor DAGMAN メタスケジューラ。DAGMAN は、有向非巡回グラフ MANager の頭字語であり、ジョブ間の依存関係を表すために有向非巡回グラフが使用されます。

私たちの研究室では、反復的な科学的プロトコルに対してこれを行い、非常にうまく機能しましたが、非常に才能のあるポスドクが最初の実装を実行するのは学習経験でした. 自明ではない Condor クラスターをセットアップして実行する必要がありますが、すべてのマシンを管理するために、Condor または同様のものを持っていると思います。Sun GridEngine には、私が知らない類似点があるのか​​もしれません。

于 2009-01-25T08:39:31.797 に答える
2

また、SSH 経由で動作できると主張するdistcc (ただし、distmake が非常に奇妙でない限り、localhost へのアクセスを制限し、SSH トンネルを構築してビルドを実行できるはずです) とicecreamもあります。

更新:目標は分散コンパイルではなく、たまたまブートストラップとして使用する分散計算であるため、 BOINCmakeのような分散計算用に設計されたツールを使用する方が理にかなっています。以下のコメントは、 condorが選択されたプラットフォームであることを示しています。

于 2008-12-30T03:25:13.130 に答える
1

「make」と透過的に統合するのはおそらく複雑ですが、GNU 並列はサーバー間でコマンドを分散するための便利なオプションを提供するようです。

于 2011-02-02T11:02:35.573 に答える
0

依存関係に熱心な場合 (つまり、make -jxx がローカルで正常に動作する場合)、おそらく distcc が必要です。非常に使いやすく、いくつかの一般的な CC キャッシュとうまく連携します。繰り返しになりますが、特にキャッシュを使用して再構築のプロセスを高速化する場合は、適切な依存関係が重要です。

GCC を使用して、makefile 自体のモジュール依存関係の範囲を超えた依存関係を生成する場合は、おそらく distcc を気に入るはずです。私は小さなビルドファームでそれを使用して大成功を収めました..しかし、私のセットアップ/ツリーは、あなたが説明したものほど精巧ではありません。

于 2008-12-30T03:33:37.573 に答える
0

これは、 AT&Tnmakecoshellとプログラムを組み合わせて行うことができます。セキュリティを評価する方法はわかりませんが、Glenn Fowler のグループには、多くの非常に優れた成果を上げた優れたエンジニアがたくさんいます。私のソース コードで彼らを信頼します :-) 彼らの最もよく知られているツールは、graphvizかもしれません。

于 2008-12-30T04:03:57.530 に答える
0

Makeflow も優れたソリューションのようです: http://www.cse.nd.edu/~ccl/software/makeflow/

于 2011-03-04T12:22:35.373 に答える