【CXL】cxl-cli、ndctl、daxctl管理linux内核中NVDIMM设备子系统

Intel不断在存储器这边布局:

  • Intel于 2019 年 4 月发布了傲腾持久性内存(Optane DC persistent memory),这是目前市场上唯一商用的持久性内存(Pmem)存储设备。同时也在操作系统层面开发了一系列用于管理Pmem的工具,提供了丰富完备的文档。Pmem官方网站
  • 同年发布了CXL(Compute Express Link)高速互连总线协议,是一种突破性的CPU到设备的互连。目前已经迭代到CXL3.0,其支持的type3扩展内存设备也有助于解决内存墙和IO墙的问题。

但是傲腾Pmem因为“过度宣传”、价格偏高等等原因,Intel于2022年11月结束傲腾业务,但是承诺在已经卖出去的傲腾内存生命周期内,仍然维护PMDK。公告:PMDK 更新和我们的长期支持策略
同时CXL逐渐成为业界唯一的设备间高速互连标准,Intel转而将更多的资源和精力投入到CXL的研究中,如果应用程序和操作系统用户空间中的抽象已根据 CXL 规范实现,Intel预计 PMDK 可以在功能上与 CXL 的type3扩展内存设备一起使用。
那么cxl-cli就是在原有管理NVDIMM设备(含Pmem)工具套件(ndctl、daxctl)中新增的,专门管理CXL设备的工具,下面简单介绍相关调研情况:

文章目录

  • 一、NVDIMM简介
    • 1. 背景与功能简介
    • 2. 硬件连接方式
    • 3. NVDIMM-N、NVDIMM-F、NVDIMM-P
    • 4. 操作系统层面的访问方式
    • 5. NVDIMM中几个相关概念
  • 二、cxl-cli、ndctl、daxctl的一般命令
  • 三、其他参考

一、NVDIMM简介

计算机系统中的两种主要存储设备:内存和外存。

  • 内存的访问时延在ns级,称作易失性存储器,存储介质是DRAM;
  • 外存的访问时延在us级,称作非易失性存储器,存储介质是闪存等,包括SSD固态硬盘、磁盘等。

1. 背景与功能简介

由于内存和外存之间的性能差距过大,业界提出了NVDIMM技术,NVDIMM(Non-Volatile Dual In-line Memory Module)是一种集成了非易失性存储器(NVM)和DRAM的存储模块,它能够在系统断电时保存数据,从而实现更快的启动速度和更可靠的数据存储,缩短了内存和外存之间的性能差距。
在这里插入图片描述
上图中间的NVM/PM层便是NVDIMM,因为NVDIMM设备在功能表现上其实也就相当于是持久内存设备,关于傲腾持久内存和最新的NVDIMM-P设备的区别,ChatGPT给出如下解释:

傲腾持久内存和NVDIMM-P都是集成了高速非易失性存储器(如3D XPoint)和DRAM的内存模块,它们在一定程度上可以被视为相似的技术。但是它们之间还是有一些区别的:

  • 傲腾持久内存是英特尔公司推出的一种产品品牌,而NVDIMM-P则是一种通用的内存模块标准,可以由多家厂商生产。
  • 傲腾持久内存是直接由英特尔生产和销售的内存模块,它具有英特尔的技术优势和支持,而NVDIMM-P则需要由厂商根据标准设计和生产,品质和性能可能有所不同。
  • 傲腾持久内存需要特定的平台支持才能发挥最佳性能,如英特尔Xeon Scalable处理器和英特尔Optane SSD固态硬盘,而NVDIMM-P则可以在兼容标准的平台上使用。
  • 傲腾持久内存具有更高的性能和更低的延迟,可以提供更高的IOPS和吞吐量,而NVDIMM-P则相对较为普及,价格相对较为亲民。

总之,傲腾持久内存和NVDIMM-P都是集成了高速非易失性存储器和DRAM的内存模块,它们的区别在于品牌、技术支持、平台兼容性、性能和价格等方面。(不保真但是我觉得大差不差)
2023.4.1:有论文提到,傲腾持久内存便是NVDIMM-P的可商用实现,底层是基于3D XPoint技术。
(PerMA-Bench: Benchmarking Persistent Memory Access)

2. 硬件连接方式

