observer 分配内存问题

【 使用环境 】测试环境
【 OB or 其他组件 】ob
【 使用版本 】4.2.1
【问题描述】使用ocp白屏安装后,在ocp管控中创建集群,并且添加3个observer,没有特殊配置内存参数,3个observer内存都是16G,按照默认的“memory_limit_percentage 设置为 80,表示使用 80% 的内存”,总共内存是12G,是没问题的。但是我管控页面三台observer都显示是7G,如下图:


通过如下命令查看:
select a.zone,

a.SVR_IP,

a.SVR_PORT,

b.status,

cpu_capacity,

cpu_assigned_max,

cpu_capacity-cpu_assigned_max as cpu_free,

round(memory_limit /1024/1024/1024 ,2) as memory_total_gb,

round((memory_limit-mem_capacity) /1024/1024/1024 ,2) as system_memory_gb,

round(mem_assigned /1024/1024/1024 ,2) as mem_assigned_gb,

round((mem_capacity-mem_assigned) /1024/1024/1024 ,2) as memory_free_gb,

round(log_disk_capacity /1024/1024/1024 ,2) as log_disk_capacity_gb,

round(log_disk_assigned /1024/1024/1024 ,2) as log_disk_assigned_gb,

round((log_disk_capacity-log_disk_assigned) /1024/1024/1024 ,2) as log_disk_free_gb,

round((data_disk_capacity /1024/1024/1024 ),2) as data_disk_gb,

round((data_disk_in_use /1024/1024/1024 ),2) as data_disk_used_gb,round((data_disk_capacity-data_disk_in_use) /1024/1024/1024 ,2) as data_disk_free_gb

from gv$ob_servers a join oceanbase.DBA_OB_SERVERS b on a.zone=b.zone
image
这有个“”system_memory_gb”占用了5G。那我页面的3台observer,每台总共的内存应该显示是12G把,而不是7G把,然后系统占用5G,剩余7G可用,是不是应该这样显示呢
【复现路径】如上面说所
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

OCP上面显示的内存=memory_limit(或者memory_limit_percentage*总内存)-system_memory吧

show parameters LIKE ‘%memory%’; 看下。
上面说明是正确得。
memory_limit(或者memory_limit_percentage*总内存)-system_memory是可用得。

现在ocp上显示7G,是你这样算的。


然后我sys是占用了5G,就剩余2G了。
但我实际有12G,sys占用5G,我应该还剩余7G啊,不应该剩余2G。

image

取值为 0 表示系统会自动根据当前系统的内存情况来调整内存使用策略。
可以通过



进行修改

sys租户占用的内存和system_memory是两个东西,sys租户是管理一些ob内部表,system_memory是500租户使用的内存,是所有真实租户都会共享的部分资源或公用功能的内存。OCP上显示的是sys租户和业务租户可用的内存,比如你界面上是7.4G,如果sys租户的资源规格内存是5G的话,那业务租户可用就是7.4-5=2.4G了

好的,已经修改成功了。

好的,明白了,已经修改成功了。