NVMe管理命令为何不用SGL?-2

在IO数据传输中,是否选择SGL可以根据自身场景的需要。SGL提供的是一种高效且灵活的方式来描述非连续的内存区域,这对于现代高性能存储系统至关重要,尤其是在处理大数据块或者随机小I/O操作时具有明显优势:

  1. 高效的数据传输:SGL允许在一个I/O操作中传输多个不连续的数据段,避免了对单一连续内存区域的严格要求。这意味着即使数据分布在内存的不同位置,也能一次性发送或接收,减少了总线事务次数,从而提升了数据吞吐量和降低了延迟。

  2. 内存利用率:在许多应用场合,数据可能分布在不同的内存碎片中,SGL可以直接指向这些碎片,无需额外的数据复制和重组,提高了内存使用的灵活性和效率。

  3. 大型文件处理:对于处理大型文件、数据库或虚拟机环境中的I/O请求,SGL允许一次I/O操作覆盖多个页,大大简化了操作系统层面的管理和调度工作。

  4. 减少CPU开销:通过在硬件级别支持SGL,CPU不必逐一处理每个独立的小型I/O请求,进一步减轻了系统的CPU负担,有利于提高整体性能。

  5. 适应多核架构和并行化:在多核心和并行处理环境中,SGL使得数据可以从不同内存区域并发传输,更好地利用现代处理器和总线架构的特性。

总的来说,SGL在任何需要传输非连续内存数据,或者需要优化处理多个小I/O请求合并为单个大I/O操作以减少总线和控制器开销的场景下都有其必要性。尤其在高性能计算、云计算、大数据分析等领域,SGL能够提升NVMe SSD的I/O效率和系统整体性能。

但是,在IO数据传输中表现这么优秀的SGL,为啥不能用于admin command?

对于SGL,它允许在单个I/O操作中传输多个非连续内存区域的数据,提供了极大的灵活性。然而,对于管理命令(Admin Commands),它们的目的通常是为了配置和控制NVMe设备的内部行为,而非传输大量的数据块。管理命令涉及的信息主要包括设备状态查询、模式设置、固件升级等操作,所需的数据量通常较小且往往是连续的。

图片

根据小编的理解,SGL不常用于NVMe Admin Commands,大致有这些原因:

  1. 数据量较小:大部分管理命令所携带的数据很有限,完全可以使用单个或少量连续的PRP条目来描述,而无需使用更为复杂的SGL结构。

  2. 硬件限制:NVMe标准起初并未规定在Admin Commands中必须支持SGL,某些NVMe控制器可能在硬件层面只支持PRP而不支持SGL用于Admin Commands,以简化硬件设计和实现。

  3. 复杂性增加:引入SGL到Admin Commands的处理逻辑会增加驱动和固件的复杂性,因为原本这部分逻辑并不需要处理复杂的内存地址列表,而只需简单地将少量连续的物理地址传递给控制器。

  4. 性能影响不大:由于管理命令执行频率相对较低,即使使用SGL带来的潜在性能提升也不会显著影响整体系统的性能表现。

综上所述,对于NVMe管理命令,使用SGL并不会带来明显的性能优势,反而可能增加不必要的复杂性和实现成本,因此在NVMe规范和实践中,通常选择使用更为简单和直接的PRP来描述所需的内存地址。不过,随着NVMe标准的不断发展,未来可能会出现针对特定高级场景而支持SGL在Admin Commands中使用的扩展。

