RAM 很便宜,而且比 SSD 快得多。它只是易变的。那么为什么计算机没有大量 RAM,并且在启动时,将所有内容从硬盘驱动器 / SSD 加载到 RAM 并从那里运行所有内容,假设没有真正需要在内存之外保留任何内容?计算机不是更快吗?
当然,当前的操作系统可能根本不支持这一点,但是有什么理由不以这种方式使用 RAM?
Hen*_*nes 181
不以这种方式使用 RAM 有几个原因:
话虽如此:是的,RAM 磁盘确实存在。甚至作为带有 DIMM 插槽的 PCI 板和用于非常高 IOps 的设备。(在 SSD 成为一种选择之前,主要用于企业数据库中)。不过这些东西并不便宜。
以下是两个已投入生产的低端 RAM 磁盘卡示例:
请注意,除了在公共工作内存中创建RAM 磁盘之外,还有更多方法可以做到这一点。
你可以:
我确信还有更多的方法可以描述,来自 Amiga RAD:将幸存的 RAM 磁盘重置为 IOPS、磨损均衡和 Gd 知道什么。但是,我将缩短这一点,仅列出一项:
DDR3(当前 DRAM)价格与 SSD 价格:
Bre*_*ong 71
操作系统已经这样做了,页面缓存:
在计算中,页面缓存(通常称为磁盘缓存)是操作系统保存在主内存 (RAM) 中的磁盘支持页面的“透明”缓存,以便更快地访问。页缓存通常在具有分页内存管理的内核中实现,并且对应用程序完全透明。
当您从磁盘读取页面时,您的操作系统会将这些数据加载到内存中,并将其保留在那里,直到它更好地使用该内存为止。如果您有足够的内存,您的操作系统将只读取每个页面一次,然后从内存中使用它。操作系统执行真正的磁盘 IO 的唯一原因是它需要读取一个不在内存中的页面,或者如果一个页面被写入(在这种情况下,您可能希望将其保存到磁盘)。
以这种方式做事的一个优点是您不必将整个硬盘驱动器加载到内存中,这在不适合的情况下很有用,也意味着您不会浪费时间读取应用程序不读取的文件需要。另一个优点是,只要操作系统需要更多内存,就可以丢弃缓存(最好让您的下一个磁盘读取稍微慢一点,而不是让您的程序因为内存不足而崩溃)。此外,用户无需手动决定 ramdisk 中应包含或不包含的内容也很有用:您最常使用的内容将自动保存在主内存中。
如果您有大量内存,但您的应用程序运行速度没有您预期的那么快,那么它们很可能会变慢,因为它们正在安全运行。例如,如果您告诉它不要等待写入完成,SQLite 会快几个数量级,但如果您不干净地关闭,您的数据库将完全损坏。
此外,/tmp
通常是 Linux 发行版上的 ramdisk,因为如果该数据丢失也没关系。尽管如此,关于这是否是一个好主意仍有一些争论,因为如果写入太多数据/tmp
,您可能会耗尽内存。
Sum*_*man 44
正如 Alan Shutko 在对这个问题的评论中指出的那样,RAM 实际上并不便宜。
这里有一些数据点。当我在 Google 上搜索 4 GB RAM、64 GB SSD 和 1 TB HDD(机械硬盘)时,以下是我看到的成本(这是 2013 年 8 月 25 日的数据):
4 GB RAM = $32 - $36 => RAM = ~$8 每 GB
64 GB SSD = 69 美元 - 76 美元=> SSD = 每 GB 约 1 美元
1 TB 硬盘 = 80 美元=>硬盘 = 每 GB 0.08 美元
哇!HDD 比 RAM 便宜 100 倍!SSD 比 RAM 便宜 8 倍。
(另外,正如其他答案中所指出的,RAM 本质上是易失性的,因此您需要某种其他形式的持久存储。)
我在本地机器上的 RAM 磁盘中为内容生成执行所有即时读/写操作。我还将我的 MongoDB 日志文件夹以及我的编译器和 Python 解释器和标准库存储在那里。该磁盘在关闭时保存并在启动时恢复。我使用的第二个 RAM 磁盘是 64 兆字节,我所有的 Internet 浏览器的缓存文件夹都指向那里;那个在关闭时丢失,并在它满时自我刷新。
为我的工作使用正确的工具,这就是我给你的答案。我使用 RAM 磁盘生成数据的速度比使用 7200rpm Western Digital 的速度快 30-1000 倍。
这是我正在使用的程序:http : //www.romexsoftware.com/en-us/primo-ramdisk/
...当 32gigs 的 Ram 低于 200 美元时,我不明白为什么这没有变得更普遍。
小智 5
是的,这是市场上出现的许多内存数据库的前提。一个例子是 SAP HANA。这个想法是 RAM 很便宜,从性能的角度来看,RAM 上的读/写操作比磁盘操作快 1000 倍。所以大部分数据都保存在 RAM 中,然后您定义一个数据老化策略,使用该策略将旧数据回收回冷存储(即磁盘)。