

数据中心资源原生支持多租户场景,随着容器化应用不断深入,如何保障租户的应用程序QoS不被其他程序干扰,是值得关注的问题。
多租户QoS的挑战在于SSD中不一致的租户行为。噪声倾向可能影响行为一致的其他租户的QoS。需要隔离,然而:
• 严格隔离(不共享任何内容)存在问题:
• NVMe提供基于WWR(权重轮询仲裁)的提交队列仲裁机制,具有紧急优先级类别。但这是有限的:

PerformaShape™机制 用于根据用户定义的QoS集合重构IO请求。QoS集合是一组一个或多个主机租户和/或内部任务(如回收等),它发起IO类型操作。
PerformaShape 算法基于双状态令牌桶算法。
• 每个QoS集合被分配一个令牌桶:
• 一个令牌是对IO命令或一定数量KiB的许可。
• 令牌率:令牌填充令牌桶的速度,可配置且可变。
• 令牌容量/桶大小:令牌桶可以容纳的最大令牌数。
• 当QoS集合/客户端请求n个令牌时:
• 如果桶中有≥n个令牌,则授予许可。
• 否则,请求等待直到桶中累积足够的令牌。

双状态令牌桶算法:
图解释了SiliconMotion采用的性能重构机制,具体使用双状态令牌桶算法来管理和优化系统性能。该算法的核心思想是:
这种机制能够有效地平衡系统性能和资源利用,特别适用于需要处理大量并发请求的存储系统,如SSD控制器等。它能够在保证关键任务高优先级执行的同时,also为非关键任务提供处理机会,从而提高整体系统效率。

两阶段 Shaping:
• 令牌桶塑造平滑IO请求并限制其异常值。双状态令牌桶算法允许更多的IO突发性,以优化设备带宽的利用率。
• 然而,设备带宽是有限的。当我们有多个嘈杂/高需求的租户时,我们需要确保设备不会被过度预订。因此,我们提出第二阶段令牌桶,即设备级令牌桶:
图中SPS和DPS是Performance Shaping Mechanism中的关键组件,它们代表了两阶段整形机制的不同部分:
SPS (Set Per Service) 指的是每个服务集合或每个QoS (Quality of Service) 集合的设置。这是第一阶段的令牌桶机制,用于平滑IO请求并限制异常值。
DPS (Device Per Service) 则指设备级别的服务设置。这是第二阶段的令牌桶机制,即图中提到的Device Level Token bucket。
这两个组件共同构成了两阶段整形机制:
这种两阶段方法允许在优化单个服务性能的同时,还能在设备级别进行整体控制,从而实现更精细和高效的性能优化。这对于管理多租户环境下的存储资源分配和性能保证至关重要。

Performance Shaping 模拟测试
目标:

左图显示业务系统对存储IO的请求有明显的波动(Noisy neighbor),出现3个台阶:50K、100K、和150K;右图的业务系统IO请求相对比较平稳(Good neighbor),恒定在100K左右。

通过两阶段-令牌桶机制协调多应用系统的IO。
在SPS阶段,通过State Rate 将业务IO平滑;在DSP阶段聚合多个业务系统的IO。

基于 PerformaShape 技术实现:
Note: 严格来说系统并没有实现16GB/s 的实际带宽,13GB/s 是单盘实测带宽,基于PerformaShape可以平滑偶发高带宽请求(低优先级,延迟响应),从而保证其他租户带宽不受影响。
---【本文完】---