我正在使用 linux(debian 10) 中的持久内存
我正在使用 linux 内核 5.0.3,我有一个问题。
我的理解是正确的,linux将持久内存虚拟化为磁盘并将内存映射为virt_addr。
因此,操作系统通过内核通过文件系统访问持久内存。但我认为这是一种开销。如果持久内存已经被内存映射,那么直接通过 virt_addr 访问它会非常有效。
所以我想知道有没有办法在内核中启动持久内存的 virt_addr。
谢谢。
我正在使用 linux(debian 10) 中的持久内存
我正在使用 linux 内核 5.0.3,我有一个问题。
我的理解是正确的,linux将持久内存虚拟化为磁盘并将内存映射为virt_addr。
因此,操作系统通过内核通过文件系统访问持久内存。但我认为这是一种开销。如果持久内存已经被内存映射,那么直接通过 virt_addr 访问它会非常有效。
所以我想知道有没有办法在内核中启动持久内存的 virt_addr。
谢谢。
目前(据我所知)非易失性内存太新,太稀有/异国情调,没有人真正知道如何处理它(除了把它当作快速 SSD 对待)。
请注意(对于通用用途,在 HPC 之外)存在一些严重的问题。即:
a) 不能保证某些其他操作系统(或实用程序)不会被启动并丢弃非易失性内存中的任何内容;所以你根本不能假设它是非易失性的。注意:我仍然希望有一天能够影响所有操作系统供应商(例如英特尔自己或 UEFI 联盟)的人有智慧说“嘿,所有非易失性内存都必须用 GPT 格式化分区,以便一个操作系统使用的区域不会被另一个操作系统践踏;并且此特定 GUID 应用于为任何操作系统都可以丢弃的易失性事物保留的区域”。
b) 如果没有加密,它会显着增加“冷启动攻击”的风险。具体来说,对于敏感信息(密码、密钥等),您迫切希望将其存储在易失性的地方,而非易失性内存只会让一切变得更糟。注意:最近的 AMD 和 Intel CPU 确实支持(物理内存)加密;但我不知道它在各种内核中的支持程度如何,我完全希望(如果它完全支持的话)它的支持非常糟糕(例如,“即使对于根本不需要的数据,也总是付出加密的代价它”的方式,鼓励每个人禁用它以获得更好的性能)。
“操作系统通过文件系统访问持久内存”,但这不是唯一的方法。
您可以将持久内存配置为devdax
模式,并在没有文件系统帮助的情况下对其进行操作。
$ndctl create-namespace -m dax -e namespace0.0 -f
您应该检查libpmem2以了解更多信息。
ps:@Brendan 让我觉得我在 2015 年……