小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 存储系统如何规避数据静默错误?

  • PCIe P2P DMA全景解读

  • 深度解读NVMe计算存储协议

  • 对于超低延迟SSD,IO调度器已经过时了吗?

  • 浅析CXL P2P DMA加速数据传输的原理

  • HDD回暖于2024,与SSD决战于2028

  • SSD固态硬盘的黄金原则:抱最高的希望,做最坏的打算

  • PCIe 6.0生态业内进展分析总结

  • 详细解读QLC SSD无效编程问题

  • NVMe SSD IO压力导致宕机案例解读

  • 浅析PCIe 6.0功能更新与实现的挑战

  • 过度加大SSD内部并发何尝不是一种伤害

  • FIO测试参数与linux内核IO栈的关联分析

  • PCIe surprise down异常与DPC功能分析

  • 过度加大SSD内部并发何尝不是一种伤害

  • NVMe over CXL技术如何加速Host与SSD数据传输?

  • 为什么QLC NAND才是ZNS SSD最大的赢家?

  • SSD在AI发展中的关键作用:从高速缓存到数据湖

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • SSD数据在写入NAND之前为何要随机化?

  • 深度剖析:DMA对PCIe数据传输性能的影响

  • NAND Vpass对读干扰和IO性能有什么影响?

  • HDD与QLC SSD深度对比:功耗与存储密度的终极较量

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 如何通过优化Read-Retry机制降低SSD读延迟?

  • 关于硬盘质量大数据分析的思考

  • 存储系统性能优化中IOMMU的作用是什么?

  • 全景解析SSD IO QoS性能优化

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

  • 浅析nvme原子写的应用场景

  • 多维度深入剖析QLC SSD硬件延迟的来源

  • 浅析PCIe链路LTSSM状态机

  • 浅析Relaxed Ordering对PCIe系统稳定性的影响

  • 实战篇|浅析MPS对PCIe系统稳定性的影响

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

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

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

相关文章

课题学习(二十)----阅读《近钻头井斜动态测量重力加速度信号提取方法研究》论文

摘要:利用加速度计进行近钻头井斜动态测量时, 钻具的高速旋转、 井下强振动、强冲击环境给重力加速度测量带来极大干扰,如何从干扰噪声中有效提取重力加速度信号对于提高井斜角和工具面角的测量精度至关重要。 根据重力加速度径向和切向分量为…

【代码随想录】day1 数组

因为学计算机语言是属于半路出家,在接触数据结构之前,我只了解数据的类型,从没有了解过不同数据类型的存储方式。数组、链表等等因为不同的存储方式,展现出不同的优缺点,以适应不同的用途。 代码随想录是属于把饭喂到嘴…

Altium Designer 22 性能优化

目录 AD22 使用起来很卡,完全受不了,卡到我的快捷鼠标宏都无法使用,来试着优化一下它。 每点完一步,都需要点击应用,否则不下心关掉了会很难受 打开右上角齿轮进入设置,取消勾选这几个勾: 接…

java spring 03 启动细节

