假如我的observer为8c,将cpu_count值设置为16,新建租户分配cpu数为8c,那么这个租户实际分配了多少c?
实际最大还是8C啊
资源不足的时候是可以这样干。特别是测试环境,CPU并不是分多少就用多少。这个可以多分几个租户,最大化利用资源。
跟开CPU 超卖差不多,不过CPU超卖最大只能200%
根据文档库中的信息,我们可以从以下几个方面来解答您的问题:
-
节点的可用 CPU
根据“租户间的资源隔离 → 资源分类 → 节点的可用 CPU”部分的描述,OceanBase 数据库在启动时会探测物理机或容器的在线 CPU 个数。如果探测到的 CPU 数量为 8c(即您的 observer 实际拥有 8c),那么这是该节点可以使用的总 CPU 数量。需要注意的是,节点会为后台线程预留两个 CPU,因此实际可以分给租户的 CPU 总数会少两个,即只剩下 6c 可供分配。 -
cpu_count 参数的作用
cpu_count
参数用于指定 OceanBase 数据库能够探测到的 CPU 数量。如果将cpu_count
设置为大于实际探测到的 CPU 数量(例如设置为 16c,而实际只有 8c),这并不会增加实际可用的 CPU 数量。也就是说,即使您将cpu_count
设置为 16c,实际可用的 CPU 数量仍然受限于硬件的实际能力(8c)。 -
租户分配的 CPU 数量
当您新建一个租户并为其分配 8c 的 CPU 资源时,由于节点实际可用的 CPU 数量只有 6c(因为预留了 2c 给后台线程),所以这个租户实际能够分配到的 CPU 数量最多为 6c。即使您配置了更高的 CPU 分配值(如 8c),超出部分也无法被使用。
结论
根据上述分析,您的租户实际分配到的 CPU 数量为 6c,而不是配置的 8c。这是因为节点实际可用的 CPU 数量受到硬件限制,并且需要为后台线程预留部分 CPU。
如果您希望租户能够真正使用到 8c 的 CPU 资源,您可以考虑以下两种方法:
- 确保运行 OceanBase 的机器实际拥有至少 10c 的 CPU(以保证在预留 2c 后仍有 8c 可用)。
- 或者调整租户的 CPU 配置,使其不超过实际可用的 CPU 数量。
参考文档标题及段落:
- “租户间的资源隔离 → 资源分类 → 节点的可用 CPU”
- “多租户线程常见问题 → 3.OceanBase 数据库的多租户架构中是如何做到 CPU 资源的有效隔离的?”
检索到的文档如下: