【用户分享】闲话 OB 多租户资源隔离技术

庆涛大佬 @obpilot 今天发了一篇公众号文章《闲话 OB 多租户资源隔离技术》。这篇文章介绍了 OceanBase 多租户资源隔离技术的历史和原理,展示了 OB 4.x 多租户资源隔离的案例,并简述了 OB CPU 的超卖技术的最佳实践。在这里推荐大家阅读!

From 庆涛:本文跟性能密切相关,OB 4.2+ 的客户或公有云客户感兴趣的可以看看。

4 个赞

最后再多数一句给 OB 配置 CPU 超卖的事情,庆涛在文中说如果 CPU 资源充足的话,就尽量不要超卖。

其实 CPU 超卖适用于同一 OB 集群中不同租户间峰值错峰的场景,可以提高整体资源使用率。

如果租户间峰值同时出现,开启 CPU 超卖可能导致租户之间 CPU 资源的互相抢占,互相影响,反倒可能会出现负面效果。

大家根据实际情况选择是否配置 CPU 超卖(一般来说,还是不要配置超卖的好)。

3 个赞

说的对,谢谢哈!

2 个赞

庆涛出品,必属精品。紧抱涛神大腿!

2 个赞

感谢分享

1 个赞

再想了一想,超卖或许还有可为的道理。

接上文,即使不开超卖,两个租户该有的CPU竞争还是不可避免。只不过这个时候两个租户凭实力竞争。实力就是各自的 max_cpu 或者 min_cpu(没有超卖时二者是相等的)。
当超卖时,二者竞争时各自的 max_cpu 是保障不了,但是 min_cpu 应该还是能有一定保障(cgroup.cpu_shares 机制能相对控制时间分配比例)。因此也可以理解为凭 min_cpu 竞争。
这样我们就把解释统一了。

然后需要调整的是OCP 里租户CPU 利用率算法。目前分母是租户的 max_cpu,所以即使租户cpu 超卖使用,这个最大也就是 100%。但是如果分母改为 min_cpu,那么这个值就可以突破 100%。这才是超卖的实际观察体现。这样就能引导用户,租户的 min_cpu 是租户应得的,是OB 要保障的租户的基本权益,max_cpu 如果比min_cpu 大,超出的部分是时超卖的红利,是bonus,但不是一定有的。如果多个租户激烈竞争,各自的bonus 就打折扣,最坏就是都没有。bonus 没有,不能抱怨。bonus 有了,暗自高兴。

如此,你担心的超卖影响就能完美统一解释。对于普通不开超卖的租户,上面这个调整也不影响实际
租户CPU 利用率表现。
从这里可以看出,如果产品设计深入到人心,可能发挥意想不到的效果。

很早的版本,租户CPU 利用率可以超过 100,那时候没有cgroup,超过 100 是符合逻辑的(看文章里思考)。也间接说明仅凭OBSERVER 进程内部做CPU 资源隔离,是无法绝对隔离。也是一个变相的超卖效果。现在有了cgroup 隔离技术,可以更有效的控制一个租户的cpu 利用率,反而可以压制超卖。所以此时适当主动进行超卖设置我觉得也可以。关键在于产品租户cpu 利用率计算逻辑里的那个分母选什么(选择会引导客户心智)。

当然,cpu_shates 那个控制技术效果需要OB 租户做更多的测试数据验证。我推测有关于 cgroup 的CPU 资源隔离技术效果在cgroup 技术出来时的争论也有一波。都是定义的问题。

3 个赞

谢谢分享!

1 个赞

感谢分享

1 个赞

感谢分享

1 个赞

:+1: :+1: :+1: