大量のRAMを備えたサーバーを構築する費用対効果の高い方法


10

スケーラビリティが主にRAMによって制限されているJavaアプリケーションがあり、それをデータセンターの1つ以上のサーバーで実行したいと考えています。100GB-512GB以上のRAMに対応できるサーバーハードウェアはどこで探すべきですか?私はそのような問題の専門家ではないので、どこから始めればいいのか本当にわかりません。

これはスーパーコンピュータの領域(6桁以上)に入っているのですか、それとも5桁の低価格でそのようなサーバーを入手できますか?

以下のいくつかの質問に基づくいくつかのメモ:

  • はい、私はこのスケーラビリティ要件を削除する方法を考えようと懸命に努力してきましたが、それは実際には選択肢ではありません。アプリケーションは基本的に、非常に大量のデータへの非常に高速なランダムアクセスを必要とするため、(おそらくデータベースを介して)ハードディスクに保存してもデータを削減できません。
  • 少なくとも理論的には、JVMはそれまでスケールアップできると確信しています。目立った問題なしに、Sun 1.6 JVMに10GBを割り当ててコードを定期的に実行しています。

回答:


6

異常な要件は、通常とは異なるソリューションから恩恵を受けることがあります。確かに、Sun、Dell、またはHPに6桁の数字を与えれば、それで終わらせることができますが、町で唯一のゲームではありません。

シングルボックスソリューションの場合、自作のマザーボードの価格が1.000米ドル未満であっても、128 GBまでは非常に安価です(32 x 4GB〜3.000米ドル)。(メーカーをあざけらないでください。もしそれがグーグルのために十分なら...)

256GBはかなり高価(32x8GB〜USD 18.000)であり、それを超えると...

または、代替としてInfiniband(10Gbps)相互接続された安価なボックスを検討しましたか?

そのようにして、4ノード、16プロセッサ(64コア)、512GBマシンを構築しても、USD 25.000からの変更が可能です。

さらに、そのうちの1つに障害が発生した場合にアプリケーションを3台のマシンで実行でき、最大8ノードまでのコストで線形スケーリングが可能な場合は、グレースフルデグラデーションの追加の利点があります(ノードを4つ追加するだけです)。その時点で、クールな128コア、1 TBのRAMが50.000米ドル未満で表示されています。

