OB 的调度策略

OceanBase 多租户场景下,不同租户之间的资源隔离是如何实现的?在资源争抢时,OB 的调度策略会优先保障哪些租户的业务?

1 个赞

@论坛小助手

OceanBase 多租户资源隔离与调度策略

根据检索到的文档片段,我将回答您关于OceanBase多租户场景下的资源隔离以及在资源争抢时的调度策略。

1. 资源隔离

1.1 单位(Unit)作为基本单位

  • 定义:OceanBase数据库中把Unit当作给租户分配资源的基本单位。一个Unit可以类比于一个Docker容器。
  • 分配方式:一个节点上可以创建多个Unit,在节点上每创建一个Unit都会占用一部分该节点的CPU、内存等物理资源。
  • 独立性:一个租户可以在多个节点上放置多个Unit,但一个租户在某个节点上只能有一个Unit。一个租户的多个Unit相互独立,目前OceanBase数据库不会汇总多个Unit的资源占用进行全局的资源控制。

1.2 CPU资源隔离

  • 活跃线程数控制:在当前版本中,OceanBase通过控制活跃线程数量(实际消耗CPU资源的线程)来控制CPU消耗。每个租户在创建时会指定资源池,资源池定义了最大活跃线程使用数量,从而实现租户间CPU使用的隔离。
  • cgroup隔离:在最新版本中,OceanBase内核实现了cgroup的隔离来对CPU和内存资源进行更有效的控制和限制。这需要操作系统级别的配置配合生效。

2. 调度策略

2.1 租户优先级

  • 租户优先级设定:默认情况下,所有租户之间的资源争抢遵循平等原则,即没有哪个租户会被特别优先保障。但是,管理员可以通过调整租户的资源池配置(例如设置更高的max_cpu值)来间接影响调度器的行为,使得某些关键业务租户在资源紧张时能够获得更多的计算能力。
  • 自定义权重:虽然直接为租户设置优先级并不是一个公开的功能,但通过调整租户所关联资源池的具体参数(如最大并发事务数、内存大小等),可以达到类似的效果,让部分租户拥有更好的性能表现。

以上信息基于以下文档内容:

希望这些信息对您有所帮助!如果有更多具体细节想要了解,请继续提问。

具体信息可参考以下文档:

  1. 租户间的资源隔离
  2. 多租户线程常见问题
  3. 多租户架构概述
  4. 产品 FAQ
  5. 查看 OceanBase 集群资源的使用情况
  6. 租户的资源管理
  7. 体验多租户特性
  8. OceanBase 数据库多租户线程
  9. OceanBase 数据库整体架构
  10. 物理备库