讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux怎么查看进程的内存交换情况 Linux下smaps_rollup详解

冬磊姑娘_8723

冬磊姑娘_8723

发布时间:2026-04-27 06:58:19

|

200人浏览过

|

来源于php中文网

原创

判断进程是否被swap需看/proc/{pid}/smaps_rollup中Swap和SwapPss字段:Swap为0表示当前无页被换出,SwapPss反映进程实际承担的交换成本;两者持续非零增长表明内存严重不足。

linux怎么查看进程的内存交换情况 linux下smaps_rollup详解

怎么看进程有没有被 swap 出去

关键看 Swap 和 SwapPss 这两个字段,它们直接反映该进程有多少内存页被换出到 swap 分区。

执行 cat /proc/{pid}/smaps_rollup 后,搜索这两行:

  • Swap: 0 kB —— 表示当前没有物理页被换出(注意:不等于“永远不会被换出”,只是此刻没换)
  • SwapPss: 1234 kB —— 是 PSS 视角下的交换量,考虑了共享页的分摊,比 Swap 更贴近“这个进程实际承担的 swap 成本”

如果两者长期非零且持续增长,说明该进程正被内核频繁换入换出,是内存严重不足的信号。此时 free -h 中的 used swap 通常也接近上限。

smaps_rollup 里哪些字段和 swap 直接相关

除了 Swap 和 SwapPss,下面几个字段共同构成 swap 行为的上下文:

  • Anonymous:匿名映射页总量(如堆、栈、malloc 分配),这类页可被 swap;值越大,潜在 swap 风险越高
  • Private_Dirty:进程独占且已修改的内存,是 swap 的主要候选对象;若它高而 Swap 低,说明还没触发换出;若它高且 Swap 也在涨,说明内核已经开始回收
  • Rss 和 Pss 持续高于 MemAvailable(查 /proc/meminfo)时,swap 往往已是“进行时”而非“将来时”

注意:Shmem、File 类内存一般不可 swap(除非挂载了 tmpfs 并启用了 swap backing),所以它们高不影响 swap 压力判断。

为什么不能只看 top 或 ps 的 %MEM 判断 swap 风险

ps aux 和 top 显示的 %MEM 基于 Rss,但 Rss 不区分“是否已被 swap”——它只统计当前驻留物理内存的大小。一个进程 Rss 是 500MB,Swap 是 300MB,%MEM 仍按 500MB 算,完全掩盖了其 300MB 已离线的事实。

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载

更危险的是:某些进程(如 JVM)会预分配大量虚拟内存(VmSize),但 Rss 很小,%MEM 看起来很低,却可能因 Anonymous 高、MemAvailable 低,一触发 GC 就瞬间推高 Swap。

所以,单靠 ps 或 top 定位 swap 问题,相当于用体温计测地震——读数稳定,不代表地壳没在滑动。

实操建议:快速筛查高 swap 风险进程

以下命令组合可一次性列出所有 Swap > 0 的进程及其关键指标:

adb shell "ps -A | awk '{print \$2}' | grep -E '^[0-9]+$' | while read pid; do \
  if [ -f /proc/\$pid/smaps_rollup ]; then \
    swap=\$(cat /proc/\$pid/smaps_rollup 2>/dev/null | grep '^Swap:' | awk '{print \$2}'); \
    [ \"\$swap\" != \"0\" ] && name=\$(cat /proc/\$pid/comm 2>/dev/null | head -c 15) && \
    pss=\$(cat /proc/\$pid/smaps_rollup 2>/dev/null | grep '^Pss:' | awk '{print \$2}') && \
    echo \"PID:\$pid \$(printf \"%-15s\" \"\$name\") Swap:\$swap kB Pss:\$pss kB\"; \
  fi; done | sort -k4 -nr"

要点:

  • 必须用 adb root(或 root shell),否则多数进程的 /proc/{pid}/smaps_rollup 不可读
  • 过滤掉 Swap: 0 的进程,避免噪音;真正要盯的是那些 Swap 在几十 MB 以上、且 Pss_Anon 占比超 80% 的进程
  • Android 上 smaps_rollup 从 API 29(Android 10)才稳定支持,旧设备需 fallback 到完整 smaps + awk 聚合,耗时高得多

最易被忽略的一点:swap 不是“开/关”状态,而是连续谱。一个进程 Swap 从 0 → 10MB → 100MB 的过程,往往比最终值更值得监控——因为它暴露的是内存压力的演化节奏,而不是某个静态快照。

热门AI工具

更多
Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

550

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

323

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

513

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

283

2025.11.27

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

4010

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3433

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2613

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

6350

2023.07.05

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn