RAMは安いし、SSDよりはるかに速い。ただ、揮発性があるだけです。では、なぜコンピュータには大量のRAMが搭載されていないのでしょうか?コンピュータはもっと速くなるのではないでしょうか?
もちろん、現在のOSでは全くサポートされていないかもしれませんが、RAMがこのように使われていない理由はあるのでしょうか?
135 pkr298 2013-08-27
RAMがそのように使われていない理由はいくつかあります
- 一般的なデスクトップ(DDR3)RAMは安いですが、そこまで安くはありません。特に比較的大きなDIMMを買いたい場合
- RAMは電源を切ると内容を失います。そのため、起動時に内容を再読み込みする必要があります。100GBのSSDサイズのRAMディスクを使用した場合、100GBをディスクからコピーする間に2分程度の遅延が発生します
- RAMはより多くの電力を使用します(DIMMあたり2~3ワット、アイドルSSDと同じくらい)
- これだけ多くの RAM を使用するためには、マザーボードには多くの DIMM ソケットとそのトレースが必要になります。通常、これは 6 つ以下に制限されています。(ボードのスペースが多ければ多いほど、コストがかかり、価格も高くなります)
- 最後に、プログラムを実行するためにはRAMも必要になるので、通常のRAMサイズで作業する必要があります(例:18GiB、使用すると予想されるデータを保存するのに十分なサイズ)
そうは言ってもはい、RAMディスクは存在します。DIMMソケット付きPCIボードや、非常に高いIOpsを実現するアプライアンスとしても。(SSDがオプションになる前は、主に企業のデータベースで使用されていました)。これらのものは、安くはありませんが
ここでは、ローエンドのRAMディスクカードを製品化した2つの例を紹介します
これを行うには、RAM ディスクを共通の作業メモリに作成するだけではなく、もっと多くの方法があることに注意してください
You can:
- 揮発性(ダイナミック)メモリを搭載した専用の物理ドライブを使用します。アプライアンスとして、またはSAS、SATAまたはPCI[e]インターフェイスのいずれかを使用します
- バッテリーバックアップされたストレージでも同じことができます(バックアップ電源が有効である限り、初期データをコピーする必要はありません)
- DRAMSではなく、スタティックRAMを使用することができます(よりシンプルで、より高価です)
- すべてのデータを保持するために、フラッシュまたは他の永続的なストレージを使用することができます(警告:フラッシュは通常、書き込みサイクル数が制限されています)。フラッシュを唯一のストレージとして使用している場合は、SSDに移行したことになります。すべてのデータをダイナミックRAMに保存し、パワーダウン時にフラッシュバックアップに保存する場合は、アプライアンスに戻ったことになります
Amiga の RAD: 生き残った RAM ディスクのリセットから IOPS、ウェアレベリング、そして G-d knows what まで、説明したいことは他にもたくさんあると思います。しかし、ここでは短くして、もう一つだけ項目を挙げておきます
DDR3(現在のDRAM)の価格とSSDの価格の比較
- DDR3:1GiBあたり10ユーロ、または1TiBあたり10,000ユーロ
- SSDだかなり少ない。1/4~1/10程度)
180 Hennes 2013-08-27
オペレーティングシステムでは、ページキャッシュですでにこれが行われています
コンピューティングでは、ページキャッシュは、ディスクキャッシュと呼ばれることもありますが、より迅速なアクセスのためにオペレーティングシステムによってメインメモリ(RAM)に保持されているディスクバックアップページの「透過的な」キャッシュです。ページキャッシュは通常、ページングメモリ管理機能を持つカーネルに実装されており、アプリケーションからは完全に透過的です
あなたがディスクからページを読むとき、あなたのオペレーティングシステムは、メモリにそのデータをロードし、それがそのメモリのためのより良い使用を持っているまで、そこに残します。あなたが十分なメモリを持っている場合, あなたのOSは、一度だけ各ページを読んで、その後、メモリからそれを使用します.OSが実際のディスクIOを行う唯一の理由は、それがメモリ内にすでにないページを読み取る必要がある場合、またはページが(その場合、あなたはおそらくそれがディスクに保存したい)に書き込まれている場合です
この方法で物事を行う利点の一つは、ハードドライブ全体をメモリにロードする必要がないということです。もう一つの利点は、OSがより多くのメモリを必要とするときはいつでもキャッシュを破棄することができるということです(それは、次のディスクの読み取りが少し遅くなることを持っている方が良いです, 彼らはメモリが不足しているため、プログラムがクラッシュしているよりも)。また、ユーザが何をラムディスクに入れるべきか、入れないべきかを手動で決める必要がないのも便利です。最も頻繁に使うものは自動的にメインメモリに保存されます
大量のメモリを使用しているにもかかわらず、アプリケーションが思ったほど高速に動作していない場合、安全に動作しているために遅くなっている可能性が高いです。例えば、SQLite は書き込みが完了するのを待たないようにすると桁違いに速くなりますが、データベースはきれいにシャットダウンしないと完全に壊れてしまいます
また、Linuxディストロでは、/tmp
は通常ラムディスクになっていますが、これはデータが失われても大丈夫だからです。/tmp
に書き込まれたデータが多すぎると、メモリを使い果たしてしまう可能性があるからです
71 Brendan Long 2013-08-27
アラン・シャットコ氏が質問のコメントで指摘しているように、RAMは実は安くない
以下、データポイントです。Googleで「4GB RAM、64GB SSD、1TB HDD(機械式ハードディスク)」と検索すると、以下のような費用が出てきます(これは2013年8月25日のものです)
4GB RAM = $32 – $36 => RAM = 1GBあたり~$8
64GB SSD = $69 – $76 => SSD = 1GBあたり~$1
1TB HDD=80ドル => HDD=1GBあたり0.08ドル
おっと、HDDはRAMの100倍も安いんですね。そしてSSDはRAMの8倍も安い
(さらに、他の回答で指摘されているように、RAMは本質的に揮発性なので、他の形式の永続的なストレージが必要です)
44 Suman 2013-08-27
コンテンツ生成のための即時の読み書き操作はすべてローカルマシンの RAM ディスクで行っています。MongoDB のジャーナリングフォルダや、コンパイラ、Python のインタプリタ、標準ライブラリもそこに保存しています。このディスクはシャットダウン時に保存され、起動時に復元されます。2 番目の RAM ディスクは 64 メガバイトで、インターネットブラウザのキャッシュフォルダはすべてそこを指しています
仕事に適したツールを使えば、それが答えだと思います。私は7200rpmのWestern DigitalよりもRAMディスクを使用して30〜1000倍速でデータを生成しています
私が使っているプログラムです。http://www.romexsoftware.com/en-us/primo-ramdisk/
…そして、32ギガのラムが200ドル以下なのに、なぜこれが一般的になっていないのか、私は見ていません
9 blakev 2013-08-27
はい、これは市場に出てきている多くのインメモリデータベースの前提です。その一例がSAP HANAです。この考え方は、RAMは安価であり、パフォーマンスの観点からは、RAM上での読み取り/書き込み操作はディスク操作よりも1000倍速いということです。そのため、データのほとんどはRAMに保存され、古いデータはコールドストレージ(ディスクなど)にリサイクルされるというデータエージング戦略を定義します
5 mithrandir 2013-08-27
Short explanation:
最初にアプリケーションを実行すると、ハードディスクやネットワークから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 Dee 2013-08-28
これは素晴らしい質問であり、私は回答を魅力的に感じています。私はOracle DBAとしてこれについてコメントするつもりですが、私の回答はOracleデータベースに特化したものです。これは、Oracleで作業するときに多くの人々が行う大きな間違いです。これは、他のアプリケーションにも適用されるかどうかはわかりません。これはオフトピックではなく、専門的な回答を意味しています
Oracleでパフォーマンスをチューニングする場合、実際にはボトルネックを解消することになります。ほとんどの人は言いませんが、制約理論に基づいています。https://en.wikipedia.org/wiki/Theory_of_constraints
メモリがボトルネックになっているとは限りません。オラクルにはメモリを管理するための複雑なメカニズムがあり、他の領域がボトルネックになっている場合、メモリを増やすだけで物事が遅くなることがあります。非常に一般的な例を挙げてみましょう
クエリーは遅いようです。RAMを増やせば、メモリの方がディスクよりも速いので、クエリの応答速度を上げるべきだというのがコンセンサスです。というのが、まぁ……Oracleではこのようにデータのメモリ管理を行っています。Oracleには、特定の業務に割り当てられているメモリの場所がいくつかあります。なので、これらのメモリを増やすことができます。データに使われる領域は「バッファキャッシュ」と呼ばれています。これは一連のリンクされたリストです(バージョンが上がるごとに増える傾向にあります)。クエリ中にブロックがディスク上で見つかるたびに、どのリストに入れるかを決定するためにハッシュアルゴリズムが実行されます。どこのリストに入れるかは、タッチカウントアルゴリズムに基づいています (オラクルのサポートサイトで説明されているので、お金を払って入手する必要があります。)
しかし、クエリを実行すると、Oracleはその時点で検索したバッファチェインのラッチを取り出します。このラッチ(注: これはロックではありません。違いが分からない場合は「ラッチ」でググってみてください)は、読み込みの間、そのチェーン上の他のすべての操作をブロックします。つまり、読み込みと書き込みをブロックします(これは、Oracleがロックは読み込みをブロックしないと主張しているのとは全く異なります)
これは、チェーン内のブロックを読み取るときに、オラクルが「要求された」頻度に基づいてブロックを移動させるために必要です。要求の多いブロックは一番上に移動され、要求の少ないブロックは一番下に残ってエージアウトされます。リンクされたリストを読み込んでブロックを移動するセッションを2回も持つことはできません
メモリのサイズを大きくすると、各リンクされたリストのサイズが大きくなります。これにより、リストを読み込むのにかかる時間が長くなります。下手なクエリや複雑なクエリでは、リンクされたリストを何万、何百万回も読み込んでしまうことがあります。それぞれの読み取りは高速ですが、その数が多いとラッチが取られてしまい、他のセッションをブロックしてしまいます。Oracleはこれを「論理IO」と呼んでいます。この用語はOracleに特有のもので、ITの他の部分では別の意味を持つかもしれません)。)
そのため、リストが長くなり、本当に悪いSQLを使用している場合、SQL文はラッチをより長く保持することになります。メモリを増やすとパフォーマンスが低下することがあります。ほとんどの場合、これは起こらないでしょう。人々は多くのお金を費やしても、何のメリットも感じないでしょう。そうは言っても、バッファキャッシュのメモリを増やす必要がある場合もありますが、これが適切かどうかを知るためには、ボトルネックを適切に特定しなければなりません。この投稿では、これをどのように分析するのかを議論することはできません。DBAフォーラムを参照してください。そこで議論している人もいます。かなり複雑です
これが起こる可能性のある他のソフトウェアの部分の具体的な例を誰か持っていますか?The Goal」という素晴らしいビジネス書があります。このプロセスは、パフォーマンスの問題を評価するときにOracle DBAが行うことと非常に似ています。これは、MBAプログラムの標準的な読み物であることが多いです。IT専門職の方には非常に価値のある一冊です
4 Bob 2013-08-28
RAMは安いかもしれませんが、従来のストレージほどではありません
3TBのハードドライブ(99ドル)を持っています。HDDの引用
そして、各(719ドル)で3TBのために48個必要になります。RAMの引用
それは合計34,512ドル対99ドルになります。3TBのRAMを実行するために必要なハードウェアの価格は言うまでもありません
3 Michael Irey 2013-08-28
これは実際にいくつかのシナリオで行われています。オペレーティングシステム/アプリケーションスタックが十分に小さい場合、それを完全にRAMで実行することができます。もちろん、それは受け入れられている答えが持っているすべての欠点を持っています。しかし、それは可能であり、実際に起こります
人気のあるLinuxディストリビューション、Puppy Linuxを見てみましょう。彼らの仕組みのページでは、RAMからの実行について書かれています。http://puppylinux.org/wikka/howPuppyWorks
2 David Hewitt 2013-08-28
部分的には以下のように答えられると思います
Premise:
- その手のRAMだけが大量に生産されて売られている安いものです
- RAMメーカーは製品を売りたいのです
- 低価格の需要は利益を回すために偉大なボリュームを販売しています
- 大規模なユーザーベースは、確立されたメモリ技術を使用しています
- 新しいメモリ技術は、広く採用されるまでに何年もかかります
- メモリスロットは、ユーザーベースの小型デバイスでは非常に限られています
- モバイル技術が増えてきています
- 1Bilの0.1%以上。PCユーザーは128GB RAM以上を選ぶかもしれない(推測)
- 需要の高い技術の更新は、新しい技術の世代よりも高い利益を回します
メモリスロットの数が限られていることを考えると、重要な解決策は、内部寸法を小さくしたより高いメモリチップ、および/または3Dスタッキングの形で提供されます。どちらのプロセスも、過去36ヶ月以上の間に予想通りに進んでいます
そこで質問なのですが、”DDR3の最大メモリサイズ “か、意味的には”DDR3はなぜ16GB以上のメモリモジュールがないのか”
そして、その答えは
DDR3規格では、チップ容量が512メガビットから8ギガビットまで対応しており、効果的に最大16ギガバイトのメモリモジュールサイズを実現しています(src)
DDR4は、このテクノロジーマップで説明されているように、これを変更します
Result:
- セミデッドロックされたメモリ市場
- Apple Macbook Pro extravagaganzaはわずか16GBで止まっています
- クラウドやリモートサービス(仮想マシンやInMemoryデータベースを収容するために、多くの開発者やエンジニアが喜んでローカルで実行するのと同じように)に対する需要が高まっています
- …???
ヘネスの徹底した投稿にはいくつかの注意点があります
- 一般的なデスクトップ(DDR3)のRAMは安いですが、それほど安くはありません:特定の人がデータを多用する背景のために購入するには十分に安いです
- RAMは電源を切ると内容を失う。人間は揮発性メモリよりも難しい問題に取り組んできた。2010年以降の「揮発性メモリの取り扱い」に関する特許とソリューションは、それを証明するものです
- RAMはより多くの電力を使用します: モバイル機器では、未使用のメモリ(バンク)を選択的にオフにします。また、1Wから2Wは800WのGPUと比較しても遜色ありません
- チップ技術は相変わらず進歩しており、より高いメモリチップという選択肢が存在するだけでなく、チップメーカーも喜んで大量に販売してくれます
- また、プログラムを実行するためのRAMも必要になります。本当です。しかし、
pkr298
は、OS全体とプログラムがRAMにロードされることを前提としており、ハードドライブ/SSDを廃止すべきではありません
2 Lorenz Lo Sauer 2013-08-29
近い将来、すべてのストレージとメモリはナノラムの形になるでしょう。NRAMは基本的に数原子幅である “機械的な “スイッチであり、それは状態を維持するために電流を必要としないので、それはエネルギー効率が高く、冷却する必要はありませんし、スイッチが非常に小さいので、密度は非常に高く、これは2つの理由で良いです、1つは、メモリへのアクセスが非常に高速であり、あなたは携帯電話のような小さなデバイス上でテラバイトのデータを持つことができるようになります。http://www.nantero.com/mission.html とこのhttp://en.wikipedia.org/wiki/Nano-RAMをご覧ください
1 noamtcohen 2013-08-28
他の人も言っていますが、RAMは揮発性が高く、SSDの10倍のコストがかかります
しかし、そこには、あなたが説明していることにかなり近い製品があります。残念ながら、私は名前を思い出すことができません
これはRAMベースのドライブ(IRC最大64GB)にCFカードとバッテリーを結合したものです。システムの電源を入れると、CFカードの内容がRAMにコピーされます(まだ読み込まれていない場合はCFカードからのリクエストに応じていると思います)。シャットダウン時には、RAMの内容がCFカードにコピーされます
安くはないですよ
0 Loren Pechtel 2013-08-29