複数のLinuxシステムがあり、クラスタ化されたコンピュータネットワークを設定したいと思います。コントローラには1つのモニタがあります。コントローラはタスクを実行し、コンピュータに負荷を分散させるスクリプトを実行します。
コントローラに4台のコンピュータがすべて接続されているとします。 GCCを使ってプログラムをコンパイルしたいのですが、タスクを3つの方法に分割したいと思います。どうすればいいですか?
どんな助けでも大変感謝します。
ベストアンサー1
distcc
複数のコンピュータでコードをコンパイルするために使用できます。
Debiandistcc
パッケージ情報から:
パッケージ: distcc
Description-en: 単純な分散コンパイラのクライアントとサーバー
distcc
ネットワーク内の複数のコンピュータにC
コンパイルまたはコードを配布するプログラムです。常にネイティブコンパイルと同じ結果を生成する必要があり、インストールと使用が簡単で、通常はネイティブコンパイルよりはるかに高速です。すべてのシステムがファイルシステムを共有したり、クロックを同期したり、同じライブラリやヘッダファイルをインストールする必要はありません。C++
distcc
distcc
ホームページ:http://distcc.org/
他のタスクでは、「タスクを実行してコンピュータに負荷を分散」するスクリプトよりも複雑です。スケジューラを使用する必要があります(例:泥またはトルク- どちらもDebianと他のほとんどのディストリビューション用にパッケージされています。私の好みはslurm
)です。
つまり、Linuxシステムのコレクションをクラスタに切り替えます。特に難しいことではありませんが、それはかなり多くの作業であり、多くの読書と理解が必要です(読んだ内容の大部分は大学や研究室の大規模HPCクラスタに関連していますが、小規模ホームクラスタには該当しません)。
クラスタ内の複数のシステムにワークロードを同時に分散させるプログラムを実行するには、次の手順を実行する必要があります。
並列実行に適したジョブの実行
必要なリソース(ファイルを読み書きするためのNFSサーバー)への共有アクセス権を持っています。
そして:
または
- 通信と制御のための主な制御プロセスがあります。それがまさにその役割
distcc
です。