RAMが安い場合、すべてをRAMにロードして、そこから実行してみませんか?


132

RAMは安価で、SSDよりもはるかに高速です。ただの揮発性です。では、コンピューターに大量のRAMが搭載されていないのに、電源を入れると、ハードドライブ/ SSDからすべてをRAMにロードし、そこからすべてを実行します。コンピューターはもっと速くないでしょうか?

もちろん、現在のオペレーティングシステムはこれをまったくサポートしていないかもしれませんが、RAMがこのように使用されない理由はありますか?


109
RAMは安価だと思います。1TBのRAMのコストはいくらですか?
アランシュトコ

39
あなたが説明することはRAMDiskと呼ばれ、人々はあなたが説明することを既にします。RAMDiskを使用して、ほとんどのプログラムをメモリにロードします。また、システムメモリとソフトウェアを使用してこれを行うことができる特別なハードウェアも必要ありません。
ラムハウンド

16
私たちは、特定のOSがサポートする範囲内でカバーしています。Windowsは「ディスクキャッシュ」に「未使用の」RAMを使用しますが、Linuxの多くのバージョンでも使用されていると思います。しかし、RAMにすべてを収めるにはディスクが多すぎます。
ダニエルRヒックス

19
「安い」は相対的な用語です。メモリの各ビットは数年前よりも安価ですが、ハードドライブのストレージよりも高価です。とにかく進歩の行進は、プログラムが利用可能なRAMの量に関係なく、常に利用可能なRAMをすべて埋めることを保証します。みんなのコンピューターが突然より多くのRAMを利用できるようになったら、開発者は自分のプログラムにより多くのものを入れることになります。
ジョッキング

15
GoogleがインターネットをRAMに読み込む
アリ

回答:


177

RAMがそのように使用されない理由はいくつかあります。

  1. 共通デスクトップ(DDR3)RAMは安価ですが、それほど安くはありません。特に、比較的大きなDIMMを購入する場合。
  2. RAMは電源を切ると内容を失います。したがって、ブート時にコンテンツをリロードする必要があります。100GBのSSDサイズのRAMディスクを使用するとします。つまり、100GBがディスクからコピーされるまでに約2分の遅延があります。
  3. RAMはより多くの電力を使用します(たとえば、DIMMごとに2〜3ワット、アイドル状態のSSDとほぼ同じ)。
  4. 大量のRAMを使用するには、マザーボードに多くのDIMMソケットとそれらへのトレースが必要です。通常、これは6以下に制限されます。(より多くのボードスペースはより多くのコストを意味し、したがってより高い価格を意味します。)
  5. 最後に、プログラムを実行するためにRAMも必要になります。そのため、作業には通常のRAMサイズが必要になります(たとえば、18GiB、使用するデータを保存するのに十分なサイズ)。

そうは言っています:はい、RAMディスクは存在します。DIMMソケットを備えたPCIボードとしても、非常に高いIOpsのアプライアンスとしても。(SSDがオプションになる前に企業データベースで主に使用されていました)。しかし、これらのものは安くはありません

本番環境になったローエンドRAMディスクカードの2つの例を次に示します。

共通の作業メモリにRAMディスクを作成するだけでなく、これを行う方法が他にもたくさんあることに注意してください。

あなたはできる:

  1. 揮発性(動的)メモリを備えた専用の物理ドライブを使用します。アプライアンスとして、またはSAS、SATA、またはPCI [e]インターフェイスを備えたもの。
  2. バッテリーでバックアップされたストレージでも同じことができます(バックアップ電源が有効な限りコンテンツを保持するため、初期データをコピーする必要はありません)。
  3. DRAMの代わりに静的RAMを使用できます(より単純で、より高価です)。
  4. フラッシュまたはその他の永続ストレージを使用して、すべてのデータを保持できます(警告:通常、フラッシュの書き込みサイクル数は限られています)。フラッシュをストレージとしてのみ使用する場合は、SSDに移行しました。すべてをダイナミックRAMに保存し、電源遮断時にフラッシュバックアップに保存すると、アプライアンスに戻りました。