在硬件层面,NVDIMM技术直接将NVM如闪存,插入内存插槽DIMM 上。CPU直接通过内存总线访问NVM,由此缩短CPU访存路径,使得在层次化存储系统中,NVDIMM 的性能远远超过了PCIe接口的闪存固态盘的性能,其数据访问延迟可以降低至几百甚至几十纳秒。

CXL三种设备(智能网卡、GPU等加速器、内存扩展设备)都是插在传统PCIe插槽的。相比NVDIMM直接插在内存插槽的连接方式,CXL设备这种连接方式势必要延迟高一点,毕竟PCIe插槽距离CPU的物理距离更远。但是CXL这种方式兼容更多的设备,可扩展性高;另外,针对访存路径,CXL.mem子协议中有独特的实现,也提高了访存性能。

3. NVDIMM-N、NVDIMM-F、NVDIMM-P

NVDIMM的标准由SNIA (Storage Networking Industry Association,全球网络存储工业协会)组织制定。NVDIMM技术有三种标准: NVDIMM-N、NVDIMM-F与NVDIMM-P,三种规范拥有着不同的产品形态、系统架构与工作机制等。
在这里插入图片描述

  • NVDIMM-N 标准:在 2014 年第一次提出 NVDIMM-N 标准,主要针对 DRAM 的断电易失性,通过在 DRAM内存条上增加超级电容以及闪存介质,对断电时数据进行保护。在断电时,在电容的电源续航能力的作用下,NVDIMM-N设备内部控制器将DRAM中的数据迁移到闪存中,在突然断电的情况下保护数据,其性能和普通内存条是相同的
  • NVDIMM-F标准:2015年提出,NVDIMM-F原理是设计使用DIMM接口的闪存块设备,直接插入内存插槽,处理器直接通过内存总线访问设备,利用内存通道的高性能降低访问延迟。由于闪存介质本身性能限制,其性能仍低于普通内存,访问延迟在10微秒这个数量级,但是远远高于PCIe接口的闪存固态盘。
  • NVDIMM-P标准:2016年提出,NVDIMM-P是一种综合NVDIMM-N 与NVDIMM-F的存储形态,想法是使用DRAM与闪存组成的混合存储架构,利用数据局部性原理,将DRAM作为闪存介质的高速缓存,其性能介于NVDIMM-N 以及NVDIMM-F之间,大约为100 纳秒,容量上还远大于NVDIMM-N,可以达到与NVDIMM-F一样的容量。
    在这里插入图片描述
    NVDIMM-P使用控制器连接DRAM 与闪存,这是一种混合存储架构,内部主控制器是开发NVDIMM-P设备的设计重点,决定着整个设备的性能。

4. 操作系统层面的访问方式

  1. 通过pmem方式使用

即按照持久内存的方式使用,CPU直接使用load/store指令访问NVDIMM设备(字节寻址),跳过OS内核空间的page cache、通用块层,也无需特别的驱动作为访问中转(因为此种访问方式是内存式访问)。这种访问方式下,需要应用程序自己管理NVDIMM存储空间,即将NVDIMM部分存储空间映射到用户空间,交由应用程序自己使用。

下图中最右边的虚线和右侧第二条线都是这种访问方式。不同的是右侧第二条访问线需要通过OS文件系统提供的接口访问,并且文件系统需支持DAX(direct access)机制(ext4,xfs已支持)——用户通过文件系统访问设备绕过page cache、通用块层,直接使用mmap将文件映射到应用程序地址空间中,而文件位于NVDIMM设备上。这样的好处在于用户可以使用文件系统实现的permission、quota等机制。
在这里插入图片描述

  1. 通过块设备(btt/sector)方式使用(BLK方式)

通过块设备方式来访问NVDIMM,这样的优势在于可以使用linux kernel实现的软raid、mirror、加密/压缩等中间层驱动所带来的功能。

  1. Pmem+块设备混合访问

上述具体细节可以继续阅读:
简书:nvdimm
Pmem官网:PMEM and BLK Modes

5. NVDIMM中几个相关概念

  • namespace:在NVDIMM设备上,软件或者硬件可以将NVDIMM设备划分几个区域,这些区域就是namespace。

    • 这几个不同的区域可以采用不同的访问方式它们,分别是:Pmem方式、BLK方式和 Pmem+BLK方式,所以namespac大小、范围和访问方式这三个基本属性。
    • 通过ndctl工具可以查看、创建和修改主机上的NVDIMM的namespace
  • region:一个或多个namespace组成了一个region,一个region内所有的namespace访问方式都必须是相同的。(访问方式只有:Pmem方式、BLK方式和 Pmem+BLK方式。)

  • lable:是一段持久存储区域,用于记录NVDIMM的哪一部分属于哪个namespace,每个NVDIMM都有一个。

