私はsaidimuに同意します.Single System Imageのコンセプトについて話している. OpenMosix プロジェクトに加えて、同じアイデアの商用実装がいくつかあります (最新の例の 1 つは ScaleMP です)。それは新しい考えではありません。
ここでは、SSI の技術的なポイントについて詳しく説明したいと思います。
基本的に、それが行われていない理由は、パフォーマンスが一般的に絶対に予測できないかひどいものだからです。[NUMA][3] として知られるコンピュータ システムの概念があります。これは基本的に、メモリのさまざまな部分にアクセスするコストが均一ではないことを意味します。これは、CPU がいくつかのメモリ アクセスを別のチップにルーティングする可能性がある巨大なシステム、またはメモリがネットワーク経由でリモート アクセスされる場合 (SSI など) に適用できます。通常、オペレーティング システムは、プログラムができるだけ速く実行できるようにプログラムとデータをメモリに配置することで、これを補おうとします。つまり、コードとデータはすべて同じ NUMA「リージョン」に配置され、可能な限り最も近い CPU でスケジュールされます。
ただし、大規模なアプリケーションを実行している ( SSI 内のすべてのメモリを使用しようとしている) 場合、リモート メモリ フェッチの影響を軽減するためにオペレーティング システムができることはほとんどありません。MySQL は、ページ 0x1f3c にアクセスすると 8 ナノ秒かかることを認識していませんが、ページ 0x7f46 にアクセスすると、ネットワーク経由でメモリがフェッチされる間、数百マイクロ秒、場合によってはミリ秒の間停止します。これは、この種の環境では、NUMA に対応していないアプリケーションががらくた (真剣に、非常に悪い) のように動作することを意味します。私の知る限り、ほとんどの最新の SSI 製品は、マシン間の最速の相互接続 (Infiniband など) に依存して、まずまずのパフォーマンスを達成しています。
これは、データにアクセスする真のコストをプログラマーに公開するフレームワーク (MPI: メッセージ パッシング インターフェイスなど) が、SSI や DSM (分散共有メモリ) アプローチよりも多くの牽引力を達成した理由でもあります。実際、プログラマーがアプリケーションを SSI 環境で実行するように最適化する方法は基本的にありません。