CAS CVK 主机:内存利用率>内存分配比分析
截图现象:内存利用率 91.97%,内存分配比 90.57%H3C
- 内存分配比:所有虚拟机配置分配内存总和 ÷ 主机物理总内存(是虚拟机配置规格的总和,不看虚拟机实际用多少)。
- 内存利用率:CVK 宿主机真实物理内存已经使用的百分比(包含:虚拟机实际占用 + CVK 系统本身、内核、Ceph / 存储组件、缓存、内核 slab、Qemu‑KVM 进程开销)H3C。
👉 内存利用率大于内存分配比,不等于内存泄露,属于可以出现的正常现象
- 内存分配比只统计虚拟机配置的分配内存;
- 主机内存利用率 = 虚拟机真实占用 + CVK 系统开销、存储组件(Ceph OSD、rados)、内核缓存、slab、qemu 进程额外开销。
超融合 CVK 节点,Ceph 存储组件本身就要吃掉大量物理内存(OSD、pagecache),这部分不计入虚拟机内存分配比,但会算进主机内存利用率,所以会出现利用率>分配比。
举你现场例子
- 分配比 90.57%:全部 VM 配置内存总和占主机 90.57% 物理内存;
- 利用率 91.97%:VM 实际占用 + CVK 系统 + Ceph 存储组件,合计到 91.97%。
多出的 1.4%,就是宿主机本身、存储服务、内核缓存占用。
怎么区分是正常缓存,还是真内存泄露?
✅正常缓存特征(绝大多数超融合 CVK)
- 长期稳定在 90‑92%,不会持续缓慢上涨;
free -m看,大量内存在buff/cache;
- 没有 swap 大量使用,无 OOM 内核日志;
- Ceph OSD 进程内存占用稳定。
⚠️真正内存泄露特征
- 观察几天监控,内存利用率随时间持续不断上涨,慢慢逼近 100%;
- free‑m 看到 available 持续下降;swap 被大量使用;
dmesg出现 OOM killer 杀死进程;
- qemu、ceph‑osd、libvirt 等进程 RSS 持续只涨不降。
CVK 后台排查命令(登录 CVK 主机 SSH 执行)
#1 查看整机内存
free -m
#2 按内存排序看进程,重点看ceph‑osd、qemu‑kvm进程
ps aux --sort=-%mem
#3 查看内核slab缓存(超融合节点slab会占用大量内存)
cat /proc/slabinfo
#4 查看系统是否发生OOM
dmesg | grep -i oom
#5 查看Ceph OSD内存占用
ceph daemon osd.0 status
超融合 CVK 重要注意点
- Ceph OSD 会大量吃内存做缓存,这是设计行为,不是泄漏,超融合节点该现象非常普遍;
- 虚拟机如果没有安装 castools,qemu‑kvm 会直接占用虚拟机全部分配内存,会进一步拉高主机内存利用率知了社区;
- 内存分配比 90.57% 已经偏高,虚拟机分配内存总和已经接近主机物理内存,留给 CVK 系统 + 存储的余量很小;生产建议虚拟机内存分配比尽量不要超过 85%。
简单总结
- 单次快照看到内存利用率>内存分配比,不能判定内存泄露,超融合 CVK 很常见,来自 Ceph、内核缓存、宿主机系统开销。
- 判断泄露要看多天历史曲线:内存是否持续单向上涨、是否出现 swap、OOM 日志。
- 当前分配比 90.57%,已经比较吃紧,建议评估降低虚拟机内存分配总和,预留足够内存给 CVK 和 Ceph 存储。
暂无评论