下图是Pmem官网给出的一个示例图片,三个NVDIMM设备组成了Region0,该Region上划分了一个Namespace0.0,该Namespace在OS内核上表现为一个/dev/pmem0,通过DAX文件系统向应用程序所在的用户空间提供一个持久内存池。Pmem官网:Namespaces
在这里插入图片描述

二、cxl-cli、ndctl、daxctl的一般命令

根据Pmem官网介绍,cxl-cli、ndctl、daxctl是用来管理NVDIMM设备的工具,其中ndctl、daxctl用来管理Pmem和Namespace,cxl-cli用来管理CXL设备。Pmem官网:Installing NDCTL, DAXCTL, and CXL-CLI Utilities

那这样来看,目前Intel应该是将CXL扩展内存设备看做linux内核中的一种NVDIMM设备子系统,但是,但是NVDIMM是插在内存插槽上,CXL设备是插在PCIe插槽上,按照插槽不同,两种设备应该不能混为一谈。

同时在高版本的Linux内核(6.3.0-rc3)中已经加入了适配的驱动程序,目前还在不断开发中(2023.3):
Linux内核文档:Compute Express Link Memory Devices
Linux内核文档:LIBNVDIMM Non-Volatile Devices

有关这三个工具的命令手册在Pmem官网:NDCTL User Guide都有较为详细的介绍,下面简单列举一些:

$ man -k ndctl # 显示与"libnvdimm"子系统设备(非易失性内存)相关的命令
ndctl-activate-firmware		# 在内存设备上激活暂存的固件
ndctl-check-labels			# 确定给定的DIMM是否具有有效的命名空间索引块
ndctl-check-namespace		# 检查命名空间元数据的一致性
ndctl-clear-errors			# 清除给定命名空间上的所有错误(坏块)
ndctl-create-namespace		# 创建或重新配置命名空间
ndctl-destroy-namespace		# 销毁给定的命名空间
ndctl-disable-dimm			# 禁用一个或多个空闲DIMM
ndctl-disable-namespace		# 禁用给定的命名空间
ndctl-disable-region		# 禁用给定区域及其所有后代命名空间
ndctl-enable-dimm 			# 启用一个或多个DIMM
ndctl-enable-namespace		# 启用给定的命名空间
ndctl-enable-region			# 启用给定区域及其所有后代命名空间
ndctl-freeze-security 		# 设置给定DIMM拒绝未来的安全操作
ndctl-init-labels			# 初始化DIMM或一组DIMM上的标签数据区域
ndctl-inject-error			# 在命名空间偏移处注入媒体错误
ndctl-inject-smart			# 在DIMM上执行智能阈值/注入操作
ndctl-list					# 以json格式输出平台NVDIMM设备拓扑和属性
ndctl-load-keys				# 将KEK和加密的密码短语加载到密钥环中
ndctl-monitor				# 监视nvdimm对象的智能事件
ndctl-read-infoblock		# 读取并可选地解析命名空间中的信息块
ndctl-read-labels			# 读取DIMM或一组DIMM上的标签区域
ndctl-remove-passphrase		# 停止DIMM在掉电时锁定并需要密码短语访问媒体
ndctl-sanitize-dimm			# 对给定的NVDIMM执行加密破坏或覆盖
ndctl-setup-passphrase		# 为NVDIMM设置和启用安全密码短语
ndctl-start-scrub 			# 启动地址范围擦除(ARS)操作
ndctl-update-firmware		# 更新给定设备的固件
ndctl-update-passphrase		# 更新NVDIMM的安全密码短语
ndctl-wait-overwrite		# 等待覆盖操作完成
ndctl-wait-scrub			# 等待地址范围擦除(ARS)操作完成。
ndctl-write-infoblock		# 生成并写入信息块。
ndctl-write-labels			# 将数据写入DIMM的标签区域。
ndctl-zero-labels			# 将DIMM的标签区域清零。
$ man -k daxctl 
daxctl 						# Linux内核设备-DAX功能的枚举和配置命令
daxctl-create-device 		# 创建devdax设备
daxctl-destroy-device 		# 销毁devdax设备
daxctl-disable-device 		# 禁用devdax设备
daxctl-enable-device 		# 启用devdax设备
daxctl-list 				# 在JSON格式中列出平台的Device-DAX区域、设备和属性
daxctl-migrate-device-model # 加入/sys/bus/dax设备模型,允许使用替代的Device-DAX实例驱动程序
daxctl-offline-memory 		# 关闭系统内存模式下的设备内存
daxctl-online-memory 		# 在系统内存模式下启用设备内存
daxctl-reconfigure-device 	# 将dax设备重新配置为不同的模式
$ man -k cxl 
cxl 				# CXL平台的枚举和配置命令
cxl-list 			# 列出支持CXL的内存设备及其属性(以JSON格式)
cxl-read-labels 	# 从CXL memdev上读取标签区域
cxl-write-labels 	# 向memdev写入数据到标签区域
cxl-zero-labels 	# 在一组memdev上清除标签区域
cxl_new 			# 创建一个作为所有库操作句柄的新库上下文对象
libcxl 				# 通过sysfs(5)和ioctl(2)接口与CXL设备进行交互的库

三、其他参考

两个NVDIMM相关的PPT:
NVDIMM - CHANGES ARE HERE SO WHAT’S NEXT?
NVDIMM-N cookbook: A soup-to-nuts primer on using NVDIMM-ns to improve your storage performance
一个未曾谋面的师兄硕士论文:
张煜. NVDIMM固态盘的闪存芯片控制器与可靠性研究[D].国防科技大学,2017.DOI:10.27052/d.cnki.gzjgu.2017.000222.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23917.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

和ChatGPT 比一比谁更懂Kubernetes?

有时,很难得到关于云原生世界中棘手话题的明确答案。哪个是最好的服务网格?平台工程只是devops的另一个标签吗?多云是一种风险吗? 如果你无法从一个人那里得到直截了当的答案——为什么不问一台机器呢? 因此&#xf…

大模型“云上经济”之权力游戏

光阴者百代之过客。 世人皆过客,软件亦如此。 人工智能已有新旧之分。 网友戏称,新人工智能是ChatGPT,旧人工智能是“之前那些”。 历史在重演。 云计算在美国问世的时候,否定论调居多。 一个常见的否定论调是「做生意不用上…

Ilya Sutskever(OpenAI 首席科学家)谈论构建 AGI、alignment、未来模型和启蒙等问题...

来源:图灵人工智能 【编者按:OpenAI 首席科学家 Ilya Sutskever是一位拥有丰富经验的研究人员,他在多个领域都有出色的表现。他曾在多伦多大学工作,并带领谷歌的Brain团队进行人工智能方面的研究。他还与Yoshua Bengio和Geoffrey …

马斯克成立X.AI搞大模型,硬刚OpenAI,已囤万张GPU

来源:量子位 为了“对抗”OpenAI,马斯克成立了一家新公司! 这家公司名为X.AI,就目前看来,马斯克是这家公司的唯一董事。 而“X”是马斯克最近成立的一个空壳公司,近期他已经将自己拥有的推特、SpaceX、特斯…

Python入门必读,百万读者的编程启蒙老师,经典著作蟒蛇书全新升级!

人生苦短,我用 Python ! 什么?你没用过,也没开始学习,甚至没有认真了解过这门语言?那你一定这一秒就开始发力——下面让我们先简单看看 Python 有多火。权威编程语言排行榜 TIOBE,2022 和 2023 都是第一。 …

在前端领域摸爬滚打7年,我终于掌握了这些沉淀技巧

我做开发多年,常常有人问我「软件开发难学吗?」「前端和后端哪个比较简单?」「培训后是否好找工作呢?」这些问题单拎出来比较棘手,三言两语说不清楚,需要你对开发有一个系统了解,问题才能迎刃而…

“前端刘德华”Pink老师送签名图书啦

就算成功的概率为1%又如何呢,如太阳系般波澜壮阔,也只有0.14%产生了生命,平凡的我们绝大多数也终将如整个太阳系的99.86%一般化作死寂。 但这不重要朋友,今天是黑马疯狂星期四,Pink老师开讲了!&#xff01…

《花雕学AI》Poe:一个让你和 AI 成为朋友的平台,带你探索 ChatGPT4 和其他 八种AI 模型的奥秘

你是否曾经梦想过,能够在一个平台上,和多种不同的 AI 模型进行有趣、有用、有深度的对话,甚至还能轻松地把你的对话分享给其他人?如果你有这样的梦想,那么 Poe 一站式 AI 工具箱就是你的不二之选! Poe 是国…

基辛格:ChatGPT预示着一场智能革命,而人类还没准备好

ChatGPT对很多问题给出的答案之所以令人回味,是因为它们提出的问题多于结论。目前,我们拥有一项新颖而壮观的成就——人工智能,它是人类思想的荣耀。我们还没有为它进化出一个目的地。当我们成为技术智人时,我们迫切需要定义我们物…

大模型时代下,普通科研人怎么办?

本文转载自微信公众号「计算机视觉工坊」,一个定期分享SLAM与自动驾驶干货知识的公众号,推荐大家关注。点击下方,即可。 众所周知,随着ChatGPT的爆火,AI全面进入大模型时代,NLP、CV大有统一之势,回顾发布的各种大模型,Google BARD,openAI的GPT,Meta的SAM,百度的文心…

火山语音丨AI创作惊艳四方 诸多挑战仍在路上

2022年8月,一幅名为《太空歌剧院》的数字画作获得冠军同时引发了巨大争议,AIGC(AI产生内容:AI-Generated Content)出圈的事件便频频出现在大众视野。同年11月30日OpenAI发布的聊天机器人模型ChatGPT免费开放&#xff0…

大咖说丨云计算:数字世界的“中枢神经”

随着数字化转型进程加速,云计算作为重塑商业模式、加速数字经济发展的关键引擎,其重要性愈发凸显。未来已来,身处数字宇宙中,云计算的角色又将如何转变?近日,中国信息通信研究院云计算与大数据研究所副所长…

去除el-tabs的底部灰色横线

::v-deep .el-tabs__nav-wrap::after {height: 0px;}

Midjourney摄影真人风,超高清图片一篇足够

欢迎小伙伴光临,本博主打的就是一个真实,关注点赞不迷路,毫无保留奉献,欢迎大家来探讨,以上图片均是万能咒语篇出品。 有些小伙伴感觉我的咒语水分很大,出不来效果,如果出不来效果的&#xff0c…

一文学会Anaconda!

我使用的pytoch版本: conda install pytorch1.13.1 torchvision0.14.1 torchaudio0.13.1 pytorch-cuda11.7 -c pytorch -c nvidia安装放后面了,参考https://blog.csdn.net/wq_ocean_/article/details/103889237 1. 使用conda进行python环境管理 1. 查…

新版Bing,翻车了?国内版ChatGPT首发战,打响;L5级仍是梦,特斯拉因自动驾驶市值蒸发2600亿...

本周AI产业界又有哪些新鲜事? ChatGPT 引入ChatGPT的的新版Bing,翻车了? 在微软将引入ChatGPT的新版Bing发布之后,不到48小时便有超过100万人申请使用,全球下载量一夜之间暴增10倍。不得不说,微软此举确实达…

数说故事携手香港城市大学发表顶级国际论文,并获权威「IEEE TCSS期刊」收录

日前,数说故事联合香港城市大学共创的学术论文——《An Empirical Study of User Engagement in Influencer Marketing on Weibo and WeChat(微博和微信影响力营销中用户参与度的实证研究)》在社会计算顶级国际「IEEE Transactions on Comput…

股权融资的A、B、C、D轮

对于中小企业,民营企业、初创企业而言,融资一直是企业发展中重要的事情,必须要时刻关注的。那么股权融资又是怎样的?股权融资的A、B、C、D轮又是咋回事? 我们经常听到有企业获得融资了,有种子轮、天使轮、A…

PoseiSwap以2500万美元估值,再获新一轮融资

近日,Nautilus Chain 上的首个 DEX PoseiSwap 宣布,其目前已经以 2500 万美元的估值,从 Gate Labs、Emurgo Ventures、Republic以及Cipholio Ventures 等行业顶级投资机构中,获得了新一轮的融资,不过目前该融资的具体数…

ChatGPT提示词工程师教程-转换

总结一下:翻译、语气切换、格式转换、拼写检查和语法检查。 翻译 可以生成通用翻译器。 语气切换 格式转换 拼写检查和语法检查