Amiga RADから、生き残ったRAMディスクをIOPSにリセットし、ウェアレベリングとGdが何を知っているかを説明する方法があると確信しています。ただし、これを短くして、もう1つだけ項目をリストします。

DDR3(現在のDRAM)の価格とSSDの価格:

  • DDR3:GiBあたり10ユーロ、またはTiBあたり10,000ユーロ
  • SSD:かなり少ない。(約1/4〜1/10)。

12
2つの重要なポイントにヒットした+1:HDはRAMよりも安価であり、RAMは揮発性です。RAMは作業台であり、HDは倉庫です。ナフセド。
チャドハリソン

1
@Hennes-ソフトウェアRAMDiskソリューションを使用してドライブ全体をメモリにロードすることを提案していませんでした。たとえば、ジャンクションポイントを使用して、PhotoshopをメカニカルドライブからRAMDiskにロードすると、パフォーマンスはSSDインストールと同等かそれ以上になります。
ラムハウンド

29
「RAMは安いが、それほど安くはない」ための+1。簡単に検索すると、SSDドライブは現在、容量とメーカーに応じて75セントからギグで販売されていることがわかります。DDR3 RAMモジュールは、容量に応じてGBあたり7〜10ドルで販売されるため、RAMとSSDのコストの比率は15:1にもなります。
キース

2
RAM loses its contents when powered off.正確には、唯一の揮発性RAMは行いますが、不揮発性RAMは、例えばとして、電源オフ時にも、すべてのものを保持してフラッシュチップ。その意味で、SSDはRAMとは異なり、RAMのサブタイプではありません。
サウル

1
同意しません。SSDのフラッシュセルは電力を必要としない場合がありますが、SSDのコントローラーおよびその他の電子機器は電力を消費します。電力はそれほど多くありませんが、最新のDIMM(1〜3ワット)が消費する電力とほぼ同じです。
ヘネス

71

オペレーティングシステムは既にページキャッシュを使用してこれを実行しています

コンピューティングでは、ディスクキャッシュと呼ばれることが多いページキャッシュは、より高速なアクセスのためにオペレーティングシステムによってメインメモリ(RAM)に保持されるディスクバックアップページの「透過的な」キャッシュです。通常、ページキャッシュは、ページングメモリ管理を使用してカーネルに実装され、アプリケーションに対して完全に透過的です。

ディスクからページを読み取ると、オペレーティングシステムはそのデータをメモリにロードし、そのメモリをより有効に使用するまでそこに残します。十分なメモリがある場合、OSは各ページを1回だけ読み取り、それ以降はメモリから使用します。OSが実際のディスクIOを実行する唯一の理由は、まだメモリにないページを読み取る必要がある場合、またはページが書き込まれる場合です(その場合、おそらくディスクに保存する必要があります)。

この方法で行う利点の1つは、ハードドライブ全体をメモリにロードする必要がないことです。これは、収まらない場合に便利です。また、アプリケーションが読み込まないファイルを読む時間を無駄にしないことを意味します。必要。もう1つの利点は、OSがより多くのメモリを必要とするときはいつでもキャッシュを破棄できることです(メモリ不足のためプログラムをクラッシュさせるよりも、次のディスクの読み取りをわずかに遅くする方が良いです)。また、ユーザーがramdiskに何を含めるべきかを手動で決定する必要がないことも役立ちます。最も頻繁に使用するものはすべて自動的にメインメモリに保持されます。

メモリがたくさんあるが、アプリケーションが期待したほど速く実行されていない場合、それらは安全に実行されているため遅くなる可能性があります。たとえば、書き込みが完了するのを待たないように指示すると、SQLiteは桁違いに高速になりますが、正常にシャットダウンしないとデータベースが完全に破損します。

また、/tmp通常、LinuxディストリビューションのRAMディスクは、データが失われても問題ないためです。ただし、書き込みが多すぎる/tmpとメモリ不足になる可能性があるため、それが良いアイデアであるかどうかについてはまだ議論があります。


5
素晴らしい答え。OSには、起動時に一般的に要求されるデータをディスクからRAMにロードするSuperfetchなどの機能もあります。
マシューロック

いい答えだ。すべてのトップのものの攻撃は、実際にそれを答えるのではなく、質問を(それを無効にしてみてください)
VSYNC

