如果 RAM 便宜,为什么我们不将所有内容加载到 RAM 并从那里运行?

pkr*_*pkr 136 memory speed

RAM 很便宜,而且比 SSD 快得多。它只是易变的。那么为什么计算机没有大量 RAM,并且在启动时,将所有内容从硬盘驱动器 / SSD 加载到 RAM 并从那里运行所有内容,假设没有真正需要在内存之外保留任何内容?计算机不是更快吗?

当然,当前的操作系统可能根本不支持这一点,但是有什么理由不以这种方式使用 RAM?

Hen*_*nes 181

不以这种方式使用 RAM 有几个原因:

  1. 普通台式机 (DDR3) RAM 很便宜,但没那么便宜。特别是如果您想购买相对较大的 DIMM。
  2. 断电时 RAM 会丢失其内容。因此,您需要在启动时重新加载内容。假设您使用 100GB 的 SSD 大小的 RAM 磁盘,这意味着从磁盘复制 100GB 时大约有两分钟的延迟。
  3. RAM 使用更多功率(比如每个 DIMM 2-3 瓦,与空闲 SSD 大致相同)。
  4. 要使用如此多的 RAM,您的主板将需要大量 DIMM 插槽和它们的走线。通常这仅限于六个或更少。(更多的电路板空间意味着更多的成本,因此价格更高。)
  5. 最后,您还需要 RAM 来运行您的程序,因此您需要正常的 RAM 大小(例如 18GiB,足以存储您希望使用的数据)。

话虽如此:是的,RAM 磁盘确实存在。甚至作为带有 DIMM 插槽的 PCI 板和用于非常高 IOps 的设备。(在 SSD 成为一种选择之前,主要用于企业数据库中)。不过这些东西并不便宜

以下是两个已投入生产的低端 RAM 磁盘卡示例:

请注意,除了在公共工作内存中创建RAM 磁盘之外,还有更多方法可以做到这一点。

你可以:

  1. 使用带有易失性(动态)内存的专用物理驱动器。可以作为设备使用,也可以使用 SAS、SATA 或 PCI[e] 接口。
  2. 您可以对电池后备存储执行相同的操作(无需将初始数据复制到其中,因为只要备用电源保持有效,它就会保留其内容)。
  3. 您可以使用静态 RAM 而不是 DRAMS(更简单,更昂贵)。
  4. 您可以使用闪存或其他永久存储来保存所有数据(警告:闪存通常具有有限数量的写入周期)。如果您仅使用闪存作为存储,那么您只需移至 SSD。如果您将所有内容都存储在动态 RAM 中并在断电时保存到闪存备份中,那么您又回到了设备上。

我确信还有更多的方法可以描述,来自 Amiga RAD:将幸存的 RAM 磁盘重置为 IOPS、磨损均衡和 Gd 知道什么。但是,我将缩短这一点,仅列出一项:

