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