44

Alan Shutkoが質問に対する彼のコメントで指摘しているように、RAMは実際には安くはありません。

以下にいくつかのデータポイントを示します。Googleで4 GB RAM、64 GB SSD、1 TB HDD(機械式ハードドライブ)を検索した場合、表示されるコストは次のとおりです(これは2013年8月25日のものです)。

おっ!HDDはRAMの100倍安価です!また、SSDはRAMの8倍安価です。

(さらに、他の回答で指摘されているように、RAMは本質的に揮発性であるため、他の形式の永続ストレージが必要です。)


2
RAMはSSDよりも数桁高速であり(書き込み摩耗の問題はありません)、回転する錆やGLASSよりも数桁高速です。そして、1TBのディスクで80ドルでできることは確かですが、SCSIまたはファイバーチャネル接続のある15,000 rpmのプラッタでそのストレージを見つけてみてください。4 x 250Gb @〜250ドルに加えて、BBUコントローラーのコスト(約500ドル)を見て、SSDとほぼ同じコストにします。
symcbean

1
@symcbean-それはやや細かいことです。(ディスクまたはSSDを交換するために必要な)大規模なRAMの取得には、1 GBあたり25ドル程度のコストがかかることに注意してください。
ラッセルボロゴーブ

3
@symcbeanが同様の企業特性を持つSSDを購入すると、1000ドルをはるかに超える費用がかかります。
マイクバブコック

この回答が数か月ごとに再検討され、価格が修正され、価格が絶えず低下する様子を見るのは非常に興味深いでしょう。
Ofer Zelig

@OferZelig 「価格は常にドロップ方法を見て、」あなたが意味するそうでないときを除いて
CVn

9

ローカルマシンのRAMディスクでコンテンツを生成するために、すべての即時読み取り/書き込み操作を行います。また、MongoDBジャーナリングフォルダー、コンパイラー、Pythonインタープリター、および標準ライブラリもそこに保存します。このディスクはシャットダウン時に保存され、起動時に復元されます。私が使用する2番目のRAMディスクは64メガバイトで、インターネットブラウザーのすべてのキャッシュフォルダーがそこを指します。その1つはシャットダウン時に失われ、いっぱいになるとフラッシュします。

私が思う仕事に適切なツールを使用して、私があなたに与える答えになるでしょう。RAMディスクを使用すると、7200rpm Western Digitalよりも30〜1000倍高速にデータを生成しています。

これは私が使用しているプログラムです:http : //www.romexsoftware.com/en-us/primo-ramdisk/

... 32ギガバイトのRamが200ドル未満の場合、なぜこれが一般的にならないのかわかりません。

8ギガバイトのRAMディスク日常のSATA III HDD


4
あなたは、OSがすでにあなたのために物事をキャッシュすることを知っていますよね?
ジャガイモのたたき

32ギガバイトのRamが200ドル未満の場合」 1 TB HDDの32 GBは、約3ドルから始まります。消費者向け1 TBドライブは今日100ドル未満で購入でき、エンタープライズグレードのドライブでさえギガバイトあたりの価格で購入できます(Amazonは現在、520ドルのRRPを提供する4 TB Seagate ST4000NM0043に408ドルを求めています。周り)。
CVn

1
@Potatoswatterええ、そうです。ただし、新しく作成された10,000個のファイルはキャッシュされません。そのため、RAMディスクに明示的に「キャッシュ」します。
ブレイクフ

@MichaelKjörling1 TBをRAMに保存しようとはしていません。それはばかげている。現実的になり、常にRAMに入れたいキーフォルダーをいくつか選択すると、ワークフローの特定の操作を大幅に(数桁)高速化できます。上記の私の画像をご覧ください。
ブレイクフ

1
「すべて」は相対的です。私のマシンでは、8ギガバイトのハードドライブイメージから「すべて」をロードします。バイトごとに8つのギグ全体が毎回複製されます。質問のために、あなたが本当にこれを行う解決策を探しているなら、あなたは「可能」の範囲内に留まるか、「それは不可能」タイプの答えに合うようにそれを不均衡に吹き飛ばすでしょう。
ブレイクフ

