持久内存支持

作者:Zack Brown

持久内存在 Linux 中仍然有点像特殊项目——RAM 在重启后仍能保持其状态。Dave Hansen 最近评论说,用户应用程序默认情况下不能简单地使用持久内存,这是一种令人遗憾的状态。它们必须经过专门编码才能识别和利用它。Dave 希望系统将持久内存视为普通的旧内存。

他的解决方案是编写一个新的驱动程序,该驱动程序将充当内核和任何可用的持久内存设备之间的管道,像管理系统上的任何其他 RAM 芯片一样管理它们。

Jeff Moyer 对此表示怀疑。他指出,在 2018 年,英特尔 宣布了其 Optane 非易失性内存的内存模式。内存模式将允许系统将持久内存作为普通内存访问——显然正是 Dave 所说的。

但是 Keith Busch 指出,Optane 内存模式是特定于架构的,适用于英特尔的 Optane 硬件,而 Dave 的代码是通用的,适用于任何包含持久内存的设备。

Jeff 接受了这个纠正,但他仍然指出,持久内存必然比普通 RAM 慢。如果 Dave 的补丁的目标是在不修改用户代码的情况下使持久内存可供用户代码使用,那么内核将如何决定给用户软件提供快速 RAM 还是慢速持久内存?他说,这似乎是一个至关重要的问题。

Keith 回复说,更快的 RAM 通常会优先于较慢的持久内存。目标是在需要时提供较慢的内存。

Dave 还评论说,英特尔的内存模式非常棒!他对它没有任何批评,并且他说使用内存模式而不是他的补丁有很多优点。但是,他也认为这些补丁本质上是互补的,并且它们可以并排在支持内存模式的系统上使用。

他还补充说:

以下是您可能想要使用它而不是内存模式的几个原因:

1. 内存模式是全有或全无的。要么 100% 的持久内存用于内存模式,要么什么都不用。使用此设置,您可以(理论上)非常精细地(128MB)将 PMEM 分配给易失性或持久性用途。我们有一些实际问题需要解决才能达到 128MB 的值,但我们可以实现。

2. 内存模式的容量是持久内存的大小。DRAM 容量“丢失”了,因为它被用作缓存。使用此设置,您可以获得 PMEM+DRAM 的内存容量。

3. DRAM 在内存模式下充当缓存,而缓存可能导致不可预测的延迟。由于内存模式是全有或全无的,因此您的整个内存空间都暴露于这些不可预测的延迟。此解决方案允许您在需要时保证 DRAM 延迟。

4. 新的“层”内存暴露给软件。这意味着您可以构建分层应用程序或基础设施。云提供商可以销售更便宜的 VM,这些 VM 使用更多的 PMEM,而更昂贵的 VM 使用 DRAM。这在内存模式下是不可能的。

讨论最终没有结果,但类似这样的补丁不可避免地会进入内核。如今,系统资源正变得非常多样化。连接一堆不稳定的硬件并期望合理的行为开始越来越成为一个严肃的想法。这一切似乎都指向一个更开源的物联网概念——一个世界,您的手机、笔记本电脑、汽车和您大脑中的芯片都是一个通用的 Linux 系统的一部分,该系统根据即时可用性热插拔和拔出元素,而不是销售产品的公司的特定专有概念。

注意:如果您在上面被提及并想在评论区上方发布回复,请将包含您的回复文本的消息发送至 ljeditor@linuxjournal.com。

Zack Brown 是 Linux JournalLinux Magazine 的技术记者,并且是前“Kernel Traffic”每周新闻通讯和“Learn Plover”速记打字教程的作者。他于 1993 年在他的 386 电脑上安装了 Slackware Linux,配备 8MB 内存,并被开源社区彻底震撼。他是 Crumble 纯策略棋盘游戏的发明者,您可以用几块纸板自己制作。他还喜欢写小说、尝试动画、改革拉班舞谱、设计和缝制自己的衣服、学习法语以及与朋友和家人共度时光。

加载 Disqus 评论