コンピュータクラスタを使用したランダムバイナリの実行

コンピュータクラスタを使用したランダムバイナリの実行

VPSが3つあります。マスター、スレーブ1、スレーブ2を想定します。

彼らの仕様は同じです。

  • プロセッサー: 1CPU
  • メモリ:1GB
  • ディスク:10GB
  • ネットワーク:LAN内で互いに実行

メインVPSで実行されている任意のバイナリ(プロセス)をVPSと見なしたいと思います。これは、マスターVPSのワークロードがネットワークを介してスレーブVPSと共有されることを意味します。

したがって、プログラムは次の仕様のコンピュータで実行されていることがわかります。

  • プロセッサー: 3CPU
  • メモリ:3GB
  • ディスク:30GB

問題は、このようにコンピューティングパワーを組み合わせることができるプロトコルやサービスがあるかということだ。

結合されたメモリ(RAM)またはストレージ(SSD)。各スレーブのマウントポイントにramfをマウントしようとしています。次に、各スレーブに対してNFSサーバーを使用し、マスターのNFSクライアントがそれをローカルにマウントできるようにします。マスターのマウントポイントを単一のマウントポイント/mnt/shm_from_slave1/mnt/shm_from_slave2単一のマウントポイントに結合します/mnt/shm_combined。次に、マスターの結合共有メモリにスワップファイルを作成します/mnt/shm_combined/swapfile。次に、スワップファイルが頻繁に使用されるようにデフォルトのオペレーティングシステムを設定します。これがメモリのマージに関する私の計画です。プロセッサのパフォーマンスを組み合わせるにはわかりません。

答え1

複数のLinuxインスタンスにわたってシステムリソースを統合したいようです。特にRAMとCPUでは、これは完全に可能ではありません。ディスク容量の場合は、NFSやその他のネットワーク共有が役に立つ場合があります。

他のLinuxシステムでプロセスを作成して他のシステムのリソースを消費し、パイプなどの他の項目をネットワーク経由でシミュレートできるとします。ただし、共有メモリが原因でモデルがクラッシュします。 Linuxでは、共有メモリは、他のプロセスにもマップされた物理RAMページに直接アクセスするプロセスによって実装されます。このような状況をシミュレートするには、ある種のロック機構が必要であり、これにより、重大な性能低下が発生し、解決策を実行不可能にする可能性が高い。

より一般的に、あなたが尋ねる質問は、非常に多様な能力と能力で表現されることができるスーパーコンピュータの観点から議論されます。

「容量」は、システム全体で達成できる総スループットを測定したものです。これは、システムがそれぞれ単一のノードに渡される可能性がある非常に多くの同様のタスクを処理するために使用される場合に便利な指標です。システム容量の拡張は、単により多くのノードを追加することによって行うことができ、システムは同じ時間により多くのタスクを処理できます。 VPSサービスの大容量システムでは、Kubernetesなどのツールを使用して、複数のノードで複数のタスクとサービスを調整することがよくあります。

「容量」は、システムが完了できる単一ジョブのサイズを測定したものです。これは、単に新しいノードを追加するだけでは拡張できません。同じタスクを処理するために新しいノードを追加すると、ネットワーク通信のオーバーヘッドも増加するため、タスクをより多くのノードに分散しようとすると、実際に処理速度が速くなるよりも遅くなる可能性があります。

したがって、単一ノードの機能限界に達したときにできる唯一のことは、タスクがより小さな部分に分割されるようにソフトウェアを変更することです。これをより小さな部分に分割して、その部分を複数のノードに分散して、容量の問題を容量の問題に切り替えることができます。

簡単に説明するとこんな感じです。夕暮れPythonプログラミング言語の場合。データセットに対してコマンドを実行し、自動的にデータセットとコマンドを分割して複数のノードに分割できるようにする必要があります。

ただし、必要に応じて一部の計算問題をこの方法で分割することはできません。分割は、ソフトウェアを直接作成する場合にのみ可能です。

関連情報