专栏首页媒矿工厂NVMe协议及视频转码应用

NVMe协议及视频转码应用

摘要:

NVMe(非易失性存储器Express)是一种用于访问高速存储介质的新协议,与传统协议相比具有许多优势。大规模数据的性能,经济性和耐久性至关重要。NVMe对企业及其如何处理数据产生了巨大影响,特别是用于实时分析和新兴技术的快速数据。业内已经出现基于该协议的高密度视频转码方案,我们来一探究竟。

NVM协议简介

NVMe的演变

第一批基于闪存的SSD利用传统的SATA / SAS物理接口,协议和外形,最大限度地减少现有基于硬盘(HDD)的企业服务器/存储系统的变化。但是,这些接口和协议都没有设计用于高速存储介质(即NAND和/或永久存储器)。由于接口速度,新存储介质的性能以及与CPU的接近程度,PCI Express(PCIe)是下一个逻辑存储接口。

PCIe插槽直接连接到CPU,提供类似内存的访问,并可运行非常高效的软件堆栈。但是,早期的PCIe接口SSD没有行业标准,也没有企业功能。杠杆专有固件的PCIe固态硬盘,这是特别具有挑战性的用于系统的缩放因各种原因,其中包括:a)运行和维护设备固件,b)用不同的系统软件的固件/设备的不兼容性,c)不总是使可用的车道和CPU的最佳利用接近度,以及d)缺乏企业工作负载的增值功能。NVMe规范的出现主要是应对这些挑战。

什么是NVMe?

NVMe是一种高性能的NUMA(非统一内存访问)优化和高度可扩展的存储协议,可将主机连接到内存子系统。该协议相对较新,功能丰富,并且从头开始设计用于通过PCIe接口直接连接到CPU的非易失性存储介质(NAND和永久存储器)(见图1)。该协议建立在高速PCIe通道上。PCIe Gen 3.0链路可提供比SATA接口高2倍以上的传输速度。

图1 CPU通过PCIe接口与I/O控制器和HBA连接SSD

NVMe价值主张

NVMe协议利用与底层媒体的并行,低延迟数据路径,类似于高性能处理器架构。与传统的SAS和SATA协议相比,这提供了更高的性能和更低的延迟。这不仅可以加速需要高性能的现有应用程序,还可以为数据中心和Edge中的实时工作负载处理提供新的应用程序和功能。

传统协议消耗许多CPU周期以使数据可用于应用程序。这些浪费的计算周期使企业真正赚钱。IT基础架构预算没有按照数据的速度增长,并且面临着最大化基础设施回报的巨大压力 - 无论是在存储还是计算方面。由于NVMe可以通过较小的基础架构占用来处理严格的应用程序工作负载,因此企业可以降低总体拥有成本并加速顶线业务增长。

NVMe架构 - 了解I/O队列

让我们深入探讨NVMe架构以及它如何实现高性能和低延迟。NVMe可以支持多个I/O队列,最多64K,每个队列有64K条目。传统SAS和SATA只能支持单个队列,每个队列可以分别拥有254和32个条目。根据系统配置和预期工作负载,NVMe主机软件可以创建最多NVMe控制器允许的最大队列。NVMe支持分散/收集IO,最大限度地减少数据传输的CPU开销,甚至可以根据工作负载要求更改其优先级。

下图(图2)是主机和NVMe控制器之间通信的简化视图。该架构允许应用程序同时启动,执行和完成多个I/O请求,并以最有效的方式使用底层媒体,以最大限度地提高速度并最大限度地减少延迟。

NVMe命令如何工作?

这种方式的工作方式是主机写入I/O命令队列和门铃寄存器(I/O命令就绪信号); 然后,NVMe控制器选择I/O命令队列,执行它们并发送I/O完成队列,然后向主机发送中断。主机记录I/O完成队列并清除门控寄存器(I/O命令完成信号),见图2。与SAS和SATA协议相比,这可以显着降低开销。

图2 简化的NVMe架构视图

为什么NVMe从多核处理器获得最佳性能