DDR3(当前 DRAM)价格与 SSD 价格:

  • DDR3:每 GiB 10 欧元,或每 TiB 10,000 欧元
  • SSD:显着减少。(大约 1/4 到 1/10。)

  • +1 表示“RAM 便宜,但没那么便宜”。快速搜索显示,SSD 驱动器目前的售价在 75 美分到 1 美元之间,具体取决于容量和制造商。DDR3 RAM 模块,根据容量的不同,每 GB 售价在 7-10 美元之间,因此 RAM 与 SSD 成本的比率可以高达 15:1。 (30认同)
  • +1 达到两个关键点:HD 仍然比 RAM 便宜,RAM 是易失性的。 RAM 是您的工作台,而您的 HD 是仓库。纳夫 sed。 (12认同)
  • `RAM 在断电时会丢失其内容。` 确切地说,只有易失性 RAM 会这样做,但 [非易失性 RAM](http://en.wikipedia.org/wiki/Non-volatile_random-access_memory) 即使在断电时也会保留所有内容,例如 [Flash 芯片](http://en.wikipedia.org/wiki/Flash_memory)。从这个意义上说,SSD 与 RAM 没有区别,而是它的一个子类型。 (2认同)

Bre*_*ong 71

操作系统已经这样做了,页面缓存

在计算中,页面缓存(通常称为磁盘缓存)是操作系统保存在主内存 (RAM) 中的磁盘支持页面的“透明”缓存,以便更快地访问。页缓存通常在具有分页内存管理的内核中实现,并且对应用程序完全透明。

当您从磁盘读取页面时,您的操作系统会将这些数据加载到内存中,并将其保留在那里,直到它更好地使用该内存为止。如果您有足够的内存,您的操作系统将只读取每个页面一次,然后从内存中使用它。操作系统执行真正的磁盘 IO 的唯一原因是它需要读取一个不在内存中的页面,或者如果一个页面被写入(在这种情况下,您可能希望将其保存到磁盘)。

以这种方式做事的一个优点是您不必将整个硬盘驱动器加载到内存中,这在不适合的情况下很有用,也意味着您不会浪费时间读取应用程序不读取的文件需要。另一个优点是,只要操作系统需要更多内存,就可以丢弃缓存(最好让您的下一个磁盘读取稍微慢一点,而不是让您的程序因为内存不足而崩溃)。此外,用户无需手动决定 ramdisk 中应包含或不包含的内容也很有用:您最常使用的内容将自动保存在主内存中。

如果您有大量内存,但您的应用程序运行速度没有您预期的那么快,那么它们很可能会变慢,因为它们正在安全运行。例如,如果您告诉它不要等待写入完成,SQLite 会快几个数量级,但如果您不干净地关闭,您的数据库将完全损坏。

此外,/tmp通常是 Linux 发行版上的 ramdisk,因为如果该数据丢失也没关系。尽管如此,关于这是否是一个好主意仍有一些争论,因为如果写入太多数据/tmp,您可能会耗尽内存。

  • 很好的答案。操作系统还具有 Superfetch 等功能,它会在启动时将常见请求的数据从磁盘加载到 RAM 中。 (5认同)

Sum*_*man 44

正如 Alan Shutko 在对这个问题的评论中指出的那样,RAM 实际上并不便宜。

这里有一些数据点。当我在 Google 上搜索 4 GB RAM、64 GB SSD 和 1 TB HDD(机械硬盘)时,以下是我看到的成本(这是 2013 年 8 月 25 日的数据):

哇!HDD 比 RAM 便宜 100 倍!SSD 比 RAM 便宜 8 倍。

(另外,正如其他答案中所指出的,RAM 本质上是易失性的,因此您需要某种其他形式的持久存储。)

  • @symcbean 购买具有类似企业特征的 SSD 将花费超过 1000 美元。 (3认同)
  • RAM 比 SSD 快几个数量级(没有写入磨损问题),这比旋转锈和玻璃快几个数量级。并且确定您可以以 80 美元的价格购买 1TB 磁盘,但请尝试在具有 SCSI 或光纤通道连接的 15k rpm 盘片上找到该存储空间。您正在查看 4 x 250Gb @ ~ 250 美元加上 BBU 控制器的成本(约 500 美元),这使得成本与 SSD 大致相同。 (2认同)

bla*_*kev 9

我在本地机器上的 RAM 磁盘中为内容生成执行所有即时读/写操作。我还将我的 MongoDB 日志文件夹以及我的编译器和 Python 解释器和标准库存储在那里。该磁盘在关闭时保存并在启动时恢复。我使用的第二个 RAM 磁盘是 64 兆字节,我所有的 Internet 浏览器的缓存文件夹都指向那里;那个在关闭时丢失,并在它满时自我刷新。

为我的工作使用正确的工具,这就是我给你的答案。我使用 RAM 磁盘生成数据的速度比使用 7200rpm Western Digital 的速度快 30-1000 倍。

这是我正在使用的程序:http : //www.romexsoftware.com/en-us/primo-ramdisk/

...当 32gigs 的 Ram 低于 200 美元时,我不明白为什么这没有变得更普遍。

8 演出 RAM 磁盘日常 SATA III 硬盘

  • 你知道操作系统已经为你缓存了东西,对吧? (4认同)

小智 5

是的,这是市场上出现的许多内存数据库的前提。一个例子是 SAP HANA。这个想法是 RAM 很便宜,从性能的角度来看,RAM 上的读/写操作比磁盘操作快 1000 倍。所以大部分数据都保存在 RAM 中,然后您定义一个数据老化策略,使用该策略将旧数据回收回冷存储(即磁盘)。