企业基于云端进行业务构建时,所面临的最大负荷通常都来自系统中频繁的存储 I/O ,存储设备的性能直接决定用户是否将其核心业务搬到云上以及能否通过云计算开展业务。
目前,随着用户业务规模的不断扩大和场景的进一步丰富,主流云服务商所提供的块存储服务在双 11 电商抢购秒杀、春晚红包、超大型网络游戏不分服数据库应用中等对存储有着超高性能需求的业务场景下依旧存在瓶颈。
在这些场景下,短时间内大量请求发送到业务逻辑层,业务进行处理对后端存储并发大量读写,如果此时存储读写能力没有达到业务要求则会发生读写延时增大,可能导致业务超时,产生游戏卡顿、订单状态持续转圈等待甚至失败等后果。
9月25日,腾讯云推出了随机 IOPS 高达 20 万的超高性能 SSD 云盘,能有效满足大型关系数据库(如 Oracle、SQL Server)、NoSQL 数据库(如 Hbase、Cassandra)、数据检索场景(如 SAPHana、ElasticSearch)等业务场景中对云盘 IO 的性能要求,填补了整个行业在超高性能云盘方面的空白。
腾讯云超高性能 SSD 云盘如何练就业界顶级的 IOPS 性能?下面逐一对腾讯云超高性能云盘使用的核心技术进行揭秘。
1.使用 SPDK 充分发掘 NVMe SSD的性能
Linux下 IOPS 越高系统的开销越大,在单机高密度盘场景下很难将所有NVMe SSD 盘的性能发挥出来。我们突破性地使用 SPDK 来读写 NVMe SSD,由于 NVMe 的驱动程序在用户空间,因此不需要用中断来通知 IO 完成,也就无需经过厚重的内核 IO 栈。相比于使用 Linux内核,SPDK 用户空间 NVMe 驱动程序在极小化系统开销的同时,可将 IO 延迟降低 10 倍,单核单盘的性能可达百万 IOPS。
2.基于 25Gb 的 RDMA 的超高性能网络框架
云盘的读写离不开网络传输。使用 TCP socket 传输数据时,大部分的延迟都是由网络协议栈带来的,且网络协议栈太复杂,难于优化。相对于传统的 TCP socket 数据传输,RDMA 技术可以将应用程序 Buffer 中的数据直接拷贝到网卡内存并发送到远端,远端把数据 DMA 到应用的缓存中,相当于在应用之间建立了更快速更直接的通道,如图所示。通过上面的工作原理可以看到,使用 RDMA 做数据传输有以下几个优势:
1) zero-copy:数据不需要在网络协议栈的各个层之间来回拷贝,这缩短了数据流路径。
2) kernel-bypass:应用直接操作设备接口,不再经过系统调用切换到内核态,没有内核切换开销。
3) none-CPU:数据传输无须CPU参与,完全由网卡搞定,无需再做发包收包中断处理,不耗费CPU资源。
腾讯云专门开发了针对 RDMA 的超高性能网络框架,可以充分发挥 RDMA的传输优势。在 4K-16K小 IO 场景下,相对 TCP 网络延迟下降 50%,同时有超过 5 倍的性能提升。25Gb 网络让云盘的理论读写带宽达到 2.5GB/s以上,可以让一台云主机的多块盘同时跑出极限性能。
3.基于 3D Xpoint 的 log 缓存
3D Xpoint 技术可谓是 NAND Flash 诞生以来存储界的最大突破。相比DRAM,3D Xpoint 盘有非易失、低功耗、高密度的优势;相比 NAND,其速度更快,寿命更长。由于云盘存储引擎采用类似 LSM 的模式,因此将高性能、长寿命的 3D Xpoint 盘作为一级 log ,内存用作一级 log 的索引缓存非常合适。既通过内存的高速度保证了访问的性能,又通过 3D Xpoint 盘的非易失性保证了数据的安全。3D Xpoint 盘同时还用于存储元数据,实现 metadisk机制,保证需实时存储的小 IO 元数据及时落盘。
4.云盘系统架构
云盘接入层和存储节点通过 RDMA 传输数据,腾讯云专门开发了针对RDMA 的超高性能网络框架,满足超高 IOPS 下的数据传输需求;Dispatch 模块用来进行多副本的数据分发同步;3D Xpoint 盘和 NVMe SSD 盘分别负责日志元数据和用户数据的存储。整个系统从设计上尽量缩短 IO 的中间路径,使用 RMDA 和 SPDK 将 IO 从耗时的网络内核栈和 IO 内核栈中解放出来,消除 IO 路径上的瓶颈点,将后端汹涌澎湃的 IO 能力送达云主机。
此次超高性能 SSD 云盘的推出标志了腾讯云积累多年的分布式存储技术和顺应时代新硬件的完美结合。腾讯云在存储领域快速应用 RDMA、SPDK、3D Xpoint 等新技术,不断突破性能上限。率先将最新技术领入到云计算行业中,普惠众多游戏、电商、社交应用、直播等领域的客户。