2016-08-22 1 views
0

私は、ヒューリスティック検索処理の種類を実行するために大量のメモリを必要とJava projectを持っています。原則として、問題の任意の解を計算するには本質的に無制限のRAMが必要かもしれませんが、現実世界のインスタンスはテラバイト単位で(時には物理的に接続されたディスクにキャッシュされて)時々解決できることがわかります。プールJVMメモリ

は異なるマシン上で複数のJVMのランニング間RAMを仮想化するためのオープンやクローズドソースのプロジェクトが存在していますか?

現在、私は、複数のクライアント上で実行されているローカル検索をホストし、サーバーを介してそれらを調整することができます。しかし、これは私が達成したいことではありません。

私の問題が数学的に一貫した方法で解決されるためには、プライマリ関数は、すべてのクライアントマシンの合計にプールされた仮想メモリを使用してシングルスレッドのパラダイムで行われなければなりません。私はこのような仮想化レイヤーを自分で作成したいと思っていますが、誰かが既存のソリューション、オープンソースまたはクローズドソースを認識しているかどうかを見たいと思っています。彼らは〜1TBアクセス可能なメモリを制限し、また、私は余裕ができるよりも多くの費用がかかる傾向にあるよう

最も標準的なクラウドソリューションは、このタスクには不十分です。

+0

Amazon EC2 x1.32xlargeインスタンスを確認しましたか?それはあなたが言及したキャッシュが必要な場合に備えて、ほぼ2TBのDDR4 RAMと2x〜2TBのSSDローカルストレージを備えています。現時点では、「オンデマンド」の価格設定では13ドル/ hを少し上回っています。あなたのサーバーがいつでも終了するリスクを受け入れるなら、現在の「スポット」価格は約$ 1.50/hです。それは役に立ちますか? –

+0

それは単に不十分です。溶液は10〜20TBまたはそれ以上で見つけることができる。私はまた、私の友人と私の多数のデバイスがすべて無料で貢献できるように、分散型アプローチを探しています。 – EntangledLoops

+0

ああ、私は見る!私の想像以上の規模です。そのために残念。あなたはHazelcastをチェックしましたか?私は長年前にうまく使用しています...幸運! –

答えて

1

テラコッタには分散共有メモリプールがあり、詳細に応じて好みに近いものにすることができます。

あなたが探しているものに似た音メモリ仮想化製品も多数あります。 ScaleMP、Wombat Data Fabric、およびRNAネットワークの適合性を検討する必要があります。

正直なところ、Apache Sparkスタイルの処理を処理するアルゴリズムを修正することができれば、より良い結果が得られるはずですが、RAMを提供するマシンを多数必要とする場合は、これをHadoop/Sparkタイプの処理に移行します(Hadoopでは、RAMフラグメントは実際にはApache Sparkのディスク全体にわたるソリューションの断片ですが、それらは同じですが実際のRAMにインテリジェントにキャッシュされます)。

+0

ありがとう!私はそれらを見てみましょう。彼らが適切であれば、私はあなたの答えを受け入れるでしょう。 – EntangledLoops

+0

@EntangledLoopsありがとうございますが、 "すべてがラムに入っていなければなりません"というのは非常に難しい注文です。私がHalliburton(そして彼らのクライアント)のための地震の "分散アーキテクチャ"(実際に分散処理)をしたとき、私たちはこのような要求をいつも持っていました。より良い答えは、典型的には、「アルゴリズムを再構成する」ことであり、システムを再構成して1つの巨大なコンピュータをシミュレートすることではありませんでした。 –

+0

私が記事で述べたように、オフラインでディスクにキャッシュすることはできますが、不変量に違反する基本的な理由から数学モデルを配布することはできません。私もこれを試していますが、私は、より明白な分かりづらいバージョンの前に、「純粋な」アプローチを最大限に試してみました。 – EntangledLoops

2

Javaのメインメモリよりも大きな仮想メモリを利用するには、Chronicle Map、Queue、またはBytesを使用できます。 これらのソリューションはすべて、JVMの複数のメインメモリにマップされたデータをサポートしています。

これらはそれぞれ、ネイティブメモリアクセス速度と同じマシン上のJVM間で共有することができます。レイテンシは、メモリ内の小さなレコードの場合、通常、サブマイクロ秒です。ほとんどのデータグリッドソリューションは、読み取り/書き込みのためにサブミリ秒のアクセス権を持ちます。

クロニクルマップはキーバリューストアであり、クライアントが使用する最大のものは1台のマシンで10 TBです。

クロニクルキューは、順次読み書きに適したジャーナルであり、最大は100 TBです。

クロニクルバイトを使用して、ますます増大するメモリマップファイルを共有できます。あなたは100以上のTBの複数のファイルを持つことができます。

すべてはApache 2.0オープンソースです。

複数のマシン間でデータアクセスを共有するには、Chronicle Engineを分散アクセス用に使用できます。

免責事項:これらのモジュールの記述を支援しました。

+0

ねえ、それは素晴らしい情報です、ありがとう! – EntangledLoops

関連する問題