如上所述,NVMe是NUMA优化协议。这允许多个CPU核心共享队列的所有权,它们的优先级,以及仲裁机制和命令的原子性。因此,NVMe SSD可以分散/收集命令并反过来处理它们,以提供更高的IOPS和更低的数据延迟。

NVMe协议创新功能

NVMe专为高性能和非易失性存储介质而设计,是唯一在高要求和计算密集型企业,云和边缘数据生态系统中脱颖而出的协议。NVMe协议的性能不仅对数据驱动的工作负载具有重要意义,还具有一些非常创新的功能,可为现有工作负载带来独特优势,并为新应用程序提供开放式可能性。

无需自定义设备驱动程序

早期PCIe连接的SSD都需要自己的设备驱动程序来做任何事情。如果用户要升级操作系统,交换操作系统或虚拟机管理程序,或者甚至只升级带有安全补丁的内核,则通常需要部署全新的设备驱动程序来访问SSD。这是一个容易出错,引发头痛的过程,并没有直接使企业受益。 不过NVMe SSD在主要的现代操作系统和虚拟机管理程序中都是开箱即用的。由于接口已标准化,因此单个设备驱动程序可以支持任何制造商提供的任何NVMe SSD。

I/O多路径,命名空间和SR-IOV

除了性能之外,NVMe协议还支持IO多路径,这对于冗余和负载平衡目的特别有用。这是高可用性系统的强制功能:如果一条路径不可访问或繁忙,则可通过另一条路径访问数据。命名空间所有者可以拥有独占控件或彼此共享(参见图3)。共享命名空间所有者可以与命令原子性同时操作。NVMe名称空间共享与多路径相结合,为企业级存储系统奠定了基础。

IO虚拟化与命名空间一起使NVMe对企业SAN,超大规模服务器SAN,虚拟化和超融合用例非常有用。更进一步,SR-IOV(单根I/O虚拟化)允许不同的虚拟机(VM)共享单个PCIe硬件接口。使用SR-IOV,虚拟机管理程序无需参与IO活动,仍然可以共享组件,这有助于提高IO性能和整体系统利用率以及基础架构整合。

图3 IO所有权(NUMA)

多流写入

与硬盘驱动器相比,SSD的磨损方式不同。由于NAND闪存的特性,SSD具有有限的寿命,这些写入操作的数量由称为NAND闪存可以承受的编程/擦除(P/E)周期的写入操作决定。

多写入流是另一个有用的功能,它可以帮助SSD在相邻位置放置类似的数据,以最大限度地减少垃圾收集工作。正确实现后,这可以减少写入放大,提高用户写入性能并降低写入延迟。通过减少系统(设备管理)写入次数和增加用户写入次数,它还可以延长设备的使用寿命,参见图4。

图4 多流写入

异步事件捕获

NVMe协议还支持异步事件,例如SMART状态检查,错误报告,固件提交,清理等。这些对于主机在需要时理解,响应和控制设备至关重要。这些事件可能不会立即执行,也不会超时。每当发生这些事件时,主机接收消息并触发动作(例如,如果温度超过预定阈值,则可以开始节流或者可以停止IO操作直到设备冷却或风扇可以以更高的速度运行)。主机还可以发出异步固件下载和提交命令,以便下载,验证并使其在特定的映像插槽中可用。

随着新功能的添加,错误的修复以及安全补丁的发布,固件升级很常见。但在企业数据中心,停机意味着收入损失。因此,这些设备需要支持计划内停机时间,提供多个固件映像,并尽可能减少停机时间。控制器可以使用校验和,加密哈希或数字签名来验证和验证映像,并使其在特定固件插槽中可用。通常可在下一个复位周期后加载图像。

引导分区

NVMe规范还定义了一个启动分区,即使在控制器就绪之前也可以读取。分区空间可以具有系统初始化代码以引导到诸如UEFI的预OS环境。此选项对于安全启动应用程序也很有用。

电力和热管理

与读取操作相比,底层NAND器件在写入操作期间消耗更高的功率。功率越高,散热越高。通过识别IO模式,然后为选定的几个设备提供更高的功率是一个有趣的功能。这为用户提供了在管理电源和温度挑战方面的灵活性,同时提供了企业级性能。例如,应用程序可以为写密集型工作负载设置更高的功耗和热预算,为读取主导的工作负载设置更低的功率和热预算。这有助于管理企业服务器/存储系统的总体热量和功率预算。