Infinibandの提案をエキゾチックなものとして却下する前に、それはあなたが求めているタイプのマシンのためではありません。たとえば、上位500のスーパーコンピュータのうち141がこの方法で構築され、上位10のうちの4つを含みます(http://top500.org/connfam/8


Infinibandが適切なソリューションであるかどうかはわかりませんが(私はそれを使った経験がありません)、(2011年に)単一のサーバーで100GB以上のRAMを搭載したJavaを実行しているシステムをエキゾチックと呼んでいます。エキゾチックなソリューションを検討する時が来ました。
Mike Miller

-1、本当に、本当に誤解を招く。Top500のほとんどのスーパーコンピューターはInfiniBandを使用して低遅延のネットワーキングを提供していますが、RDMA経由で単一の一貫したイメージを提供するのではなく、その使用法非常に珍しいものです。これを利用するには、単一システムイメージまたはvSMP製品を使用する必要があります。これにはKerrighedやOpenSSIなどを使用できますが、これらの製品は変更されたカーネルに基づいており、単一のプロセスイメージをノード間で分割することはできません。非常に高価なソリューションであるScaleMPだけが、複数のRDMA接続サーバーに実際の一貫したシステムイメージを提供できます。
jgoldschrafe

3

よし、見て。探している種類のRAMフットプリントを備えたサーバーを見つけることはできません。少なくとも、独自の電力網を必要としないサーバーは見つかりません。

スケーラブルなアプローチを取り、memcachedを使用してみませんか?メモリは、ネットワーク上のさまざまなマシンに分散できます。データがディスクドライブに触れる必要はありません。話しているお金で購入できる一種の超高速ネットワークでは、遅延はほとんど問題になりません。

これがJavaのmemcachedクライアントです:http : //www.whalin.com/memcached/

そして、よくわからない場合のためのmemcachedの紹介を以下に示します。http//www.danga.com/memcached/

それに見る。非常に大量のRAMを搭載した1台のモンスターマシンを構築するよりもはるかにコスト効率が高くなります。その上、そのような要件を持つ何かをしている場合、それはおそらくミッションクリティカルであり、単一障害点は必要ありません。


良いアイデア。私は自分の考えよりもそれが好きです。
phuzion 2009年

それはナンセンスです。先週サーバー部分で発売されたSandy Bridgeは、1Uサーバーパッケージで最大768 GBまで拡張できます。Westmereの部品を使い続ける場合は、QPIリンクを介して2つのIBM x3850または同様のサーバーを接続し、4000ワット未満の電力を供給することができます。(これは、同じラックスペースにある4台の2Uサーバーと同じ電力フットプリントです。)おそらくAMDは、このスペースでもいくつかの競合製品を提供しています。
jgoldschrafe

4
@jgoldschrafeこれは3年前に質問(および回答)されました。
Matt Simmons

2

HP DL585、DL785、Sun X4600などの4または8ソケットOpteronサーバーは、128〜256GBの範囲の大量のメモリを使用できます。安くはありませんが、確かに6桁の値札には入っていません。8ウェイ、32コアのSun X4600、256 GBのRAMリストがWebサイトに約35,000ドルであり、これはこのタイプのシステムと同じくらいの大きさです。おそらく、Webサイトに表示されている定価よりも少し安い価格でシステムを入手できることがわかります。

4Gb DIMMが利用可能ですが、価格が高くなる傾向があるため、これらのDIMMを使いきったシステムにアップグレードすると、かなり高価になります。

このタイプのシステムを使用する場合は、64ビットのO / Sが必要です。また、64ビットのJVMを入手し、それがアプリケーションで正常に機能することを確認してください。


54ビットのJVMではなく、64ビットのJVMを意味していると思います:P
tegbains 2009年


2

そのようなRAMサイズは絶対に注意してください。HPマシンを64 GBにスケールアップしました(HPはマシンが128 GBを使用できると述べています)が、追加のライザボード、冷却シャフトなどを追加した後でのみ(HPとのたくさんのチャットの後)。
マシンが最大n GBを使用するように指定されているからといって、それが追加の変更なしで機能するという意味ではありません。私たちのケースでは、すべての通常のメモリモジュールが機能しているわけではありません。熱くなったため、特定のモジュールのみが機能しました。


1

RAMのコストは、大きなサイズに直線的に拡張しません。1 GBのDIMMを15ドルで購入できるからといって、128 GBのサーバーをわずか1,920ドルで購入できるというわけではありません...そもそも、128のDIMMスロットを備えたマザーボードは見つかりません。

特定のサイズ(約8〜16 GB)を超えると、完全にバッファリングするDIMM(FB-DIMM)を必要とするマザーボード表示されるようになり、標準のデスクトップメモリ​​よりもGBあたりのコストがかなり高くなります。

私たちは定期的に128 GBのメモリを搭載したマシンを使用しており、近年価格が大幅に下がっていますが、現在の数はありません...また、JVMがそのサイズのメモリにどれほど適切にスケーリングできるかの経験もありません。


1

実際には多くのオプションがあります。HPリストから、BL680cブレードには128 GBを使用でき、DL580 / 585には256 GBを使用でき、DL785には512 GBを使用できます。一部のIBMは256GBまで、1つのDellも同様です。


0

従来のハードウェアで64GBのヘッドルームの問題が発生し始めると思います。そこからスケールアウトできれば大丈夫ですが、私が思うに、はるかに費用対効果の高い解決策は、アーキテクチャに疑問を投げかけることでしょう。確かに私はあなたが何をしているのか知らないと言っていますが、私はそれをただ捨てています。


アプリケーションは非常に高速に大量のデータへのランダムアクセスを必要とする不幸なRAMの要件を回避する簡単な方法は、ありません-ちょうどそれをカットされません:-(ディスク上のデータを保存する

0

AmazonのEC2ソリューションはあなたにとって実行可能でしょうか?それは確かに最も費用対効果の高いソリューションでしょう。


恐れることはありません-EC2サーバーがサポートできるRAMの最大量は14GBです。

0

そのメモリをサーバーに収めることができるとしましょう(私が間違っていないのであれば、標準ハードウェア上のLinuxは64GBに制限されていますが、わかりません)。

ほとんどのオペレーティングシステムでは、JVMは約1.4GB〜1.6GBのヒープスペースに制限されています。これは、一部には連続メモリが必要であり、一部にはオペレーティングシステムの制限が原因です。

したがって、追加のRAMは1つのアプリケーションのスケールアップには役立ちません。アプリケーションの複数のインスタンスを実行することしかできません。ただし、その場合は複数のコアが必要になり、他のさまざまな問題が発生します。

そんなに多くのRAMが必要ですか?メモリに格納したり、RAMドライブを使用したりできるデータベースを見つけることができるかもしれませんが、メモリに多くのものを格納できるJVMについては知りません。


JVMが1.6GBのヒープスペースに制限されていないことは確かだと思います。SunのJVMでは10GB以上で定期的に実行しています。もちろん、64ビットマシン上で実行する必要があります。

同意しません。参照: unixville.com/~moazamそして、SOに関するいくつかの質問。64ビットJVMについては不明です。現在、私の64ビットMacでサポートされていないAFAIKは、64ビットLinux / Winについてはわかりません。

私は64ビットのJVMを使用していますが、実際にはMacで使用しています。Appleはかなり前に64ビットMac用のJava 1.6をリリースしました。

Eclipseが1.6で動作しないので、私にはわかりません...しかし、承知しました。あなたのマシンに置くことができる最大のRAMは何ですか?

私は16ギガバイトのヒープと64ビットのJVMのすべての時間使用

0

より多くのシステムメモリを取得する一般的な方法は、より多くのシステムを取得することです。メモリが実際にボトルネックになっている場合は、取得したメモリの量はそれほど多くありませんが、データがプロセッサにどれだけ適切に接続されているかがわかります。多くのことをスケールアップする必要があります。

明確にするために、システムメモリに2つのゼロを追加するだけでは、おそらくあなたが思っていることを実行しないでしょう。データセット全体がメモリに収まるか、それより少し大きいスライスでも、キャッシュの無効化などの他のボトルネックにぶつかることになります。

システムをスケーリングする適切な方法はゆっくりです。たとえば、8ギガのRAMを備えた4コアシステムで現在実行している場合は、最初にアプリの全体をプロファイリングして、実際に時間を費やしている場所を確認し、次に最大で12または16ギガのRAMをバンプしてみてください。プロファイリング結果が変更されました。

本当の問題は、他のリソースと比較して、通常利用できる量の約100倍のシステムメモリが必要になる理由です。データアクセスパターンが何らかの形で予測可能である場合は、ディスクの帯域幅を増やす必要があります。複数のストライプ化されたディスクを備えたいくつかのRAIDコントローラがこれを実現します。

データアクセスパターンが本当にランダムな場合は、より適切に最適化されたアルゴリズムを使用する余地があります。


0

おそらく、専用のサーバーが必要です。

UnisysのES7000を見てください。そこの記述はおそらく少し時代遅れです。

最大512GBのRAMをサポートできます。WindowsやLinux Enterpriseなどの有名なO / Sを使用しています。

標準構成の場合、3万ドル程度の費用がかかりますが、Itaniumとすべてのベルとホイッスルを使用すると、最高60万ドルに達する可能性があります。

これだけのRAMがあれば、ディスク領域にまったく手を触れることなく、大量のホットデータを保持できます。


0

64ビットオペレーティングシステムが必要なことは明らかですが、スーパーコンピュータのテリトリーではありません。例として、DellのPowerEdge R900およびR905は256 GB RAMで利用可能であり、プレーンな標準のIntel Xeon / AMD Opteronプロセッサを使用し、Linux、Solaris、またはWindows 2003および2008を実行します。

もちろん、RAMを直接デルで購入するのはそれほど費用対効果が高くありません(32 x 8 GBで約35,000 USドルが必要ですが、すでに約23,000 USドルで入手できますが、それよりも少ない可能性があります)。 40,000米ドルのサーバーを購入する場合に適切なサポートを確保するため(256 GBのRAMが安価であるとは予想していませんでしたか?128 GBでも問題がなければ、最大12,000米ドル節約できます)。

私はどのオペレーティングシステムを選択するかについての経験はありませんが、100 GB以上のJavaを実行することは通常私が行うことではありません:)


0

完全に独創的なソリューションはどうですか:データベース。あなたはそれが遅すぎるだろうと言ったのを知っていますが、それはそれをホストしているものに基づいています。これらの十分な数のRAID0アレイでホストするのはどうでしょう。

ガジェットが$ 400の場合、Pricewatchは4GBのチップを$ 55(互換性は確認していません)と表示しているので、これはメモリの別の$ 440です。これで840ドルで32GBになります。(理論上、デバイスは8 GBのチップで合計64 GBを使用できますが、チップはまだサポートされていません。)

これらのうちRAID0 4で、3000ドルを少し超える範囲で通常のボックスを下回っています。それらの16は$ 14kのあなたの範囲の上限を取得します。

これが使用可能かどうかは、データの性質にも影響します。これらのデバイスは揮発性であり、CFカードにバックアップできますが、数時間でバックアップバッテリーが消耗します。


0

私は「多くの安価なサーバー」アプローチの大ファンです。Ubuntu 9.04で利用可能なEucalyptusプラットフォームでこの種のプロセスを実行している可能性があることを確認しましたか?この種類のプログラムを、8、16、または32 GBのRAMを実行する複数のサーバーを備えた専用のギガビットネットワーク上の数台のコンピューターで実行し、線形に拡張して、必要に応じてより安価なサーバーを追加することができます。


0

アプリケーションの性質についてのコメントを読みましたが、それでも、代替ソリューションを検討する可能性があります。

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

それらの束をRAID 10アレイに配置すると、十分なパフォーマンスが得られます。32 GBあたり400米ドルで、他のハイエンドサーバーよりもはるかに安価です。


0

FusionIOの提案と同様に、ダイナミックRAMをSATAインターフェイスに接続できるデバイスを入手できます。このようなもの(私は製品または会社の経験がありません。これは「Googleショッピング」検索から出てきた最初のオプションにすぎません)。

これらの2つをマウントされたファイルシステムとして使用して、アプリのロジックを使用してデータをキャッシュすることができます(バッテリーバックアップされているため、ブートやその他の停止に耐える必要があります)、またはスワップスペースとして使用して、カーネルの使用方法を決定することができます( OSカーネルは通常、すべてのスワップ位置が実際のRAMよりも桁違いに遅く、潜在的であると想定して最適化されているため、これは実際のRAMよりも大幅に調整する必要があります)。

FusionIOオプションは、本当に大きなものを必要とする場合は、お金の価値が高くなるでしょう。この種のRAMドライブは、妥協案としてより良いかもしれません。マザーボード上に128Gb RAMを搭載できるサーバーと、64Gb全体を搭載したこれらのサーバーがどれだけうまく機能するかを、価格とパフォーマンスの点で、256Gb以上を直接サポートする専門のサーバーと比較すると、読者のための練習問題として残しておきます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.