私はJavaアプリケーションで、スケーラビリティが主にRAMによって制限されているため、データセンター内の1つ以上のサーバーで実行したいと考えています。100GBに対応できるサーバーハードウェアをどこで探したらよいですか。 512GB以上のRAM?私はそのような問題の専門家ではないので、どこから始めればいいのか本当にわかりません。
これはスーパーコンピュータの領域(6桁以上)に入るのですか、それとも5桁の低価格でそのようなサーバーを入手できますか?
以下のいくつかの質問に基づくいくつかのメモ:
異常な要件は、通常とは異なるソリューションの恩恵を受けることがあります。確かに、Sun、Dell、またはHPに6桁の数字を与えれば、それで終わらせることができますが、町で唯一のゲームではありません。
シングルボックスソリューションの場合、自作のマザーボードの価格が1.000米ドル未満であっても、128 GBまでは非常に安価です(32 x 4 GB〜3.000米ドル)。 (メーカーをあざけらないでください。それがグーグルのために十分なら...)
256GBは非常に高価(32x8GB〜USD 18.000)であり、それを超えると...
または、代替としてInfiniband(10Gbps)相互接続された安価なボックスを検討しましたか?
そのようにして、4ノード、16プロセッサ(64コア)、512GBマシンを構築しても、USD 25.000からの変更が可能です。
さらに、そのうちの1つに障害が発生した場合にアプリケーションを3台のマシンで実行でき、コストを最大8ノードまで線形スケーリングできる場合は、グレースフルデグラデーションの追加の利点があります(ノードを4つ追加するだけです)。その時点でクールな128コア、1TB RAM獣<USD 50.000。
Infinibandの提案をエキゾチックなものとして却下する前に、それはあなたが求めているタイプのマシンのためではありません。例えばトップ500のスーパーコンピュータのうち141がこの方法で構築され、トップ10のうち4つを含みます( http://top500.org/connfam/8 )
よし、見て。探している種類のRAMフットプリントがあるサーバーを見つけることはできません。少なくとも、独自の電力網を必要としないサーバーは必要ありません。
スケーラブルなアプローチを取り、memcachedを使用しないのはなぜですか?メモリをネットワーク全体のさまざまなマシンに分散できます。データはディスクドライブに触れる必要はありません。そして、あなたが話しているお金で買うことができる一種の超高速ネットワークで、待ち時間はほとんど問題になりません。
これがJavaのmemcachedクライアントです: http://www.whalin.com/memcached/
そして、あなたがよく知らない場合のためのmemcachedの紹介があります: http://www.danga.com/memcached/
それに見る。非常に大量のRAMを備えた1台のモンスターマシンを構築するよりもはるかにコスト効率がよくなります。さらに、そのような要件を持つ何かを実行している場合、それはおそらくミッションクリティカルであり、単一障害点は必要ありません。
HP DL585、DL785、Sun X4600などの4ソケットまたは8ソケットのOpteronサーバーは、128〜256GBの範囲の大量のメモリを使用できます。安くはありませんが、確かに6桁の値札には入っていません。 8ウェイ、32コアのSun X4600、256GBのRAMは、Webサイトに約$ 35,000と記載されており、これはこのタイプのシステムと同じくらいの大きさです。 Webサイトに表示されている定価よりも少し安いシステムを入手してください。
4Gb DIMMを利用できますが、価格が高くなる傾向があるため、これらのDIMMを使いきったシステムにアップグレードすると、かなり高価になります。
このタイプのシステムを使用する場合は、64ビットのO/Sが必要です。また、64ビットのJVMを入手し、それがアプリケーションで正常に機能することを確認してください。
RAMサイズ。HPマシンを64 GBにスケールアップしました(HPはマシンが128 GBを使用できると述べています)が、追加のライザボードを追加した後にのみ、冷却に注意してください)シャフトなど(多くのHPとのチャットの後)。
マシンが最大n GBを使用するように指定されているからといって、それが追加の変更なしで動作するという意味ではありません。私たちのケースでは、すべての通常のメモリモジュールが機能しているわけではありません。熱くなったため、特定のモジュールのみが機能しました。
ハードウェアの提案(適切なもの)は繰り返しませんが、Terracottaを調べて、アプリに適しているかどうかを確認することをお勧めします。
RAM=のコストは大きなサイズに直線的にスケーリングしません。1GBのDIMMを$ 15で購入できるからといって、128GBのサーバーを$ 1,920で購入できるわけではありません... for最初は、128個のDIMMスロットを搭載したマザーボードは見つかりません。
特定のサイズ(8〜16 GB)を超えると、マザーボードが見え始めます必須完全にバッファリングしているDIMM(FB-DIMM)。これは、標準のデスクトップメモリよりもGBあたりのコストがかなり高くなります。
私たちは定期的に128 GBのメモリを搭載したマシンを使用しており、近年価格が大幅に下がっていますが、現在の数値はありません...また、JVMがそのサイズのメモリにどれほど適切にスケーリングできるかの経験もありません。
実際には多くのオプションがあります。HPリストから、BL680cブレードには128 GBを使用でき、DL580/585には256 GBを使用でき、DL785には512 GBを使用できます。 IBMの中には、1つのDellと同様に、最大256GBのものもあります。
質問から3年後、状況ははるかに簡単になります。
私はいくつかの Siliconmechanics configsを調べてきました。
最も安価な方法は、AMDプラットフォームを 2 dimms-512GB-11.940 $ で使用することです。
別の方法ですが、GBあたりの価格ははるかに高くなります 64 DIMMのIntelプラットフォーム-1TB-48.769 $ 。
従来のハードウェアで64GBのヘッドルームの問題が発生し始めると思います。そこからスケールアウトできれば大丈夫ですが、私が思うに、はるかに費用対効果の高い解決策はあなたのアーキテクチャに疑問を投げかけることでしょう。確かに私はあなたが何をしているのか知らないと言っていますが、私はそれをただ捨てています。
AmazonのEC2ソリューションはあなたにとって実行可能でしょうか?それは確かに最も費用対効果の高いソリューションでしょう。
そのメモリをサーバーに収めることができるとしましょう(私が間違っていない場合、標準ハードウェア上のLinuxは64GBに制限されていますが、よくわかりません)。
ほとんどのオペレーティングシステムでは、JVMは約1.4GB〜1.6GBのヒープスペースに制限されています。これは、一部には連続メモリが必要であり、一部にはオペレーティングシステムの制限が原因です。
したがって、追加のRAM=は1つのアプリケーションをスケールアップするのに役立ちませんが、アプリケーションの複数のインスタンスを実行することしかできません。ただし、複数のコアが必要となり、他のさまざまな問題が発生します。 。
何が必要ですかRAM for?メモリに保存できるデータベースを見つけるか、RAMドライブを使用できますが、メモリに多くのものを格納できるJVMを認識していません。
より多くのシステムメモリを取得する一般的な方法は、より多くのシステムを取得することです。メモリが実際にボトルネックになっている場合、メモリの量はそれほど多くありませんが、データがプロセッサにどれだけ適切に接続されているかがわかります。あなたは多くのことをスケールアップする必要があります。
明確にするために、システムメモリに2つのゼロを追加するだけで、おそらくnotがあなたの考えていることを実行します。データセット全体がメモリに収まるか、それより少し大きいスライスでも、キャッシュの無効化などの他のボトルネックにぶつかることになります。
システムをスケーリングする適切な方法はゆっくりです。たとえば、8ギガのRAMを備えた4コアシステムで現在実行している場合は、最初にアプリの全体をプロファイリングして、実際に時間を費やしている場所を確認し、次に最大12または16ギガのRAMをバンプしてみてください。プロファイリング結果が変更されました。
本当の問題は、他のリソースと比較して、通常利用できる量の100倍のシステムメモリが必要な理由です。データアクセスパターンが何らかの形で予測可能である場合は、ディスクの帯域幅を増やす必要があります。複数のRAIDコントローラーと複数のストライプ化されたディスクでこれを実現します。
データアクセスパターンが本当にランダムな場合は、より適切に最適化されたアルゴリズムを使用する余地があります。
おそらく、専用のサーバーが必要です。
UnisysのES7000を見てください。そこの記述はおそらく少し時代遅れです。
最大512GBのRAMをサポートできます。 WindowsやLinux Enterpriseなどの有名なO/Sを使用しています。
標準構成の場合は約30,000ドルかかりますが、Itaniumとすべてのベルとホイッスルを使用すると、最大60万ドルに達する可能性があります。
これだけのRAMがあれば、ディスク領域にまったく手を加えることなく、大量のホットデータを保持できます。
明らかに64ビットオペレーティングシステムが必要ですが、スーパーコンピュータのテリトリーではありません。例として、DellのPowerEdge R900およびR905は256 GB RAMで利用でき、プレーンな標準のIntel Xeon/AMD Opteronプロセッサを使用し、Linux、Solaris、またはWindows 2003および2008を実行します。
もちろん、Dellで直接RAMを購入するのはそれほど費用対効果が高くありません(32 x 8 GBで約35,000 USドルが必要ですが、すでに約23,000 USドルで入手できます)。一方、40,000米ドルのサーバーを購入する場合は、適切なサポートを確実に受けたいと思うかもしれません(256 GB RAMが安いとは思っていませんでしたか?128 GBもOKなら、12,000 USドル節約できます)。
ただし、どのオペレーティングシステムを選択するかは経験がありません。100GB以上のJavaを実行することは、通常、私が行うことではありません。
完全に標準のソリューション:データベース。私はあなたがそれが遅すぎるだろうと言ったのを知っていますが、それはそれをホストしているものに基づいています。これらの十分な数のRAID0アレイでホストするのはどうでしょう。
ガジェットが$ 400の場合、Pricewatchは4GBのチップを$ 55(互換性は確認していません)と表示しているので、これはメモリの別の$ 440です。つまり、840ドルで32 GBになります。 (理論上、デバイスは8 GBのチップで合計64 GBを使用できますが、まだサポートされているチップはありません。)
これらのうちRAID0 4で、3000ドルを少し超える範囲で通常のボックスを下回っています。それらの16は$ 14kのあなたの範囲の上限を取得します。
これが使用可能かどうかは、データの性質にも影響します。これらのデバイスは揮発性であり、CFカードにバックアップできますが、数時間でバックアップバッテリーが消耗します。
FusionIOの提案と同様に、動的なRAM=をSATAインターフェースにフックできるデバイスを取得できます。 this のようなもの(私は、商品や会社、それは「Googleショッピング」検索から出てきた最初のオプションにすぎません)。
これらのいくつかをマウントされたファイルシステムとして使用して、アプリのロジックを使用してデータをキャッシュすることができます(バッテリーバックアップされているため、ブートやその他の機能停止に耐える必要があります)、またはスワップスペースとして使用して、カーネルの使用方法を決定することができます(ただし、OSカーネルは通常、すべてのスワップ位置が実際よりも桁違いに遅く、潜在的であると想定して最適化されているので、RAMとなると、これを実際に使用するために、大幅に調整する必要があります。そのような配置の)。
本当に大きなものが必要な場合は、FusionIOオプションのほうがお金の価値が高くなります。この種のRAMドライブは妥協案としてより良いかもしれません。128Gbに対応できるサーバーの能力RAMマザーボード上で、64Gb全体を搭載したこれらのカップルは、価格とパフォーマンスの面で、256Gb以上を直接サポートする専門サーバーと比較します。読者の演習として残します!
アプリケーションの性質についてのコメントを読みましたが、それでも代替ソリューションを検討する可能性があります。
FusionIOは1つの真の代替手段です。 ちょっと見てください 。 10,000ドルでも、ハイエンドサーバーよりもはるかに安価です。 1.0 GB /秒の書き込み帯域幅-それは本当におかしいようです。
もちろん、別のオプションはSSDです。インテル®X25-EエクストリームSSDの仕様を見た場合に備えて:
Read Latency 75 microseconds
I/O Per Second (IOPS) Random 4 KB reads: >35,000 IOPS
Random 4 KB writes: >3,300 IOPS
Sustained sequential read: up to 250 MB/s
Sustained sequential write: up to 170 MB/s
それらの束をレイド10アレイに配置すると、十分なパフォーマンスが得られます。 32 GBあたり400米ドルで、他のハイエンドサーバーよりもはるかに安価です。
私は「多くの安価なサーバー」アプローチの大ファンです。 Ubuntu 9.04で利用可能なEucalyptusプラットフォームでこの種のプロセスを実行している可能性があることを確認しましたか?この種類のプログラムを、8、16、または32 GBのRAMを実行する複数のサーバーを備えた専用のギガビットネットワーク上の数台のコンピューターで実行し、線形に拡張して、必要に応じてより安価なサーバーを追加することができます。