RSS低而AnonPages高,说明匿名页未被进程RSS统计覆盖,常见原因包括内核内存分配、大页、进程退出后页未回收等;需结合/proc/meminfo、slabtop、page_owner、tmpfs检查及THP状态综合排查。

这通常说明系统中存在大量匿名页(anon pages),但这些页面未被任何进程的 RSS 统计覆盖——最常见原因是 内核内存分配(如 slab、page cache 的 anon 部分)、大页(THP)、或进程已退出但页未及时回收。RSS 低而 anon 高,核心矛盾在于:RSS 只统计当前进程映射且活跃的匿名页,不包含内核占用、共享页、延迟释放页等。
查清 anon 页面真实归属
不要只看 /proc/meminfo 的 AnonPages,它只是总和。需逐层下钻:
- 运行
cat /proc/meminfo | grep -E "(AnonPages|Shmem|FilePages|SReclaimable|Slab)",观察 Shmem(tmpfs/shm)是否异常高——tmpfs 文件会被计入 AnonPages,但不计入任何进程 RSS; - 检查
/sys/kernel/debug/page_owner(需开启 CONFIG_PAGE_OWNER)可追溯每页分配栈,定位内核模块或驱动的匿名页泄漏; - 用
slabtop -o查看 slab 中 anon 相关缓存(如kmalloc-*、page-、anon_vma)是否持续增长; - 运行
echo m > /proc/sysrq-trigger后检查dmesg,确认是否有 page allocation failure 或大量 direct reclaim。
排查 tmpfs 和 POSIX 共享内存
tmpfs 文件(/dev/shm、/run、自定义挂载点)的内容属于匿名页,但归属文件系统而非进程。即使进程已退出,只要文件未 unlink,页就一直驻留:
- 执行
find /dev/shm /run -xdev -type f -ls 2>/dev/null | head -20,看是否有大文件残留; - 用
ipcs -m检查 System V 共享内存段,特别是cpid为 0 或lpid异常的段; - 检查应用是否使用 mmap(MAP_ANONYMOUS|MAP_SHARED) 创建大块共享匿名区,且未 munmap 或未设 close-on-exec 导致子进程继承后泄漏。
检查透明大页(THP)与内存碎片
THP 的 fallback 分配或拆分失败时,可能产生大量孤立的 anon huge page 后备页,RSS 不体现,但计入 AnonPages:
- 查看
cat /sys/kernel/mm/transparent_hugepage/{defrag,enabled}状态; - 检查
/proc/buddyinfo是否存在大量不可用的高阶空闲页(如 order-9+ 缺失),导致 THP 折叠失败、退化为普通页堆积; - 运行
grep -i "thp\|huge" /proc/vmstat,关注pgmajfault、thp_split、thp_collapse_alloc等指标突增情况。
确认是否存在僵尸页或延迟回收
进程 exit 后,其 anon vma 若仍有 page fault 引用(如 core dump 中断、ptrace 暂停、或 cgroup memory.pressure 高导致延迟 LRU 移动),页可能滞留在 inactive anon LRU 链表中:
- 用
cat /proc/vmstat | grep -E "(pgpgin|pgpgout|pgmajfault|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpgin|pgpgout|pgpg








