当前位置:网站首页>性能对比|FASS iSCSI vs NVMe/TCP
性能对比|FASS iSCSI vs NVMe/TCP
2022-07-29 05:19:00 【大道云行TaoCloud】
前 情 回 顾
在上一篇文章《iSCSI vs iSER vs NVMe-TCP vs NVMe-RDMA 》中我们介绍了大道云行FASS全闪分布式存储系统所支持的几种存储协议,现在我们将对此进行一系列的对比,首先是应用最广泛的iSCSI协议和较近较新的NVMe over TCP(缩写为NVMe/TCP)。
1 测试系统介绍
01
我们使用了一套基于Intel处理器的测试平台,FASS存储系统基于一台双路Xeon Gold 6154处理器的服务器,型号为Intel Server Systems R2208WFTZS,每个处理器具有18个核心(我们的配置关闭了超线程),整机搭配了192GiB DDR4-2666 R-ECC内存,机器架构如下图所示:
02
FASS存储系统使用的存储为单片Intel Optane SSD DC P4800X,裸容量为750GB,基于PCIe NVMe 3.0 x4界面。Intel Optane SSD DC P4800X是一种基于新型存储介质的固态硬盘,其Optane存储介质是一种相变存储,与当前基于Flash的SSD相比,具有更优异的性能。我们选择它作为FASS系统的存储介质主要是因为其读写性能比较一致,且具有稳定的性能表现。在系统中为FASS设置了64GiB的大页面内存,并配置了一个100GiB容量的厚配置卷作为测试目标。
测试客户机基于虚拟化环境,根基是一台配置了四路Intel Xeon Platinum 8180处理器的服务器,每个处理器具备28个核心(测试时超线程打开),整套系统即为4S112C224T(4处理器112核心224线程),搭配了768GiB DDR4-2666 R-ECC内存。虚拟化环境为Windows Server 2022 Datacenter提供的Hyper-V,虚拟机使用了16个vCPU,16GiB内存。
03
测试当中还有一个重要的部件:网卡,我们使用了两块Chelsio T62100-LP-CR以太网卡,具备两个100Gbps端口(QSFP28接口),测试客户机与FASS系统通过直联的方式连接,从而避免其它网络部件的影响。在测试客户机以及FASS系统机器上我们都分别安装了最新的Windows驱动(6.16.1.1)和Linux驱动(3.16.0.1)。测试时基于两端操作系统,使用了最大的Jumbo Frame可能值:9600。
我们目前使用了Ubuntu 22.04 LTS作为测试虚拟机的操作系统,截至测试时,最新的更新其Linux内核版本为5.15.0-40。相比Ubuntu 20.04,Ubuntu 22.04 LTS可以更好地支持NVMe/TCP,在Ubuntu 20.04上,NVMe/TCP应用起来偶尔会出现一些问题。
操作系统使用的内核也同时内置了Chelsio T62100-LP-CR经过SRIOV技术提供的Virtual Function虚拟网卡的驱动支持,同时Ubuntu 22.04 LTS也携带了流行的fio存储测试工具 的3.28版本。我们配置的FASS系统存储卷为单一链接,不过,Chelsio T62100-LP-CR的SRIOV Virtual Function提供了8个RSS Queue,它们可以显著提高虚拟机内的网络性能。
2 测试结果介绍
01
我们首先测试了最常用的libaio异步引擎的性能,首先是iSCSI的性能图:
02
接着是对比的NVMe/TCP性能图:
在iSCSI下,4KiB随机读取最高值达到了103.984kIOps,在单fio线程以及32队列深度时达到,同样,4KiB随机写入最高值76.646kIOps也是在单fio线程以及32队列深度时达到。在NVMe/TCP下,4KiB随机读取最高值达到了373.797kIOps,在双fio线程以及256队列深度时达到,同样,4KiB随机写入最高值257.361kIOps也是在双fio线程以及256队列深度时达到。
03
测试可以看出,iSCSI下,多线程fio在具有同样的总队列深度时,性能更低,原因如下图所示:
Ubuntu 22.04 LTS的iSCSI组件已经很新了,但它仍然具有单进程的限制,同时,多线程fio测试时其实际仅使用了一个队列,因此,多线程fio实际上会降低iSCSI的整体效率,同样地,超过256的队列深度亦会降低效率,因为SCSI协议理论支持队列深度为256。原理上,iSCSI并不意味着单队列,但软件iSCSI实现可能往往如此。
NVMe/TCP则不同,在多线程下会显著提升对应的性能:
实际上,一共使用了5个NVMe/TCP队列,映射到了5个网卡的RSS Queue上,对应地,就启动了5个kworker线程(以上图的kworker/0:0H+nvme_tcp_wq为首)。值得一提的一点是,NVMe还支持比SCSI更深的队列深度,最高可达64k(65536),因此整体会随着队列深度的增加而提高性能。
04
接下来是4KiB随机读取和随机写入时的延迟性能,首先是iSCSI:
接着是NVMe/TCP:
4KiB随机读取和随机写入,基于点对点通信,如前所述,iSCSI平均延迟最低可以达到126.79us(读取)和193.47us(写入),而在NVMe/TCP下,最低延迟可以达到66.09us(读取)和186.36us(写入)。写入时存在的一些异常是Chelsio TOE特性导致的。
05
接着是1MiB块大小的连续读取/写入性能,首先是iSCSI:
接着是NVMe/TCP:
在iSCSI下,1MiB性能也体现了前面所述的队列深度的限制,读取性能在4队列深度时最佳:2081.13 IOps,写入性能则随着队列深度提高而缓慢攀升,最高达到了2248.88 IOps,亦即意味着2248.88 MiBps(2.196 GiBps),实际上以及逼近Intel Optane SSD DC P4800X的标称限制(官方标称写入就是2200 MBps)。
而在NVMe/TCP下,1MiB读取性能在不同的队列深度均可以维持稳定的水平:约2500 IOps,写入则约为1650 IOps左右。
3
测试总结
测试结果清晰显示,纯软件的iSCSI和NVMe/TCP方案具有显著的性能区别,一方面,NVMe/TCP具有更精简的数据路径(如下图所示),另一方面,NVMe/TCP原生支持更多的队列和更大的队列深度,前者降低了延迟,后者提升了整体的吞吐量。
NVMe/TCP是为NVMe闪存盘研发的新协议,除了能发挥网卡多队列的优势之外还应用了很多新的Linux Kernel特性,如Zero-Copy等,因此它也对底层的内核版本具有要求——需要主线5.0版本及以上,兼容性方面稍不如是个操作系统就能支持的iSCSI,但随着NVMe固态硬盘越来越普及,NVMe/TCP也将会越来越普及,并逐渐成为iSCSI的替代,对于无法使用RDMA的场景,我们推荐FASS的用户选择NVMe/TCP协议。
边栏推荐
- 运动健康深入人心,MOVE PROTOCOL引领品质生活
- 新手入门:手把手从PHP环境到ThinkPHP6框架下载
- 熊市慢慢,Bit.Store提供稳定Staking产品助你穿越牛熊
- [C language series] - storage of deep anatomical data in memory (II) - floating point type
- 如何在加密市场熊市中生存?
- 量化开发必掌握的30个知识点【什么是分笔逐笔数据】?
- 焕然一新,swagger UI 主题更改
- Fantom (FTM) 价格将在未来几天飙升 20%
- Installation steps and environment configuration of vs Code
- 华为2020校招笔试编程题 看这篇就够了(上)
猜你喜欢
[typescript] in depth study of typescript functions
山寨币SHIB 在 ETH 鲸鱼的投资组合中拥有 5.486 亿美元的股份——交易者应提防……
DAY6:利用 PHP 编写文件上传页面
第五空间智能安全⼤赛真题----------PNG图⽚转换器
Hcia-r & s self use notes (27) comprehensive experiment
Introduction to C language array to proficiency (array elaboration)
Seay源代码审计系统
【电子电路】ADC芯片如何选型
Basic concepts of MySQL + database system structure + extended application + basic command learning
一文读懂Move2Earn项目——MOVE
随机推荐
从Starfish OS持续对SFO的通缩消耗,长远看SFO的价值
ThinkPHP6 输出二维码图片格式 解决与 Debug 的冲突
[electronic circuit] how to select ADC chip
Hcia-r & s self use notes (26) PPP
熊市慢慢,Bit.Store提供稳定Staking产品助你穿越牛熊
365 day challenge leetcode 1000 questions - day 035 one question per day + two point search 13
HCIA-R&S自用笔记(26)PPP
JS simple code determines whether the device that opens the page is the PC end of the computer, the H5 end of the mobile phone, or the wechat end
农村品牌建设给年轻人的一些机会
[untitled]
第五空间智能安全⼤赛真题----------PNG图⽚转换器
DAY6:利用 PHP 编写文件上传页面
PHP如何生成二维码?
The difference between link and @import importing external styles
Sports health is deeply rooted in the hearts of the people, and move protocol leads quality life
MOVE PROTOCOL全球健康宣言,将健康运动进行到底
Wapiti是什么以及使用教程
Selection options of uniapp components (such as package selection)
[typescript] in depth study of typescript functions
Starfish OS: create a new paradigm of the meta universe with reality as the link