Jiang's Blog

Stay focused. Stay simple.

摘要

在当今的IT基础设施中,持久性KV存储被广泛用作构建块,用于管理和存储大量数据。然而,由于缺乏跟踪/分析工具以及在操作环境中收集跟踪的困难,表征KV存储的真实工作负载的研究受到了限制。在本文中,我们首先对Facebook上三个典型的RocksDB生产用例的工作负载进行了详细表征:UDB(用于社交图数据的MySQL存储层)、ZippyDB(分布式KV存储)和UP2X(用于AI/ML服务的分布式KV存储)。这些特征揭示了几个有趣的发现:首先,键和值大小的分布与用例/应用程序高度相关;二是KV对的访问具有良好的局部性,并遵循一定的特殊模式;第三,收集的性能指标在UDB中显示强烈的昼夜变化模式,而其他两个没有。

我们进一步发现,尽管广泛使用的KV基准测试YCSB提供了各种工作负载配置和KV对访问分布模型,但是由于忽视键的空间局部性,YCSB触发的基础存储系统工作负载仍不足以与我们收集的工作负载接近。为了解决这个问题,我们提出了一种基于键范围的建模,并开发了一个可以更好地模拟实际KV存储的工作负载的基准测试。这个基准测试可以综合生成更精确的KV查询,表示对底层存储系统的KV存储的读写。

阅读全文 »

在云计算环境下,在共享网络存储系统中提供端到端的尾延迟QoS是非常重要的问题。通常情况下,人们会在90%或95%观察尾延迟。但是,越来越多研究机构和公司开始关心99%甚至99.99%的长延迟。本文讨论99.9%和99.99%的尾延迟。在生产环境中的突发性工作负载下,满足尾延迟SLO是有挑战性的,主要因为下面两个原因:第一,尾延迟很大程度上受排队的影响,而突发性工作负载导致共享潜在基础设施的工作负载的排队;第二,端到端的尾延迟受到请求中所有阶段的影响,因此队列可能在不同时间、不同阶段构建起来。文章介绍了PriorityMeister(PM),这是一种主动式QoS系统,它通过优先级和令牌桶速率限制的组合,在多个阶段实现了端到端尾延迟SLO。

阅读全文 »

在并行高性能计算应用中,多个应用带来IO竞争,导致应用之间带宽的不公平分配。已经有很多研究从IO吞吐量和公平性角度去缓解IO竞争。但是确保公平性和最大化吞吐量是相互冲突的,在IO竞争下达到平衡很有挑战性。GIFT是一种基于优惠券的带宽分配方法,可确保HPC应用程序的同步IO进度,同时最大程度地提高IO带宽利用率并确保并行存储系统上并行应用程序之间的公平性。

阅读全文 »

Introduction

对NVMe Flash的远程访问实现了数据中心内Flash容量以及IOPS的灵活扩展和高利用率。但是,现有的用于远程Flash访问的系统会带来巨大的性能开销,或者无法隔离共享每个Flash设备的多个远程clients。

在实现对Flash的远程访问方面存在重大挑战。要实现低延迟,需要在server和client的网络和存储层上将处理开销降至最低。除了低延迟之外,每台服务器还必须以最低成本实现高吞吐量,从而使一个或多个NVMe Flash设备且具有少量CPU cores的机器达到饱和。此外,要管理共享一个Flash设备的多个租户之间的干扰以及Flash设备的不均匀读写行为,需要一种隔离机制,以保证所有租户的可预测性能。最后,在共享程度,部署规模和用于远程连接的网络协议方面需要具有灵活性。现有的仅软件用于远程Flash访问的选项(例如iSCSI或基于事件的服务器)无法达到性能预期。最近提出的硬件加速选件,例如基于RDMA架构的NVMe,缺乏性能隔离,并且部署灵活性有限。

我们提出了ReFlex,一个用于远程Flash访问的软件系统,其性能与访问本地Flash几乎相同。ReFlex使用数据平面内核紧密集成网络和存储处理,以在低资源需求下实现低延迟和高吞吐量。数据平面设计避免了中断和数据拷贝的开销,针对局部性进行了优化,并在高吞吐量(IOPS)和低尾部延迟之间取得了平衡。ReFlex包括一个QoS调度程序,该调度程序实现优先级和速率限制,以便为共享设备的多个租户实施针对延迟和吞吐量的服务水平目标(SLO)。ReFlex提供了用户态库和远程块设备驱动程序来支持client应用程序。

阅读全文 »

除非您打算编写使用原子操作进行同步的代码(例如无锁数据结构),否则您无需了解这些详细信息。C++ 的原子类型与操作; 同步操作和强制排序。

阅读全文 »

Introduction

跨设备资源共享提供了利用远程设备资源的能力。这样就能通过访问大量异构设备(如智能手机、可穿戴设备、智能电视),扩展移动设备的能力,提供多设备服务。但是现有的资源共享机制面临三个问题:

  • 共享的资源覆盖范围有限

  • 涉及使用多个设备的复杂编程工作

  • 现有方案无法优化任务的放置,因此在低速无线网络上运行时会遭受损失

文章提出DynaMix,这是一种新颖的框架,可实现有效的跨设备资源共享。

  • 首先,DynaMix使用分布式共享内存(DSM)和IO请求转发来完全集成各种资源。DSM集成了CPU和内存,而IO请求转发集成了IO资源。

  • 其次,由于DSM和IO请求转发支持在应用程序级别以下的低级资源共享,因此DynaMix不需要应用程序知道多个设备,从而实现了良好的可编程性。

  • 第三,DynaMix通过监视每台设备的资源使用情况和设备间的网络使用情况来最大程度地减少设备间的通信,从而动态地在设备之间重新分配任务; 此外,DynaMix通过监视远程设备的连通性并获取应用程序状态的检查点来支持远程设备的无缝即插即用。

阅读全文 »

Introduction

用户态网络栈

传统观点认为,积极的网络要求,例如小消息的高数据包速率和微秒级的尾端延迟,最好在用户态网络栈中进行处理。用户态网络栈消除了上下文切换的开销,但是并没有消除高数据包速率和低延迟之间的艰难权衡;同时也会缺乏保护,用户程序的bugs会污染网络栈。

IX简介

IX,一个data plane操作系统,旨在达到高吞吐量,低延迟,强大的保护和资源效率这四个权衡。IX使用硬件虚拟化来分离control plane(内核的管理和调度功能)和data plane(网络处理)。

IX利用Dune和虚拟化硬件以不同的保护级别运行data plane内核和应用程序,并将control planedata plane隔离。 在我们的实现中,control plane是完整的Linux内核,data plane在专用的硬件线程上作为受保护的基于库的操作系统运行。

这个data plane架构建立在本地的零拷贝API之上,通过将硬件线程和软件队列专用于data plane实例、处理有限的批量数据包至完成(run-to-completion)、消除了一致性流量和多核同步,从而优化了带宽和延迟。

阅读全文 »
0%