Linux怎么查看系统的虚拟内存交换频率

大晨大大_5106

大晨大大_5106

2026-06-25

363人浏览

原创

用vmstat看实时swap换入换出速率需运行vmstat 1 5,关键看si(swap-in)和so(swap-out)两列,单位kb/s;加-s m可改为mb更直观,si持续>500需警惕,而swpd值高但si/so为0说明无活跃交换。

linux怎么查看系统的虚拟内存交换频率

用 vmstat 看实时 swap 换入换出速率

直接运行 vmstat 1 5 就能拿到每秒一次、共 5 次的采样,关键就看输出里的 si 和 so 两列——它们单位是 KB/s,分别代表每秒从磁盘读入内存(swap-in)和写入磁盘(swap-out)的数据量。

常见错误现象:只扫一眼 swpd 值以为“用了 swap 就有问题”,其实真正影响性能的是频繁交换。哪怕 swpd 是 2GB,只要 si/so 长期稳定在 0,说明没活跃换页;反过来,si 持续 >500 就得警惕了。

  • vmstat 默认单位是 KB,数值密密麻麻难判断,加 -S M 改成 MB 单位更直观:例如 vmstat -S M 2
  • 别漏掉参数:不带间隔和次数(如只输 vmstat)只会显示系统启动以来的平均值,对排查当前抖动毫无帮助
  • si/so 同时非零很常见,但若 so 显著高于 si,可能意味着进程在大量分配又快速释放匿名页,触发内核频繁回收并换出

对比 free 和 swapon --show 的用途差异

free -h 给你的是静态快照:swap 总量、已用多少、剩多少。它告诉你“有没有用”,但完全不反映“正不正忙”。swapon --show 则列出每个激活的 swap 设备(比如 /dev/sda2 或 /swapfile),附带大小和当前使用率,适合确认 swap 配置是否生效、有没有挂载失败的设备。

容易踩的坑:有人把 free 输出里 “Swap: 2.0G 1.1G 900M” 当成活跃指标,其实这 1.1G 可能是冷数据,躺在 swap 里半年没动过;而 vmstat 的 si/so 才是实打实的“正在发生”的交换行为。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • swapon --show=NAME,USED,SIZE 配合 awk 算百分比更干净,避免人工心算
  • free 的 -w 参数启用宽模式后列对齐更好,尤其当有多个 swap 设备时
  • 如果 swapon --show 输出为空,说明根本没启用任何 swap,此时 vmstat 的 si/so 必定全为 0,但原因不是“没压力”,而是“没地方换”

为什么不用 top 或 htop 查交换频率

top 和 htop 能看到整体内存压力(比如 %MEM 高、swap 使用量),但它们不暴露 si/so 这类底层换页速率。你顶多看到某进程的 VIRT(虚拟内存大小)很大,却无法判断它是否正在触发 swap 活动。

真实场景中,一个 Java 应用 VIRT 占 8GB,RES(常驻内存)才 2GB,其余 6GB 在 swap 里——top 不会告诉你这 6GB 是刚被换出的还是沉睡已久的。只有 vmstat 的连续采样才能捕捉到换页毛刺。

  • htop 按 F2 进设置可开启 “SWAP” 列,但它只显示该进程当前占用的 swap 大小(来自 /proc/[pid]/status 的 VmSwap: 字段),不是速率
  • top 的 “%CPU” 和 “%MEM” 都是瞬时值,没有历史趋势,没法识别周期性 swap 波动
  • 想关联进程和换页行为?得靠 pidstat -r 1 看每个进程的 minor/major fault,再结合 vmstat 的 si/so 对比分析

/proc/vmstat 里哪些字段对应 vmstat 的 si/so

vmstat 的数据源头就是 /proc/vmstat。里面 pgpgin 和 pgpgout 是累计页入/页出次数(单位是页,不是 KB),而 pswpin 和 pswpout 才是真正的 swap-in/out 次数。但注意:vmstat 的 si/so 是 KB/s,需要自己换算:

例如,cat /proc/vmstat | grep pswpin 输出 pswpin 123456,两次采样差值为 100,间隔 2 秒,则平均 si ≈ (100 × 4KB) / 2s = 200 KB/s(假设页大小为 4KB)。

  • 直接读 /proc/vmstat 适合写监控脚本,但手工查不如 vmstat 直观
  • pgpgin/pgpgout 包含文件页和匿名页的全部换入换出,pswpin/pswpout 专指 swap 设备操作,更精准
  • 某些内核版本(如 5.10+)新增 pgmajfault 字段,可辅助判断 major fault 是否引发 swap,但需结合 si 看是否真落到磁盘
实际排查时,si 和 so 的波动节奏比绝对值更重要——持续平稳的 50 KB/s 可能无害,但间歇性冲到 5MB/s 的尖峰往往意味着内存压力突变或配置失当。别只盯着数字,要盯住它怎么跳。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux 虚拟内存

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

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

2023.06.21

3950

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3373

10

linux find
linux find

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

2023.06.30

2533

5

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

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

2023.07.05

6130

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5782

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3393

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2885

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3099

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

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

精品课程

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

共0课时 | 0人学习

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

共0课时 | 0人学习