标准答案
- VSZ 可能包含尚未实际驻留的映射、共享库和保留地址空间,不能直接作为物理内存占用。
- RSS 表示进程当前驻留页面,但共享库、共享内存等页面可能被多个进程共同计入。
- PSS 会按共享比例分摊,更适合估算进程对系统内存的实际贡献;USS 只统计进程独占部分。
- 文件缓存属于内核可回收内存的一部分,排查内存压力时要结合 available、匿名页、回收和 swap,而不是只看 free。
题目解析
VSZ 是进程映射的虚拟地址空间总量,可能包括尚未驻留的保留区;RSS 是当前驻留在物理内存中的页面,但其中可能有共享库、共享内存和文件映射。PSS 会按共享比例分摊,通常更适合估算一个进程实际承担的内存成本;容器排障还要看 cgroup 的 memory.current 和 memory.events。
page cache 是内核为文件 I/O 做的缓存,可能在压力下回收,也可能因为脏页、内核对象或 cgroup 限制表现为真实压力。判断泄漏要结合流量回落后的 RSS/PSS 趋势、匿名内存、映射、堆分配和回收事件,不能只看某一时刻的 free 或 cache 数字。
常见误区
- 误区:把 VSZ 当成真实物理内存。改正:结合 RSS、PSS、匿名页和文件映射判断驻留内存。
- 误区:直接把多个 RSS 相加当成节点独占内存。改正:考虑共享页,必要时使用 PSS 和 cgroup 统计。
- 误区:看到 page cache 增长就认定泄漏。改正:观察回收、脏页、I/O 延迟和流量回落后的趋势。