微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux 在内存模式下如何处理 Intel 的 Optane 持久内存模块?

如何解决Linux 在内存模式下如何处理 Intel 的 Optane 持久内存模块?

我想知道当底层系统在内存模式下使用持久内存模块(近内存 DRAM 缓存和 NVRAM 作为主内存)时,Linux 内核是否做了什么特别的事情或执行了任何优化。我试过查看驱动程序/nvdimm,但似乎这里的所有内容都集中在应用程序直接模式下,在 DAX 文件中使用 MMAP,但在内存模式下,它在语义和语法上与使用 DRAM 没有区别。

Linux 是否进行了任何优化,还是所有的事情都在硬件中处理?有人可以将我链接到在 Linux 内核中执行任何内存模式优化的地方吗?提前致谢!

解决方法

上游 Linux v5.2-rc1 引入了内核参数 page_alloc.shuffle,这是一个布尔标志,如果以下两个条件都为真,它会自动启用:

  • 不会通过将 page_alloc.shuffle=0 添加到内核参数列表来手动禁用。
  • 内核在具有支持 ACPI 6.2 的固件的系统上运行,并且固件已通过异构内存属性表 (HMAT) 与内核通信,该系统在至少一个内存域中具有内存侧缓存.

启用此参数后,内核页面分配器会随机分配其空闲列表,以减少内存端缓存的冲突。

自动启用它的系统示例包括带有部分或完全配置为在缓存模式下运行的 MCDRAM 的 KNL/KNM 和带有部分或完全配置为在内存模式下运行的持久内存的 CSX/CPX。在所有这些系统上,都有一个直接映射的内存端缓存,尽管许多实现细节不同。

自由列表改组提供了可持续的良好性能,但不一定是最佳的或接近最佳的。这与起初由于良好的内存端缓存利用率而以高性能运行形成对比,但随后由于缓存冲突增加,性能会随着时间的推移而下降。

也就是说,我认为没有人测试过空闲列表改组对在内存模式下运行持久内存的系统性能的影响,即使它是自动启用的。

目前内核中没有接受其他潜在的内存模式优化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。