RocksDB 是一个以存储为重点的键值数据库,是 Meta 许多业务的支柱。以下是来自 RocksDB.org 的相关介绍:
“RocksDB 基于 LevelDB 构建,可扩展到在具有多个 CPU 内核的服务器上运行,以高效使用快速存储,支持 IO 密集型、内存中和一次写入工作负载,以实现灵活创新。”
Meta 更倾向于将 DB bench 用作 RocksDB 的工作负载生成工具,因其可以解决键空间局部性问题,并模拟真实世界中键值存储的工作负载。该基准测试可以综合生成更为精准的键值查询,这些查询代表了键值存储对底层存储系统的读写。
我们使用以下数据中心级 NVMe SSD 测试了存储 1TB 数据库的单个设备的存储性能:
美光 7450 SSD:我们的主流性能型硬盘,采用 176 层 TLC(三层单元)NAND,旨在为我们的云合作伙伴提供出色的 QoS 和 PCIe 4.0 性能。
三星 PM9A3:一款读取密集型、TLC NAND、PCIe 4.0、NVMe 固态硬盘。
Solidigm D5-P5430:一款主流的 QLC(四层单元)、PCIe 4.0、NVMe 固态硬盘,由 Solidigm 推出,是与三星 9A3 和美光 7450 存在竞争关系的同类硬盘。
测试配置
这篇博客文章主要讨论 3 种工作负载:
- 边读边写:此工作负载使用多线程读取和单线程写入。
- 随机读写:混合工作负载,多线程执行随机读和随机写操作。
- 随机读取:此工作负载从现有数据库随机读取。
服务器 |
Supermicro AS-1115CS-TNR |
CPU |
AMD EPYC 9654 96 核处理器 |
内存 |
768GB 美光 DDR5 (12 个 64GB DDR5、1DPC),内核不超过 256GB |
文件系统 |
xfs |
Linux 操作系统 |
Ubuntu 20.04 |
内核版本 |
5.15.0-67-generic |
RocksDB 版本 |
8.1.1 |
DB bench 版本 |
8.1.1 |
性能结果
图 1 至图 3 展示了 3 种工作负载的 99% 读取延迟(毫秒数,x 轴)和数据库每秒操作数(y 轴)。每个数据点表示在某一 DB bench 线程数(8、16、32、64、96)下运行 20 分钟的平均值。
边读边写使用 1 个写入线程,并随着 DB bench 线程数增多,增加读取次数。对于每个线程数,美光 7450 和三星 9A3 表现相近,7450 在 96 个线程时扩展性更好。
相较于另外两款固态硬盘,Solidigm D5-P5430 的 99% 读取延迟高出两倍多,但其最高 ops/s 仅为它们的 65%。
在随机读写工作负载中,三星 9A3 在线程数较少时略胜一筹,而 7450 则在线程数较多时占据优势。这两款硬盘的性能相似。
Solidigm D5-P5430 的读取延迟是这两者的 1.5 倍,而且性能(ops/s)低 30%。
最后,随机读取基准测试再次显示 7450 与 9A3 在性能和延迟方面都很接近,其中 7450 在线程为 96 个时性能更高,而 PM9A3 则在线程数较少时则略胜一筹。
Solidigm D5-P5430 的读取延迟高达这两者的 1.8 倍,而且性能低 30%。
图 4 中的带宽测量数据基于 3 种工作负载在线程数为 96 个时的表现得出。对于所有三种工作负载,美光 7450 的带宽都略高于三星 9A3,而 Solidigm 5430 的带宽相对较低。
总而言之,我们的分析表明,美光 7450 和三星 9A3 在性能上旗鼓相当,美光 7450 在线程数较高时优势稍显,而三星 9A3 在线程数较低时略胜一筹。在所有工作负载和线程数下,Solidigm D5-P5430 的性能始终垫底,表明它是本次对比研究中性能相对逊色的硬盘。