摘要:
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硬件转码模块的应用层方案
相关链接
参考资料
[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/