Login / Register
RocksDB是一个专注于存储的键值数据库,是Meta许多操作的支柱. 以下是来自RocksDB的描述.org:
RocksDB建立在LevelDB的基础上,可以在拥有多个CPU内核的服务器上运行, to efficiently use fast storage, to support IO-bound, 内存和一次写入工作负载, 并且灵活地允许创新.”
Meta prefers DB bench 作为RocksDB工作负载生成工具, 因为它解决了键空间位置的问题,并模拟了真实世界键值存储的工作负载. 这个基准可以综合生成更精确的键值查询,这些查询表示对底层存储系统的键值存储的读取和写入.
我们使用以下数据中心类NVMe ssd测试存储1TB数据库的单个设备的存储性能:
Micron 7450 SSD:我们的主流性能驱动器采用176层TLC NAND, 旨在为我们的云合作伙伴提供卓越的QoS和PCIe Gen4性能.
Samsung PM9A3:读密集型,TLC NAND, PCIe Gen4, NVMe SSD.
Solidigm D5-P5430: A mainstream, QLC based, PCIe Gen4, Solidigm与三星9A3和美光7450在同一领域进行营销的NVMe固态硬盘.
Test Configuration
在本博客中,我们将讨论3种工作负载
- 边写边读——此工作负载使用多个线程进行读操作,而只使用一个线程进行写操作.
- 读随机写随机——这是一个混合工作负载,其中多个线程进行随机读和随机写操作.
- 随机读取-此工作负载从现有数据库中随机读取.
Server |
Supermicro AS-1115CS-TNR |
CPU |
AMD EPYC 9654 96-Core Processor |
Memory |
768GB Micron DDR5 (12x 64GB DDR5, 1DPC),内核限制为256GB |
Filesystem |
xfs |
Linux OS |
Ubuntu 20.04 |
Kernel version |
5.15.0-67-generic |
RocksDB version |
8.1.1 |
DB bench version |
8.1.1 |
Performance Results
Fig.1 thru Fig.3在y轴上表示第99百分位读取延迟(以毫秒为单位),在x轴上表示3种工作负载的每秒数据库操作数. 每个数据点表示在一个DB bench线程数(8)下运行20分钟的平均值, 16, 32, 64, 96).
写时读使用1个写线程,并随着数据库工作台线程的增加而扩展读. 美光7450和三星9A3在每个线程数上表现出相似的行为, 7450在96个线程时具有更好的伸缩性.
Solidigm D5-P5430的读延迟是其他ssd的两倍多,最大ops/s仅为其他ssd的65%.
在Read Random Write Random工作负载下, 三星9A3在线程数较低方面略有优势, 而7450在高端有优势. 这些驱动器之间的性能是相似的.
The Solidigm D5-P5430 has 1.读延迟降低5倍,性能降低30% (ops/s).
Finally, Random Read基准测试再次显示出接近的性能,延迟在7450和9A3之间, 7450在96线程时伸缩性更高,PM9A3在低线程时性能稍好.
Solidigm D5-P5430最多有1个.8倍的读延迟和30%的性能降低.
The bandwidth measurement in Fig.3个工作负载中的96个线程数取4. 在所有三种工作负载下,Micron 7450的带宽略高于Samsung 9A3,而Solidigm 5430的带宽相对较低.
In conclusion, 我们的分析显示,美光7450和三星9A3表现出相当的性能,美光7450在线程数较高时略有优势,三星9A3在线程数较低时略有优势. Solidigm D5-P5430在所有工作负载和线程数中始终表现出最低的性能, 表明它是本比较研究中性能最差的驱动器.