【产品/功能变更】RDS PostgreSQL实例的增强监控内存相关指标项优化

优化生效时间

2024年04月25日

优化内容

RDS PostgreSQL在基础监控外,提供了丰富的增强监控项,包括操作系统指标(OS指标)和数据库指标(DB指标)。产品控制台的监控项展示中,未详细展示内存占用情况。本次优化不仅在展示上进行了调整,展示了内存占用情况,同时还对独享型和通用型规格的内存相关指标进行了统一,并增加了内存分析等功能。

说明

增强监控内存相关指标优化后,实例规格及性能均不会发生变化。然而,由于计算逻辑调整,监控指标中展示结果更加精确,部分指标可能触发告警。您可以前往RDS控制台的监控与报警,重新设定告警规则。

内存使用率计算逻辑优化

独享型实例

  • 优化前:内存使用率=1- (/proc/meminfo.MemAvaliable / 规格内存 * 100%)

  • 优化后:内存使用率=1- (/proc/meminfo.MemAvaliable / MemTotal * 100%)

通用型实例

内存使用率计算保持不变,计算逻辑为:内存使用率=1- 可用内存/规格内存,其中可用内存=(memory.limit_in_bytes - memory.usage_in_bytes) + (inactive_file + active_file) - min((inactive_file + active_file) / 2, 4%*规格内存)

数据来源和计算方式优化

OS指标维度

优化指标项

指标名

指标定义

实例类型

优化前

优化后

数据来源

数据计算方式

数据来源

数据计算方式

os.mem_size.spec

实例规格的内存大小

独享型

mem_size

mem_size

保持不变。

通用型

mem_size

os.mem_size.used

内存使用量

独享型

/sys/fs/cgroup/memory/memory.usage_in_bytes

mem_rss + mem_mapped_file + hugetlb_usage_2m

/proc/meminfo

MemTotal - MemAvailable

通用型

/sys/fs/cgroup/memory/memory.usage_in_bytes

mem_rss + mem_mapped_file + hugetlb_usage_2m

保持不变。

os.mem_size.rss

常驻进程内存使用量

独享型

/sys/fs/cgroup/memory/memory.stat

memory.stat.rss

/proc<pid>/smaps

系统所有进程smaps的PSS值之和。

通用型

/sys/fs/cgroup/memory/memory.stat

memory.stat.rss

保持不变。

os.mem_size.cache

page cache内存

独享型

/sys/fs/cgroup/memory/memory.stat

memory.stat.cache

/proc/meminfo

Cached的值。

通用型

/sys/fs/cgroup/memory/memory.stat

memory.stat.cache

保持不变。

os.mem_size.hugetlb_usage_2m

2M大页使用量

独享型

/sys/fs/cgroup/hugetlb/hugetlb

hugetlb.2MB.usage_in_bytes

/proc/meminfo

(HugePages_Total -HugePages_Free) * 2

通用型

/sys/fs/cgroup/hugetlb/hugetlb

hugetlb.2MB.usage_in_bytes

保持不变。

新增指标项

指标名

指标定义

实例类型

数据来源

数据计算方式

os.mem_size.reserved

操作系统预留内存

独享型

/proc/meminfo

规格内存 - memTotal

通用型

该指标显示值为0。

os.mem_size.virtual

虚拟化占用内存(k8s相关组件占用的内存)

独享型

/proc/<pid>/smaps

从/proc/<pid>/stat中过滤出k8s相关进程,再通过/proc/<pid>/smaps计算这些内存的Pss(Proportional Set Size)值。

通用型

该指标显示值为0。

os.mem_size.rds_process

RDS管控进程占用内存

独享型

/proc/meminfo

os.mem_size.rss - db.mem_size.rss - k8s相关进程的内存

通用型

该指标显示值为0。

os.mem_size.free

操作系统空闲内存

独享型

/proc/meminfo

memFree的值。

通用型

/sys/fs/cgroup/memory

memory.limit_in_bytes - memory.usage_in_bytes

os.mem_size.available

操作系统可用内存

独享型

/proc/meminfo

memAvailable的值。

通用型

/sys/fs/cgroup/memory

free + pagecache - min(pagecache / 2, 4%*实例内存)

说明
  • 空闲内存:os.mem_size.free指标的采集方式与计算方式,与db.mem_size.free相同;空闲内存的指标属于操作系统层面的监控指标,因此在操作系统维度中增加指标os.mem_size.free,后续逐渐会停止对db.mem_size.free的使用。

  • 可用内存:os.mem_size.available指标的采集方式与计算方式,与db.mem_available.size相同;可用内存的指标属于操作系统层面的监控指标,因此在操作系统维度中增加指标os.mem_size.available,后续逐渐会停止对db.mem_available.size的使用。

DB指标维度

指标名

指标定义

实例类型

优化前

优化后

数据来源

数据计算方式

数据来源

数据计算方式

db.mem_size.spec

实例规格展示的memory大小

独享型

不涉及数据采集和计算。

通用型

db.mem_size.free

空闲内存(可回收内存)

独享型

/proc/meminfo

meminfo.MemFree

不涉及优化。

后续使用新增指标os.mem_size.free。

通用型

/sys/fs/cgroup/memory

memory.limit_in_bytes - memory.usage_in_bytes

db.mem_size.available

可用内存(可回收内存)

独享型

/proc/meminfo

MemAvaliable

不涉及优化。

后续使用新增指标os.mem_size.available。

通用型

/sys/fs/cgroup/memory 

(memory.limit_in_bytes - memory.usage_in_bytes) + (inactive_file + active_file) - min((inactive_file + active_file) / 2, 4%*实例内存)

db.mem_size.rss

pg 进程 rss 内存使用量(不可回收内存)

独享型

/proc/meminfo

规格内存 - (MemFree + ActiveFile + InactiveFile + SRecclaimable + shared_buffer)

/sys/fs/cgroup/memory/

memory.usage_in_bytes - inactive_file - active_file

通用型

/sys/fs/cgroup/memory

memory.usage_in_bytes - inactive_file - active_file

保持不变。

db.mem_size.shared_buffer

shared_buffer内存使用量(可回收内存)

独享型

/proc/meminfo

HugePages_Total * Hugepagesize

保持不变。

通用型

/sys/fs/cgroup/hugetlb/hugetlb.2MB.usage_in_bytes

hugetlb.2MB.usage_in_bytes

固定为规格内存的25%。

db.mem_size.cache

page cache内存使用量(不可回收内存)

独享型

/proc/meminfo

ActiveFile + InactiveFile + SReclaimable

/sys/fs/cgroup/memory/

inactive_file + active_file

通用型

/sys/fs/cgroup/memory/memory.stat

inactive_file + active_file

保持不变。

优化影响

  • 指标优化不会对实例规格和性能产生影响。

  • 因计算逻辑调整,监控指标的展示结果会有所变化。