web-dev-qa-db-ja.com

2台以上のコンピューター間でのリソースの共有RAM

以前に似たような質問があったことは知っています: CPUまたはRAMを共有する方法は?

しかし、もう少し指定させてください...

MicrosoftWindowsが利用可能な容量よりも多くのRAM容量を必要とする場合、スワップファイルを使用してデータを一時的に保存します。これは実際にはハードドライブベースのRAMのようなものです。このテクノロジは多くの場合に使用されます。年。

理論的には、一時的なデータストレージにネットワーク内のさまざまなコンピューターのRAM)を使用する同様のテクノロジーを実装するのはそれほど難しいことではありません。これには、コンピューター上で実行されるソフトウェアが必要です。メインコンピュータとの間でデータを送受信し、そのデータをRAMに保持するネットワーク内。さらに、メインコンピュータの運用システムは、代わりにネットワーク内のコンピュータを使用できる必要がありますスワップファイルの(またはそれに加えて)

このアイデアの実装はありますか?これにより、ユーザーは自宅またはオフィスのすべてのコンピューターを使用してRAMクラスターを構築でき、一部の開発/ゲーム/ビデオタスクなどで1台のコンピューターのパフォーマンスが向上します。

4
davee44

実際には、それが可能であったとしても、それはごくわずかな場合にのみ機能します(確かにゲームではありません!)。

Windowsはスワッピング操作を高速化するために直接アクセスを採用しているため、最初のステップはrawデバイスプロトコルをエクスポートすることです。現在、Windows用のrawデバイスプロトコルがないため、これを行うことはできません(Linuxと一部のUnicesにあり、おそらくiSCSIで実行できます)。

次に、デバイスをクライアントマシンに物理デバイスとしてインポートする必要があります。これも実行できますが、安全上の理由から、ほとんどの実装ではネットワークデバイスを取り外し可能なデバイスとして扱います。ただし、ReadyBoostテクノロジーを調整することでこれを実行できる可能性があります。

しかし、現在の問題は、ネットワークデバイスが物理ディスクデバイスよりも桁違いに遅い(メモリよりも桁違いに遅い)ため、システムが停止するまでスワップしすぎることはできないということです。 。

これは、高速のRAM要件が低く、大容量記憶装置の要件が非常に大きく、非常に遅い速度に耐えられる場合にのみ使用できます。また、複数のコンピューターでこれを使用した場合にのみ価値があります。これは、コンピューティングクラスターを構築したことを意味します...これは、分散コンピューティング(独自のツールセットがあり、通常、プロセス全体をすべてのメモリでオフロードすることで解決する)の問題があることを意味します他のノードへ)。

通常の使用法では、より大きなdiskスワップファイルが遅すぎて、スラッシングによってパフォーマンスが低下するために役に立たない場合、さらに遅くなるネットワークドライブは何かを解決しますか?

シナリオ

これにより、ユーザーは自宅またはオフィスのすべてのコンピューターを使用してRAMクラスターを構築でき、一部の開発/ゲーム/ビデオタスクなどで1台のコンピューターのパフォーマンスが向上します。

ビデオ処理の場合、クライアントコンピューターと並行してタスクをオフロードする可能性があり、各タスクはビデオフレームのブロックまたは異なるチャネルで動作します。 アクティブリサーチ があります。秘訣は、すべてのクライアントが大容量記憶装置に高速にアクセスできることです(分散することもできます。ファイルが複数の物理サーバーに存在するネットワーク分散ファイルシステムもあります)。それぞれがCPUバウンドタスクを実行します。

developmentの場合、プロジェクトビルド(および静的分析、テスト、ドキュメント)のパーティション分割を可能にする dmake などのツールがあります。 ..)別のホストに。これは、継続的なmakeシステムと 自動ビルド を使用して自動的に実行することもでき、単一のコマンドホストからオンデマンドですべてを実行するよりもはるかに優れた結果が得られる可能性があります。

5
LSerni

これらのテクノロジー 存在しますが、非常に複雑で高価であるため、強力なマシンを1台購入する方が簡単で安価なため、通常、開発、ビデオゲーム、ビデオ編集には使用しません。また、 InfiniBand のような特殊な高スループットの低遅延ネットワークでも、メモリアクセスの遅延が少なくとも1桁増加します。

一方、分散共有メモリシステムはスーパーコンピューティングでは非常に一般的です。これらには通常、リモートメモリ領域に頻繁にアクセスしないように、メモリの一部を一貫性のあるローカルに保とうとするメモリマネージャとプログラムが付属しています。

2
David Foerster