缓存还是不缓存,这是个问题。
你会怎么选择? 要不要为你的 Ceph® 集群进行缓存? 答案是:视情况而定。
如果使用的是高端企业级 NVMe™ 硬盘(如美光® 9200 MAX),可以轻松通过 Ceph 集群获得良好性能。但如果要提高主要由 SATA 硬盘组成的系统的性能,该怎么办? 在这种情况下,建议在 Ceph OSD 服务器上增加几个更快的硬盘,来存储 BlueStore 数据库和预写日志。
美光开发并测试了广受欢迎的 Accelerated Ceph Storage 解决方案,该解决方案利用了在红帽 Linux 上运行的带红帽 Ceph Storage 的服务器。我将介绍几个工作负载场景,并根据我们的解决方案测试实验室的实际结果,展示缓存可以带来哪些帮助。
系统配置
测试使用一个 OSD 四节点 Ceph 集群,配置如下:
处理器 | 单插槽 AMD 7551P |
内存 | 256GB DDR4 @ 2666Hz(8x32GB) |
网络 | 100G |
SATA 硬盘 | 美光 5210 ION 3.84TB(12 个) |
NVMe 硬盘(缓存设备) | 美光 9200 Max 1.6TB(2 个) |
操作系统 | 红帽® Enterprise Linux 7.6 |
应用 | 红帽 Ceph Storage 3.2 |
每个 SATA 硬盘的 OSD 数量 | 2 |
数据集 | 50 个 RBD,每个 150GB,2 倍复制 |
表 1:Ceph OSD 服务器配置
4KiB 随机块测试
使用 FIO(灵活 I/O)进行 4KiB 随机写入时,可以看到使用缓存硬盘后,性能大幅提升,并且尾延迟较低,即使在高负载情况下也是如此。对于 40 个 FIO 实例,性能提高了 71%(190K 对比 111K),尾延迟降低了 72%(119ms 对比 665ms)。
图 1:4KiB 随机写入性能和尾延迟
在 4KiB 随机读取测试期间,性能会有所提高,但这没大有说服力。这在意料之中,因为在读取测试期间,不会使用预写日志,BlueStore 数据库也不会有太大变化。
图 2:4KiB 随机读取性能和尾延迟
混合工作负载(70% 读取/30% 写入)也证明了在系统中增加缓存设备的优势。性能提升幅度从 64 队列深度时的 30% 提高到 6 队列深度时的 162%。
图 3:4KiB 随机 70% 读取/30% 写入性能和尾延迟
4MiB 对象测试
使用 4MiB 对象运行 rados bench 命令时,缓存设备会带来一定的性能提升,但没有小区块工作负载那么显著。由于预写日志很小,而对象很大,因此增加缓存设备对性能的影响较小。运行 10 个 rados bench 实例时,有缓存与无缓存相比,吞吐量提高了 9%(4.94 GiB/s 对比 4.53 GiB/s),而平均延迟降低了 7%(126 ms 对比 138 ms)。
图 4:4MiB 对象写入性能
在读取方面,我们再次看到性能的全面提升几乎可以忽略不计。
图 5:4MiB 对象读取性能
结论
如你所见,如果你的工作负载基本都是读取,则在 Ceph 集群中为 BlueStore 数据库和预写日志存储增加缓存设备并不会获得较大的性能提升。但对于写入,情况就完全不同了。虽然对于较大的对象,效果也不是特别明显,但缓存设备真正适合的是小区块写入和混合工作负载。只需少量投资,在系统中添加几个美光 9200 NVMe 硬盘,你就可以充分发挥 Ceph 集群的价值。
对于你的开源存储,结果又如何呢? 有关详情,请访问美光 Accelerated Ceph Storage。
欢迎在 Twitter 上关注我们(@MicronStorage),或者在 LinkedIn 上了解我们的最新动态。