最初に頭に浮かんだのが、トレントプロトコルを介してコンテンツを表示できる人気のあるアプリケーションだった場合、私はあなたにノーと言うことを恐れています、それはそうではありません、私たちが話しているのは バージニア工科大学の開発者 最近誰が Linuxカーネル開発者との話し合いの提案 パッチのセットで ポップコーンシステムの実装 (分散スレッド実行)スレッドを分散します。
この制度 配布と移行を使用して、複数のコンピューターでアプリケーションの実行を整理できます ホスト間の透過的なフロー。 Popcornを使用すると、アプリケーションをXNUMXつのホストで開始し、その後、中断することなく別のホストに転送できます。 マルチスレッドプログラムでは、他のシングルスレッドホストへの移行が許可されます。
ポップコーンについて
プロセス状態を保存して別のシステムで実行を再開できるCRIUプロジェクトとは異なり、 Popcornは、透過的で動的な移行を提供します アプリケーション実行中のホスト間、 ユーザーの操作を必要とせず、仮想メモリの一貫性を確保します スレッドが同時に実行されるすべてのホスト。
ポップコーン Linuxカーネルにパッチスタックを提供します 移行フローからのPopcornシステム呼び出しを分散実行可能アプリケーションでどのように使用できるかを示すテストを備えたライブラリ。
カーネルレベルでは、仮想メモリサブシステムの拡張が提案されます 分散共有メモリの実装で、 異なるホスト上のプロセスが、共通の一貫した仮想アドレス空間にアクセスできるようにします。 仮想メモリページの一貫性は、読み取りのためにアクセスされたときにメモリページをホストに複製し、書き込み時にメモリページを無効にするプロトコルによって保証されます。
ホスト間の相互作用は、TCPソケットを介して送信されるカーネルレベルのメッセージハンドラーを使用して実行されます。 TCP / IPは、開発中のデバッグとテストを簡素化するために使用されていることが確認されています。 開発者は、セキュリティとパフォーマンスの観点から、TCP / IPがカーネル構造とメモリページのコンテンツをホスト間で転送するための最良の方法ではないことを理解しています。 分散アプリケーションを実行するすべてのホストは、同じレベルの信頼を持っている必要があります。 基本的なアルゴリズムが安定した後、より効率的なトランスポートモードが適用されます。
2014年以来、ポップコーンは研究プロジェクトとして開発されてきました さまざまなコマンドセットアーキテクチャ(Xeon / Xeon-Phi、ARM / x86、)に基づいてコアを組み合わせることができる、異種コンピュータシステムのさまざまなノードでスレッドを実行できる分散アプリケーションを作成する可能性を研究する。 CPU / GPU / FPGA)。
Linuxカーネル開発者に提案されたパッチセットは、x86CPUを搭載したホストでの実行のみをサポートします、しかし、また、 PopcornLinuxのより機能的なバージョンがあります これにより、アプリケーションをホスト上で実行できます 異なるCPUアーキテクチャ(x86およびARM).
異種環境でPopcornを使用するには、特別なLLVMベースのコンパイラを使用する必要があります。 同じアーキテクチャのホストでの分散実行では、別のコンパイラによる再構築は必要ありません。
また、Teleforkプロジェクトに似たものの発表に気付くことができます 最初のプロトタイプAPI実装で クラスター内の他のコンピューターで子プロセスを開始する (フォーク()と同様ですが、分岐プロセスを別のコンピューターに転送します)。
コードはRustで記述されており、これまでのところ、ファイルなどのシステムリソースを使用しない最も単純なプロセスのみをクローン化できます。 テレフォーク呼び出しを行うと、プロセスに関連するメモリと構造が、サーバーコントローラー(テレパッド)を実行している別のホストに複製されます。
ptraceを使用して、プロセスメモリミラーがシリアル化され、プロセス状態とログとともに、別のホストに転送されます。 APIを使用すると、プロセスの状態をファイルに保存し、それを介して復元することもできます。