NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义

这篇具有很好参考价值的文章主要介绍了NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前不久看到一篇《NVIDIA BlueField 再创 DPU 性能世界纪录》的新闻,该测试环境是2台服务器,每台各安装2块NVIDIA Bluefield-2 DPU,形成4条100GbE以太网直连,两端分别跑NVMe-oF Target(存储目标)和Initiator(主机端)。

测试结果包括TCP和RoCE(RDMA)两部分,上图是第一部分。我们看到,用户态SPDK to SPDK的512Byte小块读测试达到了41.5M(超过4100万)IOPS;Linux 5.15内核的FIO测试只有不到SPDK一半的性能,应该是CPU被I/O中断跑满了,4.18内核则又低了不少。

作为块存储设备,512B IOPS性能基本上只对Optane(傲腾)SCM介质有意义,比如Intel P5800X的4K随机读写、512Byte随机读IOPS指标分别为是150万和460万。对于传统NAND闪存SSD来说,小于4KB的IOPS通常也不会更高了,因为闪存页面大小一开始就是4KB(先进制程NAND的物理页面大多在8KB-16KB)。

另一点值得注意:在NVIDIA新闻的测试平台介绍中,并没有提到用的什么持久化数据盘,也就是说该测试应该是用DRAM内存模拟块设备来跑网卡的极限性能,没有提到随机访问那就是顺序IO了。

在4KB数据块测试中,用户态与内核的差距就没有那么大了,因为网卡的吞吐量快跑满了。其中SPDK to SPDK的读达到了345Gb/s,读写双向则是431Gb/s。

如果换用RoCE,Bluefield的512B小块IOPS,以及4KB双向带宽比TCP有进一步的提升。不过在这个新闻稿中没有提到延时数字,于是我又把https://spdk.io/doc/performance_reports.html 网站上Intel的测试报告翻了出来。

端到端SPDK延时只有5µs:这个数据落盘了吗?

NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义,# 介质专栏,tcp/ip,网络协议,网络,spdk,nvmeof

上图引用自《SPDK NVMe-oF RDMA/TCP (Target & Initiator) Performance Report Release 21.10》这2份文档。Intel是用一台配有16个P4610 SSD的服务器跑NVMe-oF Target,前端通过2个CX-5 100GbE网卡直连2台NVMe-oF Initiator服务器。

这个测试环境,比前面NVIDIA那份新闻稿更接近真实应用。不过当我看到下面的延时数据时,还是怀疑这部分测试的IO是否都落盘(SSD)了?

NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义,# 介质专栏,tcp/ip,网络协议,网络,spdk,nvmeof

上面图表是我从Intel报告的“Test Case 3: Linux Kernel vs. SPDK NVMe-oF RDMA Latency”中整理的数据,用iodepth=1和单任务能测出最短延时。

可以看出,使用Linux内核的NVMe-oF Initiator和Target测试,延时在16-18µs之间;如果只是把后端存储换成SPDK Target,延时降低到13µs多;只有IO负载请求和目标端都使用SPDK才能达到最短的5µs左右。

显然NAND闪存SSD应该跑不了这么快。可以参考下我在《NVMe-oF三种协议(FC、RDMA、TCP)对比:成败不只看性能》中对比的数字(如下图)——这个是包含SSD延时在内的。

NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义,# 介质专栏,tcp/ip,网络协议,网络,spdk,nvmeof

图注:“不同NVMe-oF协议的延时对比主要看低并发/队列深度时。纯软件NVMe/TCP接近100微秒了;而RoCE只有大约30微秒;FC-NVMe在50微秒左右,TCP-Offload甚至比它还要稍好一些。”

记得在几年前的《SPDK实战、QoS延时验证:Intel Optane P4800X评测(5)》一文中,我测试过当时唯一能达到10µs以内延时的SSD(DRAM内存盘除外)。

当年我用FIO测试P4800X在Linux Kernel下的随机读延时为14.2µs,而用户态的SPDK则可以跑到6.49 µs。如果是NAND闪存SSD,正常应该在100 µs左右的水平;随机写有可能会较短,因为固态盘上有Cache。

NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义,# 介质专栏,tcp/ip,网络协议,网络,spdk,nvmeof

在Intel报告的Latency测试配置部分,我认为是找到了答案(如果不正确的话,请读者朋友纠正我):bdev_null_create应该是创建了一个并不在SSD上的“空”设备,即等于10240MB的内存盘。为了对比测试NVMe-oF网络的延时,在这一段如此操作倒也合理。

同时我还对比了另一份本地盘的测试报告《SPDK NVMe BDEV Performance Report Release 21.10 》,其中延时数据如下:

NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义,# 介质专栏,tcp/ip,网络协议,网络,spdk,nvmeof

上面这个才是实打实的NAND闪存SSD延时水平——我们看到Linux内核libaio引擎平均随机读延时为85µs,SPDK BDEV和io_uring则能够分别降低到71µs和73µs。

SPDK对NVMe/TCP网络延时贡献有限

NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义,# 介质专栏,tcp/ip,网络协议,网络,spdk,nvmeof

这个图表整理自Intel报告的“Test Case 3: Linux Kernel vs. SPDKNVMe-oF TCP Latency”部分数据,可以看出NVMe/TCP的延时水平,以及SPDK在这里的价值。

本文主要就写这么多,下面给出本次阅读理解的结论:

1、SPDK的最大价值,依然是用户态Pooling,相比传统内核IRQ I/O能够显著节省CPU资源;

2、当使用Linux Kernel I/O时,NVMe-oF RoCE网络的延时约在16-18µs;NVMe/TCP则达到30 µs左右,并且TCP网络混合读写的延时还有增大;

3、在Target/Initiator端到端SPDK配置下,NVMe-oF RoCE延时降低到5µs左右;NVMe/TCP与内核态I/O相比也有改善,但仍在20µs以上;

注:除非特别说明,以上关于NVMe-oF延时的数据,都没有将SSD延时考虑在内。

简单来说,NVMe/TCP比基于RDMA和FC的NVMe-oF网络延时高,这是许多人都知道的。端到端SPDK能够降低延时,而且这种贡献在RoCE网络下表现更好。

附:SPDK(即IRQ vs. Polling)性能提升原理示意图

NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义,# 介质专栏,tcp/ip,网络协议,网络,spdk,nvmeof

上面这个是经典的Polling模式,会把一个CPU核心长时间占满。

NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义,# 介质专栏,tcp/ip,网络协议,网络,spdk,nvmeof

后来又有人提出了Hybird Polling(混合轮询),在没有I/O时可以插入Sleep睡眠来降低CPU负载。

参考资料

《NVIDIA BlueField 再创 DPU 性能世界纪录》

https://spdk.io/doc/performance文章来源地址https://www.toymoban.com/news/detail-785576.html

到了这里,关于NVMe-oF RDMA vs. TCP延时测试对比:端到端SPDK的意义的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RDMA 、RoCE 、IB 、TCP、Ethernet

    ROCE(Remote Direct Memory Access over Converged Ethernet)是一种网络技术,它结合了RDMA(远程直接内存访问)和以太网交换机的特性。ROCE允许主机之间通过以太网进行高效的直接内存访问,从而提供低延迟、高吞吐量的数据传输。 在使用ROCE时,需要在网络中部署支持ROCE的以太网交换

    2024年02月12日
    浏览(41)
  • 【SPDK】【NoF】使用SPDK部署NVMe over TCP

    SPDK NVMe over Fabrics Target是一个用户空间应用程序,通过以太网,Infiniband或光纤通道等结构呈现块设备,SPDK目前支持RDMA和TCP传输。 本文将在已经编译好SPDK的基础上演示如何使用SPDK搭建NVMe over TCP,前提是您已经将一块NVMe硬盘挂载到linux系统中。 如果您想获取有关SPDK更详细的信

    2024年02月01日
    浏览(39)
  • 手撕测试tcp服务器效率工具——以epoll和io_uring对比为例

    服务器的性能测试主要包括2部分: 并发量。能容纳多大的连接 效率。在不崩坏的情况下能对报文的处理效率。 本文主要进行效率测试,看看基于epoll模型和io_uring模型的tcp服务器,谁的效率更高。 测试思路 客户端(一个或多个)大量地向服务器发送报文,测试服务器的处理

    2024年01月18日
    浏览(99)
  • NVMe over TCP高性能文件存储,让未来照进现实,400us

    你真的懂NVMe吗? 在说NVMe之前,我们觉得有必要先聊一聊NVM(Non-Volatile Memory),即非易失性内存。从名字上看就知道,NVM是一种类内存式(访问及寻址方式类似)的设备,它必须具备高速读写数据的能力,但它和普通内存的区别在于Non-Volatile,即在关机后再打开电源也可以检

    2024年01月16日
    浏览(54)
  • RDMA性能测试工具集preftest_README

    测试工具 : https://github.com/linux-rdma/perftest preftest(Performance Test)是一组基于uverbs编写的测试工具集,旨在用作性能微基准。这些测试可以用作硬件或软件调优以及功能测试。 uverbs是RDMA(Remote Direct Memory Access)的一种编程接口,它提供了底层、高效的编程接口,可以控制RD

    2024年02月07日
    浏览(35)
  • 单元测试与端到端测试——主要区别

    目录 前言: 什么是单元测试? 单元测试生命周期 单元测试的好处 那么它有什么好处呢? 单元测试示例 单元测试的类型 单元测试工具 什么是端到端测试? 端到端测试 端到端测试的主要好处是什么? 端到端测试示例 端到端测试的类型 横向端到端测试 垂直端到端测试 端到

    2024年02月15日
    浏览(49)
  • 什么是端到端测试?

    端到端测试(End-To-End Testing, 简称E2E测试)是一种 从头到尾测试整个软件产品 以确保应用程序流程按预期运行的技术。它定义了产品的系统依赖性,并确保所有集成部分按预期协同工作。 端到端测试的主要目的是 通过模拟真实用户场景并验证被测系统及其组件的集成和数据

    2024年02月07日
    浏览(60)
  • 前端实现端到端测试(代码版)

    playwright 、 cypress 、 selenium 对比 个人初步使用后,推荐playwright 框架作为e2e test 下载 cypress npm install cypress --save-dev package.json npm run cypress:open 使用流程 入门官方文档 npm run cypress:open 左侧端测试,右侧组件测试,点击左侧 选择你需要的浏览器,点击开始 自动打开浏览器,点击左侧s

    2024年02月04日
    浏览(36)
  • TCP之延时Nagle算法实验详解

    TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据)。

    2024年02月12日
    浏览(33)
  • 实时Flink的端到端检测和测试

    在现代软件开发中,实时数据处理和检测是非常重要的。Apache Flink是一个流处理框架,可以用于实时数据处理和分析。在本文中,我们将讨论Flink的端到端检测和测试,以及如何实现高效和可靠的实时数据处理。 实时数据处理是指在数据生成的同时对数据进行处理和分析。这

    2024年02月22日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包