【产品名称】ob
【产品版本】
【问题描述】
- 一个租户的max_cpu是12,cpu_count是22,使用过程中会不会把所有的22个cpu都打满,cpu跟内存的限制是一样严格还是说默认就允许超卖使用。
- 这个cpu_quota_concurrency(默认是4)参数的作用下,cpu默认就是超卖了,针对多租户,资源隔离不彻底,是否能调整为1呢?
【产品名称】ob
【产品版本】
【问题描述】
首先cpu_quota_concurrency的值改成1,cpu可能跑满。
其次如果设置成4,一个租户可能导致整个集群上其他所有租户不可用。
最后综合考虑更建议默认超卖,否则cpu少的租户,可能都很难正常执行sql.
这个问题的结论是什么呢?
CPU 和内存的超卖
如果一个 OBServer 上放置的所有 Unit 的 MAX_CPU 的值加起来超过这个 OBServer 的可用 CPU 总数,则表示该 OBServer 上的 CPU 是超卖的。
同理,如果所有 Unit 的 MAX_MEMORY 加起来超过该 OBServer 上可以分配的 Memory,则表示该 OBServer 上的 Memory 是超卖的。
OBServer 资源超卖的比例受配置项 resource_hard_limit 的控制,假设 resource_hard_limit=200,那就意味着可以超卖成 2 倍,即 16 个 CPU 可以超卖成 32 个,16G 的内存可以超卖成 32G。
超卖是通过牺牲稳定性来获取更高的资源利用率的方案,是否要开启超卖需要根据应用特性和应用的 SLA 要求仔细评估。例如,一个比较适合的场景就是业务的研发测试环境。
https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000450133