安全で無料の Linux 用の、言語にとらわれない優れた分散 make システムはありますか?
背景情報:
私は科学実験 (コンピューター サイエンスの実験) を実行します。この実験では、時には大きな依存関係ツリーがあり、時には数千または数万のツリー ノードが含まれることもあります。この依存関係ツリーは、データ ファイル、データ処理実行可能ファイル、および結果ファイルを対象としています。
私は何年にもわたって、次のようなさまざまな手法を試してきました。
- データベースを使用して独自の依存関係トラッカーを展開し、各ワーカー マシンでスクリプトを実行します。これは、特に非スクリプト言語で作業しようとすると、少し面倒になる可能性があります。
- すべての処理コマンドを単一の makefile に入れ、さまざまなワーカー マシンで手動で「構築」できる疑似ターゲットを使用します。これには特別なツールは必要ありませんが、手動で作業を均等なサイズの疑似ターゲット チャンクに分割し、各ワーカー ボックスで「make」を正しく呼び出すのは面倒です。
- distmake : 単一のメイクファイルからコマンドの実行を自動的に分散します...
私は基本的に distmake のようなものを探していますが、より安全です。私が知る限り、distmake は本質的に、各ワーカー ノードに大きく開いたバックドアを残します。
また、代替品が distmake よりも堅牢であるとよいでしょう。メインの distmake 呼び出しを中断すると、バックドア サーバーをシャットダウンできますが、ワーカー ノードで実行中のプロセスを適切に強制終了することはできません。
説明:
gccでコンパイルしてリンクするのではなく、メイクファイルでデータを処理しています。ドキュメントを読んだところによると、distcc は gcc を配布するための専用ツールです。ソースファイルの gcc ではなく、共有ファイルシステムでホストされている非常に大きなデータファイルで独自の実行可能ファイルを実行するので、distcc は役に立ちません。
ワーカー ノードは外部から見えるマシンなので、すべてのワーカー デーモンを少なくとも ssh と同じくらい安全にする必要があります。ソースを読まなくてもわかることですが、distmake ワーカー デーモンはポートを開き、それに接続するすべてのユーザーからのコマンドを受け入れます。デーモンを起動したユーザーとしてコマンドを実行します。