总之,NVMe正在成为一种普遍的技术,具有领先的性能,支持高吞吐量和低延迟的应用(如数据库,虚拟化,数据挖掘,实时分析,物联网和其他高性能计算)。此外,独特的NVMe功能为数据中心,云端和Edge中的新应用打开了大门。

一个基于NVMe的高密度转码解决方案

Netint公司近期推出的视频转码Codensity T400模块,提供了一个存储服务器的高密度转码解决方案。其Codensity G4 SoC包括了ASIC方案的视频编解码器,支持H.264 / H.265的的4K@60 fps或8x 1080p@30 fps实时编解码。T400模块设计为U.2 NVMe托架接口模块,通过替换传统存储服务器中的U.2 SSD卡,实现转码容量的增加,而非存储容量的增加。如图5所示,在10个NVMe托架的1U服务器,通过插入10个 T400转码器模块,可支持80路同步1080p @ 30 fps实时转码。

图5 基于NVMe硬件模块的高密度转码方案

在这种解决方案中,T400视频转码的控制是通过NVMe R1.3接口完成。实际应用中可通过安装Xcoder lib与FFmpeg无缝集成,如图6所示。

图6 基于NVMe硬件转码模块的应用层方案

相关链接

ICT技术之喷—基础架构

参考资料

[1]https://blog.westerndigital.com/nvme-important-data-driven-businesses/

[2]https://blog.westerndigital.com/nvme-features-enterprise-edge-storage/

[3]https://www.netint.ca/product/t400_transcoder/

[4]https://www.netint.ca/blog/presentation_at_streaming_media_west_2018/

本文分享自微信公众号 - 媒矿工厂(media_tech)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MMSys2019:大规模直播遇到的挑战【附PPT全文】

      第10届ACM多媒体系统会议(ACM Multimedia Systems Conference)于今年6月18日至21日在美国马萨诸塞州举行。会上,来自网...

    用户1324186
  • Demuxed 2019 演讲视频选(八)

    第一场演讲的演讲者是来自Comcast的Bryan Meissner。演讲主题是” Non-Standard Codecs with Standard WebR...

    用户1324186
  • RIST:让用非托管网络上的可靠直播视频进行远程工作成为可能

    https://thebroadcastknowledge.com/2020/05/14/video-rist-enabling-remote-work-wit...

    用户1324186
  • 打开性能大门,四大关键趋势加速NVMe应用

    NVMe是目前存储领域最热炒概念之一,因为它能够让全闪存阵列完全发挥闪存的性能优势。NVMe已经成为全闪存阵列控制器与后端固态硬盘之间的互联,帮助全闪存阵列解锁...

    大数据在线
  • 移动支付助力产业升级,腾讯云“米大师”全面开放

    腾讯云“米大师”提供聚合支付、账户托管、安全风控、对账结算、营销活动、数据分析、立体监控等多维度服务,支持多级商户管理与分润,全面支持各行业交易场景。

    赫兹
  • 移动支付助力产业升级,腾讯云“米大师”全面开放

    移动支付的发展极大的改变了多个行业的用户体验和商业逻辑,当前移动支付正在进入行业深耕阶段。腾讯云“米大师”依托于十余年支撑腾讯业务支付计费及交易结算的经验,近日...

    鹅厂优文
  • 翻译术语表

    Chor
  • 从C#到TypeScript - 类

    从C#到TypeScript - 类 在ES6之前Javascript的类都是用function定义的,ES6把类关键字正式加进来,虽说其实也还是functio...

    用户1147588
  • Redis 高效删除大key

    大key(bigkey)是指 key 的 value 是个庞然大物,例如 Hashes, Sorted Sets, Lists, Sets,日积月累之后,会变得...

    dys
  • 小程序中带图片modal的实现

    前言:做小程序经常会遇到弹框提示,大家应该首选wx.showModal,标题、内容、button内容和颜色都可以自己定义,可以说是满足90%的dialog需求。...

    连胜

扫码关注云+社区

领取腾讯云代金券