优化生效时间
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 | |||||
os.mem_size.used | 内存使用量 | 独享型 | /sys/fs/cgroup/memory/memory.usage_in_bytes |
| /proc/meminfo |
|
通用型 | /sys/fs/cgroup/memory/memory.usage_in_bytes |
| 保持不变。 | |||
os.mem_size.rss | 常驻进程内存使用量 | 独享型 | /sys/fs/cgroup/memory/memory.stat |
| /proc<pid>/smaps | 系统所有进程smaps的PSS值之和。 |
通用型 | /sys/fs/cgroup/memory/memory.stat |
| 保持不变。 | |||
os.mem_size.cache | page cache内存 | 独享型 | /sys/fs/cgroup/memory/memory.stat |
| /proc/meminfo | Cached的值。 |
通用型 | /sys/fs/cgroup/memory/memory.stat |
| 保持不变。 | |||
os.mem_size.hugetlb_usage_2m | 2M大页使用量 | 独享型 | /sys/fs/cgroup/hugetlb/hugetlb |
| /proc/meminfo |
|
通用型 | /sys/fs/cgroup/hugetlb/hugetlb |
| 保持不变。 |
新增指标项
指标名 | 指标定义 | 实例类型 | 数据来源 | 数据计算方式 |
os.mem_size.reserved | 操作系统预留内存 | 独享型 | /proc/meminfo |
|
通用型 | 该指标显示值为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 |
|
通用型 | 该指标显示值为0。 | |||
os.mem_size.free | 操作系统空闲内存 | 独享型 | /proc/meminfo | memFree的值。 |
通用型 | /sys/fs/cgroup/memory |
| ||
os.mem_size.available | 操作系统可用内存 | 独享型 | /proc/meminfo | memAvailable的值。 |
通用型 | /sys/fs/cgroup/memory |
|
空闲内存: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 |
| 不涉及优化。 后续使用新增指标os.mem_size.free。 | |
通用型 | /sys/fs/cgroup/memory |
| ||||
db.mem_size.available | 可用内存(可回收内存) | 独享型 | /proc/meminfo |
| 不涉及优化。 后续使用新增指标os.mem_size.available。 | |
通用型 | /sys/fs/cgroup/memory |
| ||||
db.mem_size.rss | pg 进程 rss 内存使用量(不可回收内存) | 独享型 | /proc/meminfo |
| /sys/fs/cgroup/memory/ |
|
通用型 | /sys/fs/cgroup/memory |
| 保持不变。 | |||
db.mem_size.shared_buffer | shared_buffer内存使用量(可回收内存) | 独享型 | /proc/meminfo |
| 保持不变。 | |
通用型 | /sys/fs/cgroup/hugetlb/hugetlb.2MB.usage_in_bytes |
| 固定为规格内存的25%。 | |||
db.mem_size.cache | page cache内存使用量(不可回收内存) | 独享型 | /proc/meminfo |
| /sys/fs/cgroup/memory/ |
|
通用型 | /sys/fs/cgroup/memory/memory.stat |
| 保持不变。 |
优化影响
指标优化不会对实例规格和性能产生影响。
因计算逻辑调整,监控指标的展示结果会有所变化。