spring启动类ClassPathXmlApplicationContext,读取xml文件并且创建bean public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, Nullable ApplicationContext parent)throws BeansException {super(parent);setConfigLocations(confi…

oracle 表中的rowid会变动吗

oracle中访问select能够以最快的方式访问表中的一行的方法就是使用rowid,但是我们并不能使用rowid作为表主键。 在Oracle数据库中,ROWID是一个伪列,用于唯一标识表中的每一行记录。它起着几个关键的作用: 唯一标识:ROWID可以唯一…

python 亲测有效:无法连接互联网,离线部署python运行环境与安装包

**这里写目录标题** 安装包准备-在网络条件下下载所需要的第三方库安装包一、提取第三方库目录到requirements.txt二、批量下载requirements.txt的whl文件 安装包复制到无网络条件下,安装第三方库安装包**可能存在的问题 报错信息,欢迎私信,指…

android开发框架mvp,Android面试心得必备技能储备详解

面试复习路线图 我之前复习,大多都在20点以后,因为晚上比较能集中注意力,制定一个学习计划,切勿零散的复习,最好是系统的复习,才能胜却在握 主要内容如下: BAT的面试题目相关性能优化相关相关…

Qt之插件

插件结构 #mermaid-svg-HMxjwDgwwRejLSQ5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-HMxjwDgwwRejLSQ5 .error-icon{fill:#552222;}#mermaid-svg-HMxjwDgwwRejLSQ5 .error-text{fill:#552222;stroke:#552222;}#…

算法设计.

文章目录 1. 贪心算法:只看当前1.1 零钱兑换问题:力扣322 2. 活动选择问题3. 动态规划3.1 不同路径:3.2 0-1背包问题3.3 完全背包问题3.4 零钱兑换-动态规划 4. 最长公共字串--动态规划5. 最长公共子序列6. 最长递增子序列7. 打家劫舍8. 全排…

事务、视图、索引、数据备份和恢复

1.事务 事务(TRANSACTION)是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库操作命令要么都执行,要么都不执行。 事务是一个不…

信息熵 (Entropy)

在深度学习和机器学习中,熵是一个衡量不确定性或信息量的关键概念。它在各个方面发挥着作用,从数据的压缩和分布的特性分析,到模型的正则化和决策过程的优化。以下是熵在深度学习中的一些关键知识点: 信息熵 (Entropy) 信息熵是…

04. Nginx入门-Nginx WEB模块

测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径:/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…

如何使用宝塔面板部署MySQL数据库,并结合内网穿透实现固定公网地址远程连接

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.1 开放局域网端口3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几…

Android drawable selector

Android drawable selector 描述使用备份背景颜色 描述 Android 可绘制选择器(drawable selector)是一种可根据不同状态显示不同可绘制对象的 XML 资源。它通常用于实现按钮、列表项等控件的状态变化效果。 可绘制选择器的基本结构 一个可绘制选择器由…

Mybatis-Plus——04,自动填充时间(新注解)

自动填充(新注解) 一、数据库添加两个字段二、实体类字段属性上增加注解三、编写填充器四、查看结果4.1 插入结果4.2 修改结果 五、同步修改5.1实体类属性改成 INSERT_UPDATE5.2 在填充器的方法这里加上 updateTime5.3 查看结果————————创作不易…

【前缀和】AcWing. 562 / Google Kickstart2018 Round H Problem B《壁画》(c++)

1.题目说明 Thanh 想在一面被均分为 N 段的墙上画一幅精美的壁画。 每段墙面都有一个美观评分,这表示它的美观程度(如果它的上面有画的话)。 不幸的是,由于洪水泛滥,墙体开始崩溃,所以他需要加快他的作画…

视频号爆爽短剧推广,一键搬运,傻瓜式操作,日入2000+

首先,我想问下有没有人尝试过短剧推广,是否感觉最近短剧推广变得困难,或者收益甚微。这可能是因为许多人都在抖音、快手等大型平台上进行短剧推广,竞争非常激烈,就像在争夺一块有限的蛋糕,自然难以获得满意…

一键生成超好用的简历设计模板

对于缺乏工作经验和职业规划的应届生而言,使用简历设计平台,辅助我们完成简历分区、排版和美化流程,早就成为简历设计环节的 “潜规则”。这里我们挑选了 5 个能够实现免费下载、一键生成的简历设计平台,供大家参考借鉴。 即时设…

剑指RT-DETR改进RepVB:最新重参数化结构 顶会二次改进升级版,最新开源移动端网络架构

💡本篇内容:剑指RT-DETR改进RepVB:最新重参数化结构 顶会2023 二次改进升级版 最新开源移动端网络架构,速度贼快 💡🚀🚀🚀本博客 改进源代码改进 适用于 RT-DETR 按步骤操作运行改进后的代码即可 💡:重点:该专栏《剑指RT-DETR原创改进》只更新改进 RT-DETR …

与hr沟通的话术记录

投简历的时候,能不能获得面试机会,取决于hr是否足够信赖你的简历。如果人家不够信赖你的简历,相信你也没有面试机会。 然后,第二个就是,与hr在沟通的时候,不要谈及自己的缺点,无论是面试前&…