游乐游手机版
首页/系统平台/文章详情

Linux如何查看具体内存缺页中断情况

时间:2026-08-16 13:52
在 Linux 系统中,最直观且常用的查看内存缺页中断的方法,就是直接使用 ps 命令检查某个进程累计产生了多少缺页:ps -o pid,comm,minflt,majflt -C nginx 或 ps -o pid,comm,minflt,majflt -p 1234。其中,minflt 表示 m

在 Linux 系统中,最直观且常用的查看内存缺页中断的方法,就是直接使用 ps 命令检查某个进程累计产生了多少缺页:ps -o pid,comm,minflt,majflt -C nginxps -o pid,comm,minflt,majflt -p 1234。其中,minflt 表示 minor fault,也就是轻微缺页中断,通常只需要补齐页表映射;而 majflt 表示 major fault,即严重缺页中断,意味着必须通过磁盘 I/O 将页面重新加载到内存中。

Linux怎么查看具体的内存缺页中断

怎么看进程级缺页中断次数(minflt/majflt)

查看 Linux 进程级缺页中断次数,最直接有效的方式就是使用 ps 命令查询单个进程的累计缺页数:ps -o pid,comm,minflt,majflt -C nginxps -o pid,comm,minflt,majflt -p 1234。其中:minflt 是 minor fault,表示页面实际上已经在内存里,例如刚分配的零页、共享库页面等,只需建立映射关系;majflt 是 major fault,表示页面必须从磁盘读取,比如 mmap 文件首次访问、换入页等,通常会带来明显的 I/O 开销。

需要注意的是:minflt 数值高并不一定代表性能异常——像 malloc 小块内存后的首次写入、栈空间扩展、shared library 加载等场景,都会触发 minor fault;但如果 majflt 持续增长,尤其同时伴随较高的 si/so,通常说明系统正在频繁换入换出,需要进一步排查磁盘性能或内存压力问题。

怎么观察系统级缺页中断频率(实时监控)

如果想实时观察 Linux 系统级缺页中断频率,可以使用 vmstat 1 查看每秒统计信息:pgpginpgpgout 表示每秒换入和换出的千字节数;pgmajfault 表示每秒 major fault 次数(内核 4.15+ 才提供,旧版本可能没有这一列);更通用的指标是 si(swap in)和 so(swap out)——如果它们持续非零,基本可以判断缺页中断已经引发了磁盘活动。

如果出现 si 较高但 pgmajfault 偏低,可能属于非缺页型 swap 活动,例如 kswapd 的主动回收;反过来,如果 pgmajfault 较高而 si 很低,则说明缺页页面更多来自文件映射,比如 mmap 大日志文件,并没有真正走 swap 路径。

  • perf record -e page-faults -g -p $(pidof app) sleep 10 可以抓取指定进程的缺页调用栈,帮助定位到底是哪段代码触发了 page fault
  • cat /proc//status | grep -E "VmRSS|MMU|Min|Major" 可以查看该进程当前物理内存占用情况以及缺页计数快照

怎么确认是否真因缺页导致性能卡顿

缺页中断本身并不一定意味着性能慢——minor fault 几乎没有明显开销;真正容易拖慢系统的是 major fault 之后的磁盘等待。因此不能只盯着缺页次数,还要结合 I/O 延迟一起判断。

可以运行 iostat -x 1,重点关注 await(I/O 平均等待时间,单位毫秒)和 %util(设备忙碌占比)。如果 await > 10ms%util > 80%,同时 sipgmajfault 也在上升,基本可以认定缺页中断已经开始成为系统瓶颈。

另一个明显信号是 /proc/vmstat 中的 pgpginpgpgout 数值突然升高,再配合 dmesg | tail -20 检查是否出现 “Out of memory: Kill process” 或 “page allocation failure” 等信息——这通常代表缺页问题已经触发了内存回收,甚至可能引发 OOM killer。

为什么 /proc/meminfo 里的 “PageTables” 和 “PageCount” 不反映缺页中断

/proc/meminfo 中的 PageTables,表示的是页表本身占用的内存大小,单位为 KB。至于 PageCount,实际上 Linux 并没有这个字段,这也是很多人在排查内存缺页中断时容易产生的理解误区。也就是说,/proc/meminfo 本身并不提供缺页次数统计。真正用于记录全局累计缺页相关数据的,是 /proc/vmstat 中这些字段:pgpginpgpgoutpgmajfaultpgminfault

执行 grep -E "pgpgin|pgpgout|pgmajfault|pgminfault" /proc/vmstat,即可获取自系统启动以来的累计统计值。需要注意,这些数值都是累加计数,通常要进行两次采样后相减,才能得到某个时间区间内的实际增量。

还有一个容易被忽略的点:在容器环境中,比如 Docker,/proc/vmstat 看到的是宿主机级别的全局视图,无法精准隔离到某一个容器;这时想准确分析单个容器的缺页中断情况,通常需要借助 perf,或者使用 cgroup v2 的 memory.events(其中包含 pgmajfault 计数)来判断。

来源:https://www.php.cn/faq/2993790.html
上一篇Linux中如何更改文件和目录所有权的方法 下一篇Linux查看硬件序列号的方法与命令大全
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
VMware安装Ubuntu完整教程:创建虚拟机与启动验证
系统平台 · 2026-09-01

VMware安装Ubuntu完整教程:创建虚拟机与启动验证

本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。

Win10专业版U盘安装教程:制作启动盘与完整安装步骤
系统平台 · 2026-09-01

Win10专业版U盘安装教程:制作启动盘与完整安装步骤

本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。

Windows10系统字体太小怎么调大
系统平台 · 2026-08-27

Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。

Win10磁盘占用100%基础排查:从监控到清理的完整步骤
系统平台 · 2026-08-27

Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。

Windows10系统怎么显示此电脑和控制面板
系统平台 · 2026-08-27

Windows10系统怎么显示此电脑和控制面板

Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。