我有一个程序需要大量 RAM 来运行一个周末的计算项目。显然,我没有超级计算机 RAM,作为消费者,我的极限是 32GB。Windows 以页面文件的形式具有内存虚拟化功能,它扩展了我可以通过使用硬盘来利用的虚拟内存量,尽管传统上速度要慢得多。M.2 NVMe 驱动器是快速数据访问 SSD 的新热点。如果我有一个 1TB M.2NVMeSSD 主驱动器,并分配 480GB 内存作为我的页面文件,这是否意味着我可以有效地拥有足够的内存?还是无论如何这都会非常慢?它会杀死我的驱动器吗?程序甚至可以同时主动使用所有可用的 RAM + 虚拟 RAM 吗?
这个概念似乎好得令人难以置信,我只需补足与磁盘空间相同的 RAM 即可,所以我需要知道我的理论有什么问题。
答案1
内存访问的速度将与 NVMe 驱动器的速度一样快或一样慢。
请注意,现代 SSD(即使是 NVMe SSD)也有局限性。它们速度很快,但速度通常取决于写入的数据量。
您会看到,快速高耐久性闪存价格昂贵,因此为了抵消这笔费用,它们通常有一个小型超快速 SLC 写入缓存(昂贵的部分),由相对较慢的 MLC 闪存(较便宜)支持。该缓存可能是 1 到 8 甚至 16GB,但一旦它被填满,您需要给驱动器时间来“赶上”并将缓存写入驱动器较慢的区域。
对于写入的前几个 GB,您可能会看到高达 2 到 3GB/s 的速度,但根据您的 SSD,这很可能会下降到 500MB/s 或更低。
读取应该没问题,并且在整个驱动器上实现高速,只是初始写入会有这么大的性能提升。这是否可以接受取决于您的使用情况。您可能愿意等待初始填充以获得以后的额外速度。
现代固态硬盘也声称其使用寿命“写入的兆兆字节数”(TBW) 很高,但我仍然不想全天候不断地重写驱动器的每个块。每次写入将要稍微缩短驱动器的使用寿命,但无论如何它可能会持续使用数年。
你能使用 SSD 作为页面文件设备,但您需要注意它的局限性。
您可能会发现使用“按需”云服务更好,您可以在适当配置的服务器上租用时间。从时间方面来看,这将是一项更好的投资,因为它可能会快得多(因为它将拥有所有实际 RAM)并且成本相当。
或者,如果这是您自己的程序,您可能需要考虑更好地编写它以利用低内存并自己进行文件处理,而不是期望操作系统完成所有工作。
对于您访问的每个被分页到驱动器的 RAM 块,在读取该块时,您的程序将被暂停。如果另一个块需要先从物理内存中逐出,那么该时间将更长。性能损失多少是值得怀疑的,取决于您的程序。虚拟内存可能会通过将管理工作转移给操作系统来使您的任务更轻松,但您会失去自己控制数据访问时的控制和粒度。