首页 帮助中心 常见问题 Linux系统交换空间监控的方法
Linux系统交换空间监控的方法
时间 : 2025-03-04 13:52:09 编辑 : 华纳云 阅读量 : 33

Linux中监控交换工具可以更好的诊断内存压力、预防系统僵死和进一步优化性能。交换空间被称物理内存RAM的延伸,交换空间利用把不活跃的内存页写入磁盘来维持系统可用性。但交换空间使用模式一般都隐含更深层次的资源分配问题。下面为大家分享关于内核机制、监控方法论和实战解析方面,系统讨论交换空间的监控方式。

以内核视角来看交换行为,Linux内核通过页面回收算法(Page Frame Reclaiming Algorithm)动态管理内存页的换入换出。当系统检测到内存不足时,kswapd守护进程会触发LRU(Least Recently Used)链表的扫描,将符合条件页(Anonymous Pages)写入交换分区。这个过程涉及三个关键指标:交换总量(Swap Total)、已用量(Swap Used)和换页频率(Swap In/Out),这些数据本质上反映着内存子系统与块设备层的交互强度。

`/proc/vmstat`中的`pswpin``pswpout`计数器以页面(通常4KB)为单位记录全局换页活动,通过差值计算可获取实时换页速率。

例如使用

`awk 'BEGIN {getline < "/proc/vmstat"; close("/proc/vmstat")} $1=="pswpin"{pin=$2}
 $1=="pswpout"{pout=$2} END {print pin,pout}'

每秒采样,可绘制出交换压力的时间序列图谱。值得注意的是,偶发的换页可能属于正常的内存整理行为,但持续的`si/so`(swap in/swap out)活动则预示着内存瓶颈。

/uploads/images/202503/04/6dd0ba2c5fdef619fd293f6ce87330eb.jpg  

内核交换空间具有多维监控工具链,如基础态势感知。

`free -h`

以上命令提供交换空间总量的瞬时快照,但其静态数值无法揭示动态趋势。更深入的诊断需要结合`vmstat 1`输出中的`si`和`so`字段,这两个指标以KB/s为单位显示当前换页速率。当这两个值持续大于零时,说明系统正在经历内存回收压力。

Sysstat工具包中的`sar -S`可展示历史交换使用率,其底层数据源自`/proc/meminfo``SwapCached``SwapFree`字段。通过`-f /var/log/sa/saXX`指定日志文件,管理员能回溯特定时间段的交换空间波动,结合`sar -B`的页面故障统计(major/minor faults),可精准定位内存短缺的时间窗口。

进程级关联分析:  

smem -t -s swap

以上命令以树形结构展示各进程占用的交换空间,其原理是通过解析`/proc/[PID]/smaps`中的`Swap`字段。这种颗粒度分析能有效识别"内存泄漏者",特别是当发现某个进程的交换占用率与系统整体趋势高度相关时,应优先检查该进程的内存管理逻辑。

当交换使用率超过30%时,需启动三级诊断流程:  

先通过`dmesg | grep oom-killer`检查是否触发OOM Killer,结合`/var/log/messages`中的内核日志确认内存事件时间线  

再使用`perf record -e page-faults -ag`捕获页面故障热点,定位高缺页率的代码路径  

最后,采用`bcc-tools`中的`swapin`工具(基于eBPF)跟踪具体进程的换入行为,该工具可显示引发换页操作的调用栈信息  

对于云原生环境,需额外关注cgroups的限制:

`cat /sys/fs/cgroup/memory/<cgroup>/memory.memsw.usage_in_bytes`

显示控制组的内存+交换总用量,防止单个容器过度占用交换资源导致宿主机级性能衰减。

高级调优策略中经常使用交换压缩:Linux 5.0+支持zswap机制,使用LZ4算法压缩换出页面,可将有效交换带宽提升3-5倍,需通过`zswap.enabled=1`内核参数激活  

还可以通过分层存储:在NVMe SSD上创建优先级更高的交换分区(`swapon -p 32767`),与机械硬盘交换分区形成层级结构  

还有就是主动回收:调整`/proc/sys/vm/swappiness`为1-10区间(默认值60),减少非必要换页,但需配合`vfs_cache_pressure=500`防止inode缓存过度占用内存  

监控系统的目标不是消除交换使用,而是保持合理的交换活动水平。生产环境中建议设置两级预警,出现交换使用率连续5分钟超过15%时触发触及告警,提示进行容量评估。每秒换页量持续超过磁盘IOPS的10%时触发紧急告警,需立即进行内存扩容或应用优化。通过`Prometheus`+`Grafana`构建的监控看板应包含交换利用率、换页速率与磁盘IO的关联曲线,以及Top 5交换占用进程的实时排序,从而实现从现象观测到根因分析的完整闭环。

华纳云 推荐文章
Linux系统磁盘和文件系统管理 在RHEL Linux系统中安装VirtualBox的方法 Linux系统上格式化USB驱动器的常用方法 Linux系统中安装K8s遇到问题怎么解决? Linux系统中用于磁盘网络监控工具分享 Linux系统怎么进行远程桌面连接? 新手小白该如何运用好Apache软件(以Linux系统为例) Glances监控远程Linux系统的简单方法 Linux系统雷区之10个最危险的命令 Nmon监控和优化Linux系统的性能的方法
客服咨询
7*24小时技术支持
技术支持
渠道支持