这台ObServer上最多可部署多少个Unit?

【单选题】假设一台服务器的规格是128C 512G,在这台服务器上部署ObServer,配置项:
memory_limit =480
memory_limit_percentage =80
system_memory=20
仅有一种租户Unit规格为16c64G,这台ObServer上最多可部署多少个Unit?
A.5
B.6
C.7
D.8

3 个赞

480 / 64 =7.5 ,7台

1 个赞

从cpu角度算:128/16=8
从内存角度算:512-20=492足够memory_limit 480,则480/64=7.5取整为7
7<8,那么瓶颈为内存,则需要按内存算为7

按CPU核数和内存去除,取短板那个。
并且四舍五也舍。
余留下来的给sys租户。

现实还要考虑的更多,比如全分配完了,那每个租户在这个节点上都没有上调的余地了。

1.memory_limit = 480:表示该ObServer实例的内存限制为480GB。
2.memory_limit_percentage = 80:表示该ObServer实例的内存使用率上限为80%。
3.system_memory = 20:表示系统预留内存为20GB。
解题步骤
‌计算可用内存‌:

服务器总内存:512GB。
系统预留内存:20GB。
因此,可用内存为 512GB - 20GB = 492GB。
‌应用内存限制‌:

memory_limit = 480:表示ObServer实例的内存限制为480GB。
memory_limit_percentage = 80:表示ObServer实例的内存使用率上限为80%。
因此,实际可用内存为 min(480GB, 492GB * 80%) = min(480GB, 393.6GB) = 393.6GB。
‌计算可部署的Unit数量‌:
每个Unit占用64GB内存。 因此,可部署的Unit数量为 floor(393.6GB / 64GB) = floor(6.15) = 6。 4. ‌验证CPU限制‌:
服务器总CPU核数:128核。 每个Unit占用16核CPU。 因此,可部署的Unit数量为 floor(128 / 16) = 8。 由于内存限制(6个Unit)小于CPU限制(8个Unit),因此最终以内存限制为准。
最终答案: ‌B.6

指定了limit,percent就不生效了,怎么还有min这个计算呢

  • memory_limit =480
  • memory_limit_percentage =80
  • system_memory=20
  • memory_limit 优先级高于memory_limit_percentage,实际内存配置为480G
  • system_memory不包括在memory_limit中,不占用480G大小

按16c64G作为unit

  • 内存:480/64 = 7.5
  • CPU: 128/16 = 8

结果:取整最多7个

租户可用的内存 是memory_limit-system_memory 。

memory_limit与memory_limit_percentage两个参数同时设置,memory_limit 优先,此时ob server 数据库可用内存480g, 租户可用内存=memory_limit-system_memory =480G-20G=460G
460G/64=7
cpu_count 没有说明,默认为0,检查实际可用CPU 数量,即128C ,128/16=8,
综合上面应该选C