NVM file system trends and future directions

目的

为了使内存/存储堆栈更高效,有必要合并不同的堆栈层,以减少数据复制和移动。而我们研究 NVM 的目的就在于我们想让内存/存储堆栈具有以下特点:

  1. 低延迟
  2. 高密度
  3. 低开销
  4. 高可扩展性
  5. 可靠性
  6. 耐用性

虽然目前没有一种存储技术可以提供以上全部的特性,但是 NVM 可以缩小内存与存储之间的距离。在这个观点的驱动下,人们致力于创建标准、接口、功能和编程模型等,以使操作系统、编程语言和应用程序能够有效地采用和使用 NVM。

工具和标准

  1. ACPI(Advanced Configuration and Power Interface):
    从6.0版本开始,加入了对 NVDIMM 的固件接口的支持。ACPI 与 UEFI 知乎专栏

  2. The JEDEC Byte Addressable Energy Backed Interface:
    目的是为简化 BIOS 和 PM 的访问,具体做法是向 OS 提供了一个简化的接口。

  3. Linux PMEM 驱动:
    Linux PMEM 基于 BRD(Block RAM Driver),BRD 设计之初是为了支持 NVMDIMM。PMEM 在 Linux Kernel 4.1 之后加入。PMEM 使用系统保留的内存寻址范围,PMEM 允许用户模拟持久内存,因此无论内存是否是非易失内存,都可以创建并挂载文件系统。目前,PMEM 驱动程序正在更新,以支持 ACPI NFIT 的特性。
    同时 PMEM 也支持把非易失内存模拟为块设备,作为块设备管理非易失内存,可以避免坏块等内存错误导致的系统崩溃等问题,同时块设备的原子性也可以得到保证。

  4. DAX(Direct Access):
    DAX 的思想与 XIP (eXecute In Place)十分类似,DAX 的核心思想是绕过 Linux 的 page cache,尽可能避免页面副本带来的额外开销,通过 DAX,应用软件可以直接通过 mmap 访问 PM,为了支持 DAX,文件系统和块驱动程序必须实现组成 DAX 接口的几个函数,从而允许内核执行特定的操作,比如使用页帧号分配页。

体系结构支持和一些限制

对 PM 的体系结构支持目前还存在缺失,一个例子是当前处理器的有限的物理寻址能力,对于 TB 甚至 PB 级别的 PM,显然超出了当前处理器的寻址能力,目前的处理方法是把 PM region 映射到 CPU 的物理地址空间,但是由此带来的影响目前尚不清楚:这种方式增加了 TLB 和 cache 的 miss,增加了内存归零和复制大量内存的开销,显然内存的扩展是处理器设计所需要考虑的一个重要内容。

处理器的 cache 并未针对 PM 做出优化,而目前的一些 barrier 原语以及 cache flush 操作虽然有助于 PM 的处理(个人感觉体现在数据一致性和持久性上面),但是由于其昂贵的开销导致了性能缺陷,我所理解文中的意思应该是因为这些操作大多是序列化操作,我们知道一些强序列的指令在 CPU 中是有可能让整个流水线停顿的,因此会带来很大的性能缺陷。而且当 cache line 刷新的时候,通常不保证直接接写回 NVM,关于这部分可以查看体系结构中 store buffer 等内容(不要脸的放上自己写的内

### 解决 `nvm` 文件未找到错误 当遇到 `ERROR open \settings.txt: The system cannot find the file specified` 错误时,通常是因为环境配置不正确或某些必要的文件缺失。以下是详细的解决方案: #### 1. 检查并修复环境变量设置 确保 `%NVM_HOME%` 和 `%NVM_SYMLINK%` 已经被正确添加到系统的环境变量中[^2]。 - **%NVM_HOME%**: 设置为 `C:\Users\user\AppData\Roaming\nvm` - **%NVM_SYMLINK%**: 设置为 Node.js 的安装目录,通常是 `C:\Program Files\nodejs` 可以通过以下命令来验证这些变量是否已正确设置: ```powershell echo %NVM_HOME% echo %NVM_SYMLINK% ``` 如果上述命令返回为空,则需要手动添加这些变量至系统环境变量列表中。 #### 2. 验证 nvm 安装路径下的 settings.txt 存在与否 确认 `C:\Users\user\AppData\Roaming\nvm\settings.txt` 是否存在。若不存在此文件,尝试重新下载最新版本的 nvm 或者从备份中恢复该文件[^1]。 #### 3. 使用管理员权限运行 CMD 并测试 nvm 功能 以管理员身份启动命令提示符窗口,并执行一些基本指令来检验 nvm 是否正常工作[^3]: ```bash nvm version nvm arch nvm list available ``` 以上操作可以帮助判断当前环境中是否存在其他潜在问题影响到了 nvm 的正常使用。 #### 4. 清理残留数据重置 nvm 状态 (可选) 有时旧版 nvm 可能会遗留下来造成冲突的数据,在这种情况下可以考虑清理掉所有关于 nvm 的注册表项以及用户目录下对应文件夹后再重新安装新版本的 nvm 来解决问题。不过这一步骤较为激进,请谨慎行事。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值