swappiness=10 后仍频繁 swap 的 anon page / file-backed page 区分排查-SQL

要确认 swap 的是 anon page 还是 file-backed page,需结合 /proc/vmstat 中的 pswpin/pswpout 与 /proc/*/smaps 的 Swap 字段,并用 pmap -x 观察 ANON 和 SWAP 列是否同步增长:若 ANON 高且 SWAP 同步上升,则为 anon page 被 swap。

怎么确认 swap 的到底是 anon page 还是 file-backed page

Linux 的 swappiness 只影响内核在内存压力下「倾向」换出哪类页,但不禁止换出任何一类。所以即使设成 swappiness=10,swap 仍可能高频发生——关键得先分清:到底是谁在被 swap?

用 /proc/vmstat 最直接:pgpgin/pgpgout 是 I/O 页计数,不区分类型;真正要看的是 pgmajfault 和 /proc/*/smaps 中的 Swap 字段,但更高效的是:

  • 运行 cat /proc/vmstat | grep -E "pgpg|pgmaj|pgpg",重点看 pswpin 和 pswpout(单位:页),这两个是纯 swap I/O 计数
  • 查具体进程:用 awk '/^Swap:/ {sum += $2} END {print sum}' /proc/*/smaps 2>/dev/null | sort -n | tail -5,结果是每个进程当前占用的 swap 页数(KB)
  • 结合 pmap -x 看某进程的 ANON 列(匿名映射)和 SWAP 列是否同步增长——如果 ANON 高且 SWAP 也高,基本就是 anon page 在被 swap

为什么 swappiness=10 还会大量 swap anon page

swappiness 不是开关,而是权重调节器:它控制的是「在 reclaim 时,从 anon list 和 file list 中按比例选择候选页」。当系统真的缺内存,且 anon pages 占比极高(比如 Java 堆、大 malloc 缓存),哪怕权重低,reclaim 也必须扫到它们。

  • 典型场景:Java 应用堆设了 -Xmx8g,但物理内存只剩 2G 可用,此时无论 swappiness 是 1 还是 100,内核都得把部分 anon page 换出
  • swappiness=0 才是「尽量不 swap anon」,但它不等于「禁止」,仅表示:只有在 file cache 几乎清空后,才考虑 anon;而 swappiness=10 仍会给 anon 分配约 10% 的回收机会
  • 注意:如果 /proc/sys/vm/swapiness 显示为 10,但 /proc/sys/vm/overcommit_memory 是 2(严格模式),且 /proc/sys/vm/overcommit_ratio 设得太小,也会导致 malloc 失败前被迫提前 swap

file-backed page 被 swap 的常见诱因

file-backed page(如 mmap 的普通文件、共享库)本不该常驻 swap,因为它们有磁盘源,可直接丢弃或重读。但以下情况会让它们进 swap:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » swappiness=10 后仍频繁 swap 的 anon page / file-backed page 区分排查-SQL
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4006211+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4006211+
  • 本周更新: 0+
  • 最后更新: 2026-03-16