图片无法显示,请右键点击新窗口打开图片

BiscuitOS 内存管理之分页大专题订阅入口

DAX(Direct Access) 是 Linux 内核中的一项功能,允许应用程序以直接的方式从非易失性内存(如非易失性双端口 RAM、NVDIMM 或 3D XPoint 存储类内存)中访问数据,而无需通过标准的文件 I/O 路径或页缓存(Page Cache). DAX 提供了低延迟和高性能的特性,适用于需要快速和直接访问非易失性内存的工作负载,例如数据库或虚拟机。以下是关于 DAX 的一些关键特点和用途:

  • 直接内存访问: DAX 允许应用程序以直接的方式在非易失性内存中读取和写入数据,而无需将数据复制到内核中的页缓存。这减少了内核的介入,提高了数据访问的效率
  • 低延迟: 由于 DAX 绕过了页缓存,因此可以实现更低的 I/O 延迟,这对于响应时间敏感的应用程序非常有用
  • 高性能: DAX 可提供更高的数据访问性能,特别是在大规模内存中和大数据集的情况下
  • 一致性和原子性: DAX 确保在非易失性内存中的数据访问是原子性的,并且提供了数据一致性的保证。这对于要求数据可靠性的应用程序非常重要

XFS 文件系统上是 DAX 支持,XFS 是一种高性能的文件系统,支持在适当的硬件上启用 DAX 以获得更好的性能。启用 XFS-DAX 后,XFS 文件系统可以利用 DAX 的优势,直接从非易失性内存中读取和写入数据,而无需通过页缓存。这对于某些工作负载(如大规模数据库或虚拟机磁盘)来说是非常有益的. 要启用 XFS-DAX,您需要在文件系统挂载时使用 “-o dax” 选项,或者在 “/etc/fstab” 中的相应条目中添加 dax 选项. 在 Linux 启用 XFS-DAX 需要打开如下内核宏:

CONFIG_NVDIMM_PFN=y
CONFIG_NVDIMM_DAX=y
CONFIG_DAX=y
CONFIG_DEV_DAX=y
CONFIG_DEV_DAX_PMEM=y
CONFIG_DEV_DAX_KMEM=y
CONFIG_NVMEM=y
CONFIG_NVMEM_SYSFS=y
CONFIG_FS_DAX=y
CONFIG_FS_DAX_PMD=y
CONFIG_XFS_FS=y

图片无法显示,请右键点击新窗口打开图片

XFS-DAX 文件系统提供映射文件的 mmap 接口使用了 xfs_file_mmap 函数,xfs_file_mmap 函数为文件映射的 VMA 提供的 vm_ops 接口为 xfs_file_vm_ops,该数据接口实现了 fault 接口 xfs_filemap_fault,那么文件映射 VMA 发生缺页时 xfs_filemap_fault 函数会被调用.

图片无法显示,请右键点击新窗口打开图片

图片无法显示,请右键点击新窗口打开图片

BiscuitOS 内存管理之分页大专题订阅入口

图片无法显示,请右键点击新窗口打开图片