RAMは安価で、SSDよりはるかに高速です。揮発性です。それで、どうしてコンピュータはたくさんのRAMを持っていないのでしょうか、そして起動時に、ハードドライブ/ SSDからRAMにすべてをロードし、そこからすべてを実行するだけです。メモリの?コンピュータはもっと速くないでしょうか。
もちろん、現在のオペレーティングシステムはこれをまったくサポートしていないかもしれませんが、RAMがこのように使用されない理由はありますか?
RAMがそのように使用されていない理由がいくつかあります。
そうは言っても:はい、RAM個のディスクが存在します。 DIMMソケット付きの PCIボードとして 、非常に高いIOps用のアプライアンスとしても。 (主にSSDが選択肢になる前に企業データベースで使用されていました)。しかし、これらのことは 安くない です。
これが本番になったローエンドのRAMディスクカードの2つの例です。
共通の作業メモリに RAMディスク を作成する以外にも、これを実行する方法がたくさんあります。
あなたはできる:
Amiga RADから、生き残ったRAMディスクをIOPSにリセットしたり、ウェアレベリングを行ったり、G-dが何を知っているのかを説明することができると思います。ただし、これを短くして、もう1つだけ項目をリストします。
DDR3(現在のDRAM)の価格とSSDの価格
オペレーティングシステムはすでに ページキャッシュ を使ってこれを行います。
コンピューティングにおいて、しばしばディスクキャッシュと呼ばれるページキャッシュは、より速いアクセスのためにオペレーティングシステムによってメインメモリ(RAM)に保持されたディスクバックページの「トランスペアレント」キャッシュである。ページキャッシュは通常、ページングメモリ管理を使用してカーネルに実装され、アプリケーションに対して完全に透過的です。
あなたがディスクからページを読むとき、あなたのオペレーティングシステムはそのデータをメモリにロードして、それがそのメモリのためによりよく使われるまでそこに残します。十分なメモリがある場合、OSは各ページを一度だけ読み込み、それ以降はメモリからそれを使用します。 OSが実際のディスクIOを実行する唯一の理由は、まだメモリにないページを読み込む必要がある場合、またはページが書き込まれている場合です(この場合は、ディスクに保存することをお勧めします)。 ).
こうすることの1つの利点は、ハードドライブ全体をメモリにロードする必要がないということです。これは、収まらない場合に便利です。また、アプリケーションでは不可能なファイルの読み取りに時間を浪費しないという意味です。必要。もう1つの利点は、OSがより多くのメモリを必要とするときはいつでもキャッシュを破棄できることです(メモリ不足のためプログラムをクラッシュさせるよりも、次のディスクの読み込みを少し遅くするほうが良いです)。また、RAMディスクに入れるべきかどうかをユーザーが手動で決定する必要がないことも便利です。あなたが最も頻繁に使うものは自動的にメインメモリに保存されます。
あなたが大量のメモリを持っているが、あなたのアプリケーションがあなたが期待するほど速く走っていないならば、それらは安全に走っているので彼らが遅くなる可能性があります。たとえば、SQLiteは書き込みが完了するのを待たないように指示した場合、桁違いに速くなりますが、正しくシャットダウンしないとデータベースは完全に壊れます。
また、/tmp
は通常LinuxディストリビューションのRAMディスクです。そのデータが失われても問題ないからです。あまりにも多くのデータが/tmp
に書き込まれると、メモリ不足になる可能性があるので、それが良い考えであるかどうかについてはまだ議論があります。
Alan Shutkoがその質問に対する彼のコメントで指摘しているように、RAMは実際には安くはありません。
ここにいくつかのデータポイントがあります。 Googleで4 GBのRAM、64 GBのSSD、1 TB HDD(Mechanical Hard Drive)を検索したところ、次のようなコストが発生しました(2013年8月25日)
4 GB RAM = $ 32 - $ 36 =>RAM = 1 GBあたり$ 8
64 GB SSD = $ 69 - $ 76 =>SSD = GBあたり1ドル
1 TB HDD = $ 80 =>HDD = GBあたり0.08ドル
おっ! HDDはRAMよりも100倍安いです。そしてSSDはRAMよりも8倍安いです。
(さらに、他の回答で指摘されているように、RAMは本質的に揮発性であるため、他の形式の永続記憶域が必要です。)
ローカルマシンのRAMディスクにコンテンツを生成するために、すべての即時読み取り/書き込み操作を行います。私のMongoDBジャーナルフォルダ、私のコンパイラ、Pythonインタプリタ、標準ライブラリもそこに格納します。このディスクはシャットダウン時に保存され、起動時に復元されます。私が使う2番目のRAMディスクは64メガバイトで、私のインターネットブラウザのキャッシュフォルダはすべてそこを指しています。その1つはシャットダウン時に失われ、いっぱいになるとフラッシュします。
私が考えている仕事に合った道具を使うのが、私があなたに与える答えでしょう。私は私の7200rpm Western DigitalよりもRAMディスクを使って30-1000倍速くデータを生成しています。
これは私が使っているプログラムです: http://www.romexsoftware.com/en-us/primo-ramdisk/
...そして32ギグのラムが200ドル未満であるとき、私はなぜこれがより一般的になっていないかわかりません。
はい、これは市場に出回っている多くのインメモリデータベースの前提です。その一例がSAP HANAです。その考え方は、RAMは安価で、パフォーマンスの観点から見ると、RAMの読み取り/書き込み操作はディスク操作よりも1000倍高速です。そのため、ほとんどのデータはRAMに保持され、その後、古いデータをコールドストレージ(つまりディスク)にリサイクルするデータエージング戦略を定義します。
これは素晴らしい質問です、そして私はその反応が魅力的だと思います。これについては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の職業について読むことは非常に貴重です。
簡単な説明:
アプリケーションが初めて実行されると、アプリケーションはハードディスクまたはネットワークから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 )
実際にはいくつかのシナリオで行われます。オペレーティングシステム/アプリケーションスタックが十分に小さい場合は、完全にRAMで実行できます。もちろん、受け入れられた答えが持っているすべての不利な点があります。しかし、それは可能であり起こります。
人気のあるLinuxディストリビューションであるPuppy Linuxを見てください。彼らがどのように動くかページはRAMから走ることについて話します: http://puppylinux.org/wikka/howPuppyWorks
答えの一部は次のように答えられると思います。
前提:
限られた数のメモリスロットを考えると、重要な解決策は、より小さい内部寸法を有するより高いメモリチップ、および/または3Dスタッキングの形で来る。どちらのプロセスも、過去36年以上にわたって予想どおりに進行しました。
質問は「DDR3最大メモリサイズ」または意味的には「DDR3」です。なぜ16GBを超えるメモリモジュールがないのですか
そして答えは:
DDR3規格では、512ギガビットから8ギガビットのチップ容量が可能で、実質的に最大16ギガバイトのメモリモジュールサイズを可能にします( src )
このテクノロジマップで概説されているように、DDR4はこれを変更します。
結果:
Hennesの徹底的な投稿に対するいくつかの注意点:
pkr298
は、OSやプログラム全体がRAMにロードされることを前提としています。ハードドライブ/ SSDを廃止するべきではないということですあなたは実際に正しいです近い将来には、すべてのストレージとメモリはnano RAM上の形式になるでしょう。 NRAMは基本的に数原子幅の「機械的」スイッチです。状態を維持するために電流を必要としないのでエネルギー効率が良く、冷却する必要もありません。スイッチが非常に小さいので密度が非常に高く、これは、2つの理由で有効です。1つは、メモリへのアクセスが非常に高速で、携帯電話などの小型デバイスに数テラバイトのデータを保存できることです。もっと読みたい方はこちらを参照してください。 http://www.nantero.com/mission.html そしてこれ )http://ja.wikipedia.org/wiki/ Nano- RAM