网易首页 > 网易号 > 正文 申请入驻

NVMe IO数据传输如何选择PRP or SGL?

0
分享至

在Host与Controller之间有数据交互时,Controller会多次访问Host内存。比如执行NVMe Read/Write:

  • 当Host下发NVMe Write命令时,Host会先放数据放在Host内存中,然后通知Controller过来取数据。Controller接到信息后,会通过PCIe Memory Read TLP读取相应的数据,接着Host返回的PCIe Completion报文中会携带数据给Controller,最后再写入NAND中。
  • 当Host下发NVMe Read命令时,Controller先从NAND中读出相应数据,然后通过PCIe Memory Write TLP将数据写入Host内存中。

上述Read/Write均有访问Host内存进行数据交互,那么,问题来了:

  • NVMe Write时,Controller怎么知道数据在Host内存的具体位置?
  • NVMe Read时,Controller怎么知道要把数据写到Host内存中哪个位置?

不怕,NVMe给Host配备了两大"法宝":PRPSGL。这两个模型均可以帮助Host告知Controller数据在Host内存中的具体地址。

PRP/SGL的背景知识,这里就暂时略过了,感兴趣的同学可以参考之前发布的文章。这里简单提下。存储随笔《NVMe专题》大合集及PDF版正式发布!

PRP和SGL是描述Host内存物理空间的两种方式,本质的不同是:PRP必须是物理页对齐的,而SGL则可以表述任意的物理空间。如下图。

在Linux内核中,Block层下发的IO请求以BIO表示。我们需要通过DMA发送这些数据,Command使用dma_alloc_coherent分配DMA地址,但是BIO是存放在普通的内核线程空间的(线程的虚拟空间不能直接作为DMA地址)。

Linux函数nvme_map_data能够将虚拟空间地址(BIO数据存放地址)转换成DMA可用地址,并且多个IO请求的DMA地址可以通过scatterlist来表示。有了DMA地址就可以把BIO封装成NVMe Command发送出去。

所以,linux驱动中nvme_map_data中针对NVME Command的IO传输格式就有了很重要的设定。比如,函数nvme_map_data中有iod->use_sgl的结果可以觉得IO传输过程中是使用SGL还是PRP。

而iod->use_sgl的返回结果依赖函数nvme_pci_use_sgls的判断,主要有两种情况:

  • 当SGL不支持的时,iod->use_sgl返回false,对应的IO数据传输就采用PRP了。
  • 当平均请求大小avg_seg_size值小于SGL阈值sgl_threshold时,也返回false,需要采用PRP。也就是说,使用SGL情况,必须要要求avg_seg_size大于等于sgl_threshold。SGL比较适合大块数据的传输。

sgl_threshold的定义是32KB,avg_seg_size和sgl_threshold的计算对比关系如下示例:

  • blk_rq_nr_phys_segments = 2,blk_rq_payload_bytes = 8k,那么,avg_seg_size = blk_rq_payload_bytes/blk_rq_nr_phys_segments=4K,这种情况avg_seg_size
  • blk_rq_nr_phys_segments = 2,blk_rq_payload_bytes = 64k,那么,avg_seg_size = blk_rq_payload_bytes/blk_rq_nr_phys_segments=32K,这种情况avg_seg_size=sgl_threshold,那就可以采用SGL了。
  • blk_rq_nr_phys_segments = 16,blk_rq_payload_bytes = 64k,那么,avg_seg_size = blk_rq_payload_bytes/blk_rq_nr_phys_segments=4K,这种情况avg_seg_size

sgl_threshold这个参数在linux内核中也可以通过修改/etc/default/grub文件,添加修改nvme.sgl_threshold参数即可

SQ队列中的PSDT参数中,可以定义每个IO数据传输采用PRP还是SGL。特别是NVME over Fabrics场景中,设定SGL时,需要关注metadata的MPTR设定,采用连续的物理空间,还是采用QWORD对齐的方式。

NVME Controller的Identify页面信息中,Byte536的前2个bit可以查询对SGL的支持情况。比如nvme-cli获取的2个nvme id-ctrl信息:

  • NVMe SSD A: sgls : 0,bit0=0,说明不支持SGL
  • NVMe SSD B: sgls : 0x70001,bit0=1,说明支持SGL,且对Data Block数据的对齐策略没有要求。

其中SGL Descriptor Threshold(SDT)代表SGL Descriptor最大的数量。如果SDT设置0,则代表没有设定最大建议值。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
2-2!42岁阿隆索无敌玄学:率药厂连续3场绝平,46场不败刷新纪录

2-2!42岁阿隆索无敌玄学:率药厂连续3场绝平,46场不败刷新纪录

我爱英超
2024-04-28 02:56:09
通道突然消失!上海一地铁站改造引吐槽:700多米绕路13分钟,阻断两个商场…

通道突然消失!上海一地铁站改造引吐槽:700多米绕路13分钟,阻断两个商场…

上观新闻
2024-04-28 10:47:45
事实证明,“消失”7年 定居美国的周立波,已经走上了另一条道路

事实证明,“消失”7年 定居美国的周立波,已经走上了另一条道路

清欢渡语
2024-04-26 22:07:25
新华社快讯:以色列外长卡茨说,如果与哈马斯达成停火协议,以军将暂缓在拉法发动地面行动。

新华社快讯:以色列外长卡茨说,如果与哈马斯达成停火协议,以军将暂缓在拉法发动地面行动。

新华社
2024-04-28 01:07:07
布林肯见证了历史

布林肯见证了历史

六爷阿旦
2024-04-27 19:01:21
快船危!中方经纪人:莱昂纳德可能因伤缺席系列赛第四战

快船危!中方经纪人:莱昂纳德可能因伤缺席系列赛第四战

懂球帝
2024-04-28 12:02:13
因害怕乌克兰无人机攻击,俄罗斯几十年来首次取消胜利日大阅兵?

因害怕乌克兰无人机攻击,俄罗斯几十年来首次取消胜利日大阅兵?

不掉线电波
2024-04-28 12:41:59
再这么搞下去,失业的人只会越来越多!政府该做些什么?

再这么搞下去,失业的人只会越来越多!政府该做些什么?

鹏飞深文
2024-04-27 13:40:46
寒心,广东男子救落水小孩后收了一条烟,家长:烟很贵以为他不要

寒心,广东男子救落水小孩后收了一条烟,家长:烟很贵以为他不要

东东趣谈
2024-04-28 08:45:31
晴天霹雳,首席科学家落马!

晴天霹雳,首席科学家落马!

燕梳楼2021
2024-04-28 11:05:18
人社部权威专家表示:养老金压力空前巨大,2029年国家将面临缺口

人社部权威专家表示:养老金压力空前巨大,2029年国家将面临缺口

大佬日志
2024-04-27 08:00:17
“新冠疫苗之父”杨晓明被抓!个人履历曝光,评论区彻底失控!

“新冠疫苗之父”杨晓明被抓!个人履历曝光,评论区彻底失控!

古希腊掌管松饼的神
2024-04-28 09:10:08
博主们春夏照片里无所谓的轻松慵懒劲儿,怎么总有它?

博主们春夏照片里无所谓的轻松慵懒劲儿,怎么总有它?

创作者_WCD3
2024-04-25 20:12:44
“70后”女性中央候补委员,有新身份

“70后”女性中央候补委员,有新身份

极目新闻
2024-04-28 12:02:26
中国犯难了 国际奥运委使绝招 凡去金砖国家运动会 不许到巴黎奥运会

中国犯难了 国际奥运委使绝招 凡去金砖国家运动会 不许到巴黎奥运会

祝晓塬
2024-04-27 12:20:10
布林肯在北京放狠话:中国若不解决“援俄”问题,美国将出手

布林肯在北京放狠话:中国若不解决“援俄”问题,美国将出手

蓝星特快
2024-04-27 10:47:26
13000颗!马斯克没有料到,6G计划正式公布,外媒:我们输了

13000颗!马斯克没有料到,6G计划正式公布,外媒:我们输了

小蘑菇壹号
2024-04-27 11:07:51
撑不住了,听闻一些单位降了收入,干活的人也敷衍应付起来

撑不住了,听闻一些单位降了收入,干活的人也敷衍应付起来

玛丽姬丝
2024-04-28 10:44:46
“一箭双星”宣告失败,点火8分钟后偏离轨道,24.5亿打水漂!

“一箭双星”宣告失败,点火8分钟后偏离轨道,24.5亿打水漂!

星辰故事屋
2024-03-08 21:12:51
广东这场大暴雨,把新能源车的底裤撕了一个精光,车主苦不堪言!

广东这场大暴雨,把新能源车的底裤撕了一个精光,车主苦不堪言!

户外小阿隋
2024-04-28 10:55:12
2024-04-28 13:12:49
存储随笔
存储随笔
记录SSD相关知识与经验
114文章数 292关注度
往期回顾 全部

科技要闻

AITO汽车回应问界M7 Plus起火事故

头条要闻

问界M7起火致3人遇难 疑似家属发声:2岁孩子也在车上

头条要闻

问界M7起火致3人遇难 疑似家属发声:2岁孩子也在车上

体育要闻

赢了!詹皇末节14分制胜咆哮 压力给到KD

娱乐要闻

张杰谢娜发文为何炅庆生,亲如家人!

财经要闻

美国,突发爆雷!

汽车要闻

5月上市/智能化丰富 海狮 07EV正式到店

态度原创

游戏
房产
家居
健康
公开课

《庄园领主》将登陆Xbox主机 PS5版本暂未确认

房产要闻

海南最新房价出炉,三亚跌价最猛!

家居要闻

光影之间 空间暖意打造生活律动

这2种水果可降低高血压死亡风险

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版