当前位置:   article > 正文

SPDK | 每秒8千万次I/O性能实现

spdk 软件队列深度

What?每秒可实现8000万次I/O,使用标准2U英特尔® 至强® 系统!

今天我们与大家分享一篇关于SPDK IOPS性能的文章,原文作者为John Kariuki,发表于2021年5月6日。原文链接:https://spdk.io/news/2021/05/06/nvme-80m-iops/,或点击文末阅读原文查看。

数据中心采用NVM Express® SSDs后,存储性能比前几年得到了更大释放。SPDK社区从项目成立至今一直努力证实,可以使用标准硬件构建达数千万IOPS(每秒读写次数)的系统。SPDK在过去几年实现了超1千万IOPS(使用一个CPU核心)的系统,如今,我们将大幅提升技术水平,向8千万IOPS进发。

结合最新的第三代英特尔® 至强® 可扩展处理器(代号为Ice Lake)和英特尔® Optane™ SSDs,SPDK社区构建了2U英特尔® 至强® 服务器系统,该系统能够承载 8千万的512字节的随机I/O读取操作。2U英特尔® 至强® 服务器系统有2个CPU,每个CPU有64个PCIe Gen 4通道,足以连接NVMe SSD和网卡等其他I/O设备。

关键数据

下图显示了SPDK NVMe驱动程序在增加CPU核数量时执行I/O操作时的I/O吞吐量的性能扩展性。数据结果十分惊人,1个CPU核的每秒512字节I/O操作可达1385万

在1-4个CPU核范围内,IOPS随使用的CPU核数量的增加呈线性扩展。CPU核增加到4个以上时,IOPS逐渐接近SSD能力极限,呈非线性扩展。在8个I/O处理核的情况下,测试结果更为震撼,达8千万IOPS,平均延迟仅有25.54微秒

队列深度为128,对每个设备进行512字节随机读取。

你的存储软件可以承载8千万IOPS吗?

企业在集成NVMe SSD时面临的一大挑战在于,存储软件的性能和效率是整个存储系统的性能提升的关键。结合最新的至强可扩展处理器平台,和英特尔® Optane™ SSDs,可能会过度使用已有的闪存优化架构。

SPDK的新手或许会感到疑惑:“应该如何找到可达8千万IOPS的存储栈?” 存储性能开发工具包(SPDK)就提供了一套开源工具和库,可用于编写高性能、可扩展、用户态模式的存储应用。SPDK在设计之初就支持“下一代”存储介质,例如英特尔® Optane™设备。SPDK项目是为实现低延迟和高吞吐量设计的。

欲阅读更多信息,请访问SPDK主文档页面(https://spdk.io/doc/),特别推荐阅读引言(https://spdk.io/doc/intro.html)和概念(https://spdk.io/doc/concepts.html)两章节。

用户态、轮询模式、异步、无锁的NVMe驱动程序是SPDK的基石,NVMe驱动程序支持零拷贝,应用程序可以在用户空间直接以高度并行的方式访问SSD。

两年前,SPDK社区对SPDK NVMe驱动程序进行了高度优化,实现单线程超1000万IOPS。当时发布的博客文章(https://spdk.io/news/2019/05/06/nvme/)解释了如何使用技术策略实现高性能。

此外,SPDK NVMe驱动程序呈线性IOPS可扩展性,因为没有对I/O路径添加锁,且将I/O线程固定在CPU核上,数据得以保留在访问过的CPU的核缓存上。

更多关于SPDK NVMe驱动程序设计的信息,请访问https://spdk.io/doc/nvme.html,也可在此链接查阅将驱动程序集成到存储应用程序中所需要的API。

4K IO的性能如何?

下表显示了4KiB随机读取I/O的性能情况。据测试,4KiB随机读取I/O操作单线程每秒可达1262万次。随着逐渐增加CPU核,可达2517万IOPS,IOPS呈线性扩展。

队列深度为128,对每个设备进行4KiB随机读取。

测试方法

•数据收集:

性能数据是通过使用SPDK资源库中 examples/nvme/perf目录下的SPDK NVMe perf工具来获得的。

专门创建perf工具是因为现成的性能工具无法用于IOPS的极限测试。SPDK的NVMe perf工具功能相对较少,但设计专业,只为达到本测试的性能水平。

•1 I/O 核心测试基于NUMA node 0的CPU核运行。但随着CPU核数量扩展至2、4、6、8、10、12个,我们相应将CPU核平均分配到两个 NUMA nodes,并配置Perf作业,在CPU核运行perf操作时在同一个NUMA node上配置SSDs。

•每个工作负载都运行5分钟,且在每个CPU计数时重复三次。

小结

SPDK通过扩展支持存储、存储网络和存储虚拟化的开源库和应用程序,实现了一流的性能。SPDK采用完全开放的开发模式,所有代码均为BSD授权,许可条款宽松,社区成员可以任意集成组件。

越来越多的公司和项目采用了SPDK,为其贡献力量,共同分享NVMe固态介质在超融合和分离式存储等存储场景中所取得的进步。加入SPDK开源社区吧(https://spdk.io/community/),一同实现可达1亿IOPS的系统构建存储软件!

Notices & Disclaimer 

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex. Performance results are based on testing as of dates shown in configurations and may not reflect all publicly available updates. See configuration details. 

No product or component can be absolutely secure. Your costs and results may vary. Intel technologies may require enabled hardware, software or service activation. 

© Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others.

Configuration Details

Test by Intel as of 3/17/2021. 

System: 1-node, 2x Intel® Xeon® Platinum 8380 Processor (40 cores, HT=On, Turbo=ON), Total Memory 1024 GB (16 slots/ 64GB/ 3200 MHz), BIOS:SE5C6200.86B.2021.D40.2103100308 (ucode:0x261), Storage: 16x Intel® Optane™ SSD 800GB P5800X. 

Software: Fedora 30, Linux Kernel 5.7.12, gcc 9.3.1 compiler, SPDK 20.10. Workload: 512B/4096B Random Read @ QD=128

转载须知

DPDK与SPDK开源社区

公众号文章转载声明

推荐阅读

Release notes for VPP 21.06

2020中国峰会系列六 | 基于SPDK的

高性能企业级分布式存储

SPDK中常用的性能测试工具

点点“赞”“在看”,给我充点儿电吧~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/705923
推荐阅读
相关标签
  

闽ICP备14008679号