5

はい、これは市場に出回っている多くのメモリ内データベースの前提です。1つの例はSAP HANAです。アイデアは、RAMは安価であり、パフォーマンスの観点からRAMでの読み取り/書き込み操作はディスク操作よりも1000倍速いということです。そのため、ほとんどのデータはRAMに保持され、古いデータをコールドストレージ(ディスク)にリサイクルするデータエージング戦略を定義します。


4

簡単な説明

アプリケーションが初めて実行されると、ハードディスクまたはネットワークからRAMに転送されます。だから、心配しないでください、あなたはすでにそれをしています。

ただし、通常、アプリケーション/プロセスファイルは1つだけではなく、ハードディスクまたはネットワークを対象とするI / O操作(アプリケーションの他のファイルまたはシステムとのその他のI / O操作など)があるため、速度が低下する可能性があります応用。これらはRAMディスクに転送できますが、電源オフ時にRAMディスクが削除され、起動時に再び書き込まれることを考慮する必要があります。

また、RAMは質問で示したほど安くはありません。RAMのコストだけでなく、マザーボードのソケットを含む作業用RAMのコスト(これらは限られた/まれであるため価値が高い)と、電力が低下した場合のデータ損失のコストをカウントする必要があります。

たとえば、1TBのHDDを搭載したコンピューターは安価で購入でき、それはホームコンピューティングに関するものであり、1TBのRAMを搭載したコンピューターはスーパーコンピューターの範囲にあります。(ただし、Intelは中規模のものに取り組んでいます:http : //vr-zone.com/articles/more-on-xeon-e5-terabyte-of-ram-even-at-midrange-/14366.html


4

これはすばらしい質問であり、私はその回答が魅力的だと感じています。これをOracle DBAとしてコメントしますが、私の回答はOracleデータベースに特有のものです。これは、Oracleを使用するときに多くの人が犯す大きな間違いです。これが他のアプリケーションにも当てはまるかどうかはわかりません。これはトピックから外れることを意味するのではなく、専門的な回答として意図されています。

Oracleでパフォーマンスを調整する場合、ボトルネックを解消することを本当に求めています。私たちのほとんどはそれを言っていませんが、それは制約の理論に基づいていますhttps//en.wikipedia.org/wiki/Theory_of_constraints

メモリがボトルネックにならない場合があります。Oracleにはメモリを管理するための複雑なメカニズムがあり、他の領域にボトルネックがある場合、メモリを増やすだけで実際に速度が低下する可能性があります。非常に一般的な例を挙げましょう。

クエリが遅いようです。コンセンサスは、RAMを増やす場合、メモリはディスクより速いため、クエリの応答時間を増やす必要があります。まあ...これは、Oracleがデータのメモリ管理を処理する方法です。Oracleには、特定の職務に割り当てられるさまざまなメモリロケーションがあります。したがって、これらの思い出を増やすことができます。データに使用される領域は「バッファキャッシュ」と呼ばれます。これは一連のリンクリストです(リストの数はバージョンごとに増加する傾向があります)。クエリ中にディスク上でブロックが検出されるたびに、ハッシュアルゴリズムが実行され、どのリストを挿入するかが決定されます。リスト内のどこに配置するかは、タッチカウントアルゴリズムに基づいています(Oracleサポートサイトで説明されていますが、そのため、あなたはそれを得るためにお金を払わなければなりません...それは本当に重要ではありません)。

ただし、クエリを実行すると、Oracleはその時点で検索するバッファチェーンのラッチを解除します。このLATCH(注:これはロックではありません。違いがわからない場合、Googleの「ラッチ」は、読み取り中はそのチェーン上の他のすべての操作をブロックします。したがって、読み取りと書き込みをブロックします(これは、ロックが読み取りをブロックしないと主張するOracleとはまったく異なります)。

これが必要なのは、チェーン内のブロックを読み取ると、Oracleが「要求」される頻度に基づいてブロックを移動するためです。要求頻度の高いブロックは最上部に移動され、要求頻度の低いブロックは下部に残されて期限切れになります。2つのセッションでリンクリストを読み取り、ブロックを移動することはできません。そうしないと、存在しない場所を指すポインターがヒットします。

メモリのサイズを大きくすると、各リンクリストのサイズが大きくなります。これにより、リストの読み取りにかかる時間が長くなります。単一の貧弱なクエリまたは複雑なクエリは、リンクされたリストを数万または数百万回も読み取ることができます。各読み取りは高速ですが、それらの数はラッチの取得につながり、これらは他のセッションをブロックします。Oracleはこれを「論理IO」(またはバッファ取得またはその他のこと。この専門用語はOracleに固有であり、ITの他の部分の何かを意味する場合があります)と呼びます。

そのため、リストが長く、SQLの品質が非常に悪い場合は、SQLステートメントのラッチが長く保持されます。メモリを増やすと、パフォーマンスが低下する場合があります。ほとんどの場合、これは起こりません。人々は多額のお金を費やし、利益を享受しません。そうは言っても、バッファキャッシュにより多くのメモリが必要な場合もありますが、これが適切かどうかを知るためにボトルネックを適切に識別する必要があります。この投稿では、これを分析する方法については説明できません。DBAフォーラムを参照してください。そこで議論する人もいます。かなり複雑です。

これが発生する可能性のあるソフトウェアの他の部分の特定の例はありますか?工場の制約を緩和することを論じる「目標」と呼ばれる素晴らしいビジネス本があります。このプロセスは、パフォーマンスの問題を評価する際にOracle DBAが行うことと非常に似ています。多くの場合、MBAプログラムの標準的な読書です。IT専門家のために読むことは非常に貴重です。

https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt


恥ずかしがらずに、これは質問に反しているが、そうでなければ興味深い。
jb。

その理由は、ラムを追加するだけではありません。それは具体的で狭いですが、私はそれが当てはまると思います。
ボブ

とても興味深い。それは議論全体に別の角度をもたらします。
ローレンツローザウアー

3

RAMは安価かもしれませんが、従来のストレージほど安くはありません。

私は3TBのハードドライブを持っています(99ドル):HDD見積もり

また、3TBごとに48個が必要になります(各$ 719):RAM Quote

それは合計$ 34,512対$ 99です。3TBのRAMを実行するのに必要なハードウェアの価格は言うまでもありません。


答えは質問に関係ありません
BlueBerry-Vignesh4303

1
最後に、彼は「RAMは安くない」と言っているのだと思います。
jaczjill

また、これらの8チャネルキットのうち48個を、私が知っているデバイスに接続することはできません。16(またはそれ以上)64 GBのREG ECCを単一サーバーに調光するシステムがありますが。しかし、これらはまったく安くはありません。
-drescherjm

2

実際にはいくつかのシナリオで行われます。オペレーティングシステム/アプリスタックが十分に小さい場合は、完全にRAMで実行できます。もちろん、受け入れられた答えが持っているすべての欠点があります。しかし、それは可能であり、実際に起こります。

人気のあるLinuxディストリビューションであるPuppy Linuxをご覧ください。その仕組みのページでは、RAMからの実行について説明しています:http : //puppylinux.org/wikka/howPuppyWorks


そしてもちろん、クラスター環境では、アプリスタックを分散/ネットワークファイルシステムに保持し、PXEなどを介してベースOSを提供し、必要に応じてノードをディスクレスで実行できます。
アイシン

2

答えは部分的に次のように答えられると思います。

前提:

  • これらのタイプのRAMのみが安価であり、大量に生産および販売されます。
  • RAMメーカーは製品を販売したいと考えています。
  • 低価格は利益を上げるために大量の販売を要求する
  • 大規模なユーザーベースは、確立されたメモリ技術を使用します
  • 新しいメモリテクノロジーが広く採用されるには何年もかかります
  • メモリスロットは、前述のユーザーベースのより小さなデバイスで非常に制限されています
  • モバイル技術が増加しています
  • 1Bilの少なくとも0.1%。PCユーザーは128GB以上のRAMを選択する可能性があります(推測)
  • 需要の高い技術の更新は、新しい技術の世代よりも高い利益になります

メモリスロットの数が限られていることを考えると、重要な解決策は、内部寸法が小さく、メモリスタックが大きい、および/または3Dスタッキングという形で提供されます。両方のプロセスは、過去36か月以上にわたって予想どおりに進行しました。

質問は次のとおりです。「DDR3最大メモリサイズ」またはセマンティック:「DDR3なぜ16GBを超えるメモリモジュールがないのですか

そして答えは:

DDR3規格は、512メガビットから8ギガビットのチップ容量を可能にし、効果的に16ギガバイトsrc)の最大メモリモジュールサイズを有効にします。

このテクノロジーマップで概説されているように、DDR4はこれを変更します。

ここに画像の説明を入力してください

結果:

  • 半デッドロックメモリマーケット
  • Apple Macbook Proの祭典がわずか16GBで止まる
  • クラウドサービスまたはリモートサービスの需要の増加(これらの仮想マシンとInMemoryデータベースを収容するには、多くの開発者やエンジニアがローカルで同じように喜んで実行します)
  • ... ???

ヘネスの徹底した投稿に対するいくつかの警告:

  • 共通デスクトップ(DDR3)RAMは安価ですが、それほど安くはありません:データ集約的なバックグラウンドのために特定の人々がそれを購入するのに十分安い
  • RAMは電源を切ると内容を失います:人間は揮発性メモリよりも難しい問題に取り組んできました。2010年以降の「揮発性メモリの処理」に関する特許とソリューションは、それを証明しています。
  • RAMはより多くの電力を使用します。モバイルデバイスの未使用のメモリ(バンク)を選択的にオフにします。また、800W GPUと比較して1Wから2Wは見劣りします
  • 多くのDIMMソケットが必要になります。チップテクノロジーは通常どおり進歩しているため、より高いメモリチップのオプションは存在しませんが、チップメーカーは喜んで大量に販売します。
  • また、プログラムを実行するにはRAMが必要です。ただし、pkr298OSとプログラム全体がRAMに読み込まれることを前提としています。ハードドライブ/ SSDを廃止すべきではありません。

DRAMの未使用のメモリバンクをオフにすることは問題です。DRAMテクノロジーでは、セルをリフレッシュする必要があります。これを漏れやすいバケツに合わせます。水(電気)で満たすと1になり、空にすると0になります。悲しいことに、バケツは漏れやすく、浅い水の中に立っています。バケツ一杯になると、水位に合うまでゆっくりと空になります。空のバケツは、水位に合うまでゆっくりと動きます。しばらくすると、バケットの状態が何であるかがわかりません。
ヘネス

これを解決するために、誰かが時々バケットを通り過ぎます。ほぼ満杯の場合、バケットがいっぱいになります。ほとんど空の場合、完全に空になります。これはリフレッシュです。メモリセルのリフレッシュにはエネルギーが必要であり、DRAMの内容を保持したまま完全にオフにすることはできません。---これを回避する方法があります。たとえば、SRAMは外部のリフレッシュを必要とせず、コンテンツを保持できますが、より多くのシリコンが必要です(したがって、より小型または高価なチップ)。
ヘネス

1

あなたは実際に正しいです近い将来、すべてのストレージとメモリはnano ramの形式になります。NRAMは基本的に数原子幅の「機械的」スイッチです。状態を維持するために電流を必要としないため、エネルギー効率が良く、冷却する必要がありません。これには2つの理由があります。1つは、メモリへのアクセスが非常に高速で、携帯電話などの小さなデバイスでテラバイトのデータを保持できることです。詳細については、http//www.nantero.com/mission.htmlおよびhttp://en.wikipedia.org/wiki/Nano-RAMをご覧ください


0

他の人が言っているように、RAMは揮発性で、SSDの10倍のコストのようなものです。

しかし、そこISあなたが記述しているものにかなり近づくそこの製品は-残念ながら、私は名前を思い出すことができません。

それは、CFカードとバッテリーを組み合わせたRAMベースのドライブ(IIRC max 64gb)です。システムの電源を入れると、CFカードの内容がRAMにコピーされます(まだロードされていない場合、CFカードからの要求に対応すると考えられます)。シャットダウン時に、RAMの内容がCFカードにコピーされます。 -バッテリーが十分に大きいため、消耗する前にこれを終了できます。

安くはありません。

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