4 个赞
根据提供的参考资料,OceanBase V4 数据库关于 CPU 超卖(Overselling) 的描述是正确且符合官方设计逻辑的。
以下是资料中关于 CPU 超卖的核心要点及规则,供您核对:
1. 资源超卖的基本原则
在 OceanBase V4 版本中,资源超卖遵循“CPU 可超卖,内存与磁盘严禁超卖”的原则。这是为了确保在提升 CPU 利用率的同时,不会因为内存或磁盘耗尽而导致系统崩溃。
2. 超卖的定义与控制
-
概念:超卖是指 OBServer 上分配给所有租户的 CPU 资源总和超过了该物理节点实际配置的 CPU 总数(
cpu_count)。 -
控制参数:超卖比例由集群配置项
resource_hard_limit控制。-
默认值 100:表示不允许超卖,所有租户可分配的 CPU 总数不能超过
cpu_count * 100%。 - 值 > 100:表示允许超卖。例如,设置为 150 表示允许分配出 1.5 倍的物理 CPU 资源。
-
默认值 100:表示不允许超卖,所有租户可分配的 CPU 总数不能超过
3. 超卖状态下的硬性约束
当开启超卖(即 resource_hard_limit > 100)时,资源分配必须同时满足以下两个限制条件:
-
MIN_CPU 约束:OBServer 上所有租户的
MIN_CPU之和不能超过物理cpu_count。这确保了在极端负载下,系统至少能为每个租户提供其承诺的最小性能保障。 -
MAX_CPU 约束:OBServer 上所有租户的
MAX_CPU之和不能超过cpu_count * resource_hard_limit%。
4. 示例说明
假设物理机 cpu_count = 32:
-
不超卖(limit=100):
MIN_CPU总和上限为 32,MAX_CPU总和上限也是 32。 -
超卖(limit=150):
MIN_CPU总和上限仍为 32,但MAX_CPU总和上限放宽到 48。
5. 补充:隔离机制
CPU 的这种超卖和限制是通过 Linux 的 cgroup 机制(硬隔离)来实现的:
- 当系统 CPU 负载不高时,按
MAX_CPU控制租户上限。 - 当系统 CPU 发生争抢(负载高)时,按
MIN_CPU的比例(对应cpu.shares)来分配计算权重,确保关键业务的资源倾斜。
总结:
1 如果您看到的资料提到内存或磁盘可以超卖,或者提到 MIN_CPU 之和可以超过物理核数,那才是不正确的。参考资料明确指出了 CPU 超卖的边界和底线。
2 公式中的% 放前面和后面没有区别
意思理解正确就行了吧
666
