利用 KeyDB 和多线程实现高性能 FLASH

去年三月我们发布 KeyDB 时,对多线程可能带来的潜力感到非常兴奋。今天,我们通过 KeyDB 继续这一愿景,推出了全新的闪存(FLASH)功能,该功能在利用闪存存储带来的巨大成本优势的同时,实现了接近内存(RAM)的性能。与所有 KeyDB 功能一样,闪存支持继续提供与现有 KeyDB 和 Redis 客户端的完全兼容性。
结果非常显著,闪存支持以显著的成本节约提供了接近内存的速度。
有关详细的性能结果和分析,请参见下文。
#
测试设置所有基准测试均在 AWS m5d.2xlarge 实例上完成,以确保测试易于复现。我们初始化一个 KeyDB 服务器,包含 2 亿个键,每个键大小为 1KB,总数据集为 190GB。数据库存储在直连 NVME 闪存上,这是我们推荐给 AWS 用户的配置,并且 KeyDB 以 7 个线程启动。极高的负载由一个在 m5.8xlarge 实例上运行、拥有 32 个线程的 memtier 实例生成。
#
结果
结果显示,闪存可以达到内存吞吐量的 85%,而仅增加了 0.5 毫秒的延迟。对于大多数工作负载来说,闪存是一个直接的替代品。我们可以看到,工作集大小对延迟和吞吐量的影响很小。这一点很重要,因为随着工作集的增加,一个键在缓存中的可能性会降低,需要更多次地访问磁盘。KeyDB 中的多线程很好地隐藏了这一点,我们最坏情况下的延迟仅比最佳情况高 5%。
#
关键在于隐藏延迟KeyDB 惊人的闪存性能的关键在于延迟隐藏。由于 KeyDB 的多线程架构,我们能够同时处理多个请求,从而更好地利用硬件中可用的并行性。
#
结论借助 KeyDB 的全新闪存功能,您可以在显著节约成本的同时获得接近内存的性能。为了证明这一点,一台能够将我们整个数据集装入内存的机器每年将花费超过 17600 美元。这比我们的测试机器高出 5 倍多。您还可以使用 EBS 代替直连存储,以实现更大幅度的成本节约。
闪存允许您在 KeyDB 中保留更多数据,同时仍然提供您所期望的性能。要利用闪存支持,立即获取 KeyDB!