linux xip io,Linux DAX(直接访问)详细信息

在讨论你的例子之前,有点免责声明:这是一个有点简化的现实版本,有很多极端案例和例外我都没有解释,但它应该足以让你明白发生了什么……

块设备

令你困惑的是不加区分地使用“块设备”术语.块设备通常是HDD,CD,SSD,……正如名称本身所说,您无法读取/写入这些设备的单个字节,您需要将它们写入块(通常为512字节大小).

块设备有一些寄存器和小的存储区映射到处理器地址空间,可用于读取设备状态,发送命令等.但是,它们(通常)不提供访问它们直接存储的数据的方法.这通常通过向设备发送命令并等待硬件中断信号来完成,即DMA操作(读取或写入)已完成.

因此,您可以看到,使用这些设备,不使用主存储器(DRAM)有点困难(如果不是不可能),因为它们的操作涉及DMA操作等. DAX在这些情况下所做的是删除访问数据所涉及的一些开销,但不多于此.

DIMM格式* NVM

然而,最近一些DIMM格式*非易失性存储器(NVM)已经被引入市场.这些设备将其全部内容映射到处理器地址空间,因此可由处理器通过存储和加载指令直接访问.内核甚至不需要知道正在访问这些设备:所有意图和目的都是好像进程正在访问常规的DRAM支持的内存页面.

* DIMM格式只是一个例子.还有一些其他现有的接口,如PCI正在做…

令人困惑的部分

这就引起了混乱……直到最近,“存储设备”实际上是“块设备”的同义词. Linux内核将这些新的NVM识别为存储设备/块设备,并通过在/ dev中创建条目来对待它们,就像使用SSD一样. (如果您没有这些NVM支持的设备之一,您可以通过指定常规DRAM的给定内存范围应被视为NVM.See here以获取有关如何执行该操作的更多信息来模拟该设备.)

如果您在这样的设备上创建文件系统,它将像使用常规HDD一样工作.它将尝试通过将内容缓存到DRAM来提高性能.启用DAX的文件系统所做的是避免创建缓存,缓存旨在加快访问速度,但在这些情况下,最有可能会降低性能.

Even if the kernel or its modules are stored on a file system that

supports DAX on a block device that supports DAX, they will still be

copied into RAM.

我无法找到这种行为的可靠原因,但是我认为这是出于安全性和性能原因而做的,以保证内核和内核模块不会从慢速(比DRAM慢)设备运行在内核执行期间,它们的内容不会被搞乱.

但是,只要保留在用户空间中,只使用NVM支持的内存直接从NVM运行可执行文件不应该出现任何问题.

看看英特尔的Pmem.io项目和惠普的Atlas项目.它们是专门为此类事物创建的编程接口.

现在关于你的例子:

# mount -t ramfs -o dax,size=8m ext2 /ramdisk

# mount

rootfs on / type rootfs (rw,size=59124k,nr_inodes=14781)

proc on /proc type proc (rw,relatime)

tmpfs on /tmp type tmpfs (rw,relatime)

ext2 on /ramdisk type ramfs (rw,relatime,dax,size=8m)

#

您没有创建RAM-Backed EXT2文件系统.您正在使用具有虚拟名称ext2的ramfs创建RAM支持的文件系统.如果您像这样安装它会没有区别:

# mount -t ramfs -o dax,size=8m winter_is_coming /ramdisk

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值