Popcorn は、Linux カーネル用の分散スレッド実行システムを開発しています。

バージニア工科大学 предложил Linux カーネル開発者によるディスカッション用に、分散スレッド実行システムを実装したパッチのセット ポップコーン (分散スレッド実行)。ホスト間でスレッドを分散および透過的に移行することで、複数のコンピューター上でのアプリケーションの実行を組織化できます。 Popcorn を使用すると、アプリケーションを XNUMX つのホストで起動し、中断することなく別のホストに移動できます。 マルチスレッド プログラムでは、個々のスレッドを他のホストに移行することができます。

プロジェクトとは異なります クリウPopcorn は、プロセスの状態を保存し、別のシステムで実行を再開できるようにすることで、アプリケーションの実行中にホスト間のシームレスで動的な移行を実現し、ユーザーの操作を必要とせず、同時スレッドを実行しているすべてのホスト間で仮想メモリの一貫性を確保します。

ポップコーン ソフトウェア スタック フォーム パッチ Linux カーネルと библиотека Popcorn システム コールを使用して分散アプリケーションのスレッドを移行する方法を実証するテストを行います。 カーネル レベルでは、分散共有メモリの実装による仮想メモリ サブシステムの拡張が提案されており、これにより、異なるホスト上のプロセスが共通の一貫した仮想アドレス空間にアクセスできるようになります。 仮想メモリ ページの一貫性は、メモリ ページの読み取り時にホストに複製し、書き込み時にメモリ ページを無効にするプロトコルによって保証されます。

ホスト間の対話は、TCP ソケット経由で送信されるメッセージのカーネル レベルのハンドラーを使用して実行されます。 TCP/IP は、開発プロセス中のデバッグとテストを簡素化するために使用されることに注意してください。 開発者は、セキュリティとパフォーマンスの観点から、TCP/IP がカーネル構造とメモリ ページの内容をホスト間で転送する最適な方法ではないことを理解しています。 分散アプリケーションを実行するすべてのホストは、同じレベルの信頼を持っている必要があります。 主要なアルゴリズムが安定した後、より効率的な転送モードが使用されます。

Popcorn は、スレッドを異なるノードで実行できる分散アプリケーションの作成の可能性を研究する研究プロジェクトとして 2014 年から開発されています。 異質な 異なる命令セット アーキテクチャ (Xeon/Xeon-Phi、ARM/x86、CPU/GPU/FPGA) に基づいたコアを組み合わせることができるコンピューティング システム。 Linux カーネル開発者に提案されている一連のパッチは、x86 CPU を搭載したホストでの実行のみをサポートしていますが、より高機能なバージョンの Popcorn Linux もあり、これにより、異なる CPU アーキテクチャ (x86 および ARM) のホストでアプリケーションを実行できるようになります。 異種環境で Popcorn を使用するには、特別なツールを使用する必要があります。 コンパイラ LLVMに基づいています。 同じアーキテクチャのホスト上で分散して実行する場合、別のコンパイラで再構築する必要はありません。

Popcorn は、Linux カーネル用の分散スレッド実行システムを開発しています。

さらに、注目できるのは、 発表 ある程度似たようなプロジェクト テレフォーク クラスター内の他のコンピューターで子プロセスを起動するための初期プロトタイプ API の実装 (fork() と同様ですが、フォークされたプロセスを別のコンピューターに転送します)。
コードは Rust で書かれており、これまでのところ、ファイルなどのシステム リソースを使用しない非常に単純なプロセスの複製のみが可能です。 テレフォーク呼び出しが行われると、メモリおよびプロセス関連の構造が、サーバー ハンドラー (テレパッド) を実行している別のホストに複製されます。 ptrace を使用すると、プロセスのメモリ リフレクションがシリアル化され、プロセスとレジスタの状態とともに別のホストに転送されます。 API を使用すると、プロセス状態をファイルに保存し、それを介して復元することもできます。

出所: オープンネット.ru

コメントを追加します