当前位置:网站首页>性能对比|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协议。
边栏推荐
- Laravel Swagger添加访问密码
- HCIA-R&S自用笔记(27)综合实验
- 闪贷Dapp的调研及实现
- Fvuln automated web vulnerability detection tool
- [typescript] in depth study of typescript functions
- 如何 Pr 一个开源composer项目
- Qframe class learning notes
- DAY5:PHP 简单语法与使用
- Okaleido tiger logged into binance NFT on July 27, and has achieved good results in the first round
- Fantom (FTM) 价格将在未来几天飙升 20%
猜你喜欢

如何在加密市场熊市中生存?

Hcia-r & s self use notes (27) comprehensive experiment

HCIA-R&S自用笔记(27)综合实验

超简单集成HMS ML Kit 人脸检测实现可爱贴纸

The completely decentralized programming mode does not need servers or IP, just like a aimless network extending everywhere

量化开发必掌握的30个知识点【什么是Level-2数据】

实现table某个单元格背景色设置

DAY15:文件包含漏洞靶场手册(自用 file-include 靶场)

Record the SQL injection vulnerability of XX company

The openatom openharmony sub forum was successfully held, and ecological and industrial development entered a new journey
随机推荐
DAY15:文件包含漏洞靶场手册(自用 file-include 靶场)
Summary of knowledge points related to forms and forms
OpenAtom OpenHarmony分论坛圆满举办,生态与产业发展迈向新征程
Go|Gin 快速使用Swagger
HCIA-R&S自用笔记(24)ACL
Seay源代码审计系统
Starfish OS:以现实为纽带,打造元宇宙新范式
[typescript] in depth study of typescript functions
[electronic circuit] how to select ADC chip
nmap是什么以及使用教程
Windows下cmd窗口连接mysql并操作表
新手入门:手把手从PHP环境到ThinkPHP6框架下载
365 day challenge leetcode 1000 questions - day 035 one question per day + two point search 13
“山东大学移动互联网开发技术教学网站建设”项目实训日志七
【电子电路】ADC芯片如何选型
Liang Yuqi, founder of aitalk: the link between image and virtual reality
Detailed explanation of typical application code of C language array - master enters by mistake (step-by-step code explanation)
JDBC连接数据库详细步骤
[untitled]
Laravel服务容器(上下文绑定的运用)