SPDK负载均衡初探

背景

SPDK以轮询方式高效的处理请求,能够最大化的利用CPU达到高性能的目的。

当SPDK应用需要提供大量vhost设备,iSCSI或NVMe-oF服务时,默认情况下,如图1,SPDK内承载各个存储服务工作的协程(基于spdk_thread结构)会均匀分布在SPDK绑定的CPU核心上。这样的设置能够满足SPDK涉及的大多数工作场景。

Figure 1. SPDK Reactor, thread与CPU core的映射关系

但是,每个存储服务的工作协程负载大小会有不同,而且会随时间变化;单个CPU核心上轮询执行的几个存储服务的工作协程,它们的负载总和有可能会超过该CPU核心的计算能力。上述两种条件同时发生时,会出现一种情形,如图2:在某一时刻,SPDK使用的一部分CPU核心承担的负载超过它的计算能力,其上的IO负载会有过高的时延,同时吞吐量也有可能下降;而同一时刻,SPDK使用的另一部分CPU核心,对应工作协程的负载不高,存在一定量的空闲计算能力。

Figure 2. SPDK工作负载不均分布在各个核心

对于追求性能极致的用户来说

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值