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

Linux怎么查看进程的SWAP占用 Linux下smaps统计交换空间详解

阿涛小哥_7997

阿涛小哥_7997

发布时间:2026-06-07 17:18:49

|

655人浏览过

|

来源于php中文网

原创

/proc/[pid]/smaps 中的 Swap: 行是唯一准确反映进程实际换出到交换分区的匿名页大小(KB),而 top 或 ps 的 SWAP 列基于过时估算(如 VIRT-RES),包含未分配虚拟内存、写时复制页等,不可信;/proc/[pid]/status 中的 VmSwap 在新内核中已废弃。

linux怎么查看进程的swap占用 linux下smaps统计交换空间详解

直接看 /proc/[pid]/smaps 里的 Swap: 行,这是当前进程实际被换出到 swap 的物理内存页数(单位:KB),不是估算值,也不是 VIRT-RES 差值。

为什么 top 或 ps 显示的 “SWAP” 列不可信

旧版 top(如 CentOS 6 之前)用 VIRT - RES 粗略估算 swap 占用,但这个差值包含未分配的虚拟地址、mmap(MAP_NORESERVE) 区域、甚至共享库的私有写时复制页——它们根本没进 swap。CentOS 7+/proc/[pid]/status 中的 Swap: 字段已废弃,smaps 才是唯一准确来源。

  • top 按 f → 启用 SWAP 字段,显示的是过时算法结果,尤其在启用 zswap 或 zram 时完全失真
  • ps 的 vsz 和 rss 都不反映真实 swap 使用量
  • 真正换出的页只记录在 /proc/[pid]/smaps 每个内存段末尾的 Swap: 行里,需累加

如何用 shell 快速汇总所有进程的 Swap 占用

核心命令靠遍历 /proc/[0-9]*/smaps 并提取 Swap: 值求和,注意过滤权限错误和 PID 有效性:

for i in $(cd /proc; ls -d [0-9]* 2>/dev/null | awk '$1 > 100'); do
  awk '/^Swap:/ {sum += $2} END {if (sum > 0) print "'$i'", sum/1024 "M"}' "/proc/$i/smaps" 2>/dev/null
done | sort -k2hr | head -10
  • ls -d [0-9]* 比 grep "^[0-9]" 更安全,避免匹配到 sys 或 self
  • awk '$1 > 100' 排除内核线程(PID 通常 ≤ 100),减少干扰
  • 2>/dev/null 屏蔽 Permission denied(如 systemd-journal 进程)
  • 输出单位转为 MB,按数值降序排,取前 10

smaps 中 Swap: 的实际含义与常见误读

Swap: 行数值是该内存段中**已被换出且尚未换入**的匿名页(anonymous pages)数量,单位 KB。它不包括:

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

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

下载
  • 文件映射页(file-backed pages):即使被换出,也不计入此字段,因为它们可从磁盘文件重新加载
  • 共享内存(shm)、tmpfs:这些区域不会被 swap,除非启用了 vm.swappiness=0 且内存极度紧张
  • zswap 压缩后驻留内存的页:这部分虽逻辑上属于 swap,但 smaps 仍记为 0,因未真正落盘
  • 刚 fork 但未写入的子进程页:写时复制(COW)未触发前,父进程的 Swap: 不变

所以一个进程 Swap: 为 0,不代表它没触发过换出——可能刚换入,或换出的是 file-backed 页;而 >0 则确凿说明它正在消耗 swap 设备的真实 I/O 带宽。

排查高 Swap 进程时容易忽略的关键点

看到某个进程占了 500MB swap,别急着 kill。先确认三件事:

  • 查 cat /proc/[pid]/status | grep -E "VmSize|VmRSS|VmSwap":如果 VmSwap 存在且非 0,说明内核确实统计了它;若不存在,说明该字段已在较新内核中移除,必须依赖 smaps
  • 运行 vmstat 1 5 观察 si/so:若持续 > 0,说明换入换出活跃;若全为 0,那 500MB 可能是历史残留(比如大进程刚退出,页未回收)
  • 检查 cat /proc/sys/vm/swappiness:值为 0 时,内核仅在内存严重不足时才 swap;值为 100 时则激进换出,此时高 Swap: 不一定代表问题,而是策略使然

最危险的信号不是 swap 占用高,而是 si + so 持续大于 100 KB/s —— 那说明磁盘在疯狂搬运页,响应延迟已开始恶化。

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

WorkBuddy

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

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

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

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

DeepSeek

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

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

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

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

530

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中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

3990

2023.06.21

如何安装LINUX
如何安装LINUX

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

3413

2023.06.29

linux find
linux find

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

2573

2023.06.30

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

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

6250

2023.07.05

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

80

2026.10.10

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

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

共0课时 | 0人学习

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

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