麒麟系统Swap异常可通过五种方法监控:一、vmstat查si/so换页速率;二、sar记录历史Swap使用率与换页吞吐;三、/proc/swaps与/proc/meminfo交叉验证实时状态;四、free循环快照生成趋势日志;五、top结合/proc/PID/status定位高Swap进程。

如果您在麒麟操作系统中观察到系统响应变慢或内存压力异常,但物理内存使用率并不高,可能是Swap交换空间被持续写入或频繁换页所致。查看Swap使用趋势有助于识别是否存在隐性内存泄漏、进程异常占用或swappiness策略失当等问题。以下是多种可操作的监控方法:
一、使用vmstat周期性采样观察Swap I/O活动
vmstat提供轻量级、低开销的系统级采样,特别适合捕获Swap空间的实时换入(si)与换出(so)速率变化,从而判断系统是否正承受内存压力并触发页面置换。
1、执行命令启动5次每秒采样:vmstat 1 5
2、关注输出中si和so列的数值(单位KB/s),若连续多行出现非零值,表明系统正在活跃使用Swap
3、附加内存摘要信息:vmstat -s | grep -E "(swap|page)",查看总交换页数、已换出页数等累计统计
二、通过sar命令记录历史Swap使用率曲线
sar可将Swap使用率(%swpused)及换页活动(pgpgin/pgpgout)按时间序列持久化采集,便于回溯分析趋势拐点,尤其适用于长期值守服务器环境。
1、确认sysstat服务已启用:sudo systemctl is-active sysstat
2、立即采集10秒间隔、共6次的Swap使用率:sar -W 10 6
3、若需同时获取换页吞吐量:sar -B 10 6,重点观察pgpgin和pgpgout字段的增量速率
4、将结果导出为文本供后续比对:sar -W 10 6 > /tmp/swap_usage_$(date +%s).log
三、解析/proc/swaps与/proc/meminfo动态追踪Swap状态
/proc/swaps反映当前所有已启用Swap设备的大小与使用量,/proc/meminfo则提供内核级内存与Swap综合指标,二者结合可交叉验证Swap是否被真实占用而非仅挂载空闲。
1、列出全部Swap设备及其使用详情:cat /proc/swaps
2、提取关键Swap相关指标:grep -E "^(Swap|Pg)" /proc/meminfo
3、重点关注SwapTotal、SwapFree、SwapCached、Pgpgin、Pgpgout、Pswpin、Pswpout等字段的实时数值
4、配合watch命令实现动态刷新观察:watch -n 2 'grep -E "^(Swap|Pg)" /proc/meminfo'
四、使用free命令结合时间戳生成趋势快照
free命令虽为瞬时快照,但通过脚本循环调用并添加时间标记,可构建简易趋势日志,适用于无sysstat环境或快速诊断场景。
1、创建临时记录文件:touch /tmp/swap_trend.log
2、运行循环采集(每3秒记录一次,共20次):for i in $(seq 1 20); do echo "$(date '+%H:%M:%S') $(free -h | awk '/Swap:/ {print $3\"/\"$2}')" >> /tmp/swap_trend.log; sleep 3; done
3、查看趋势记录:cat /tmp/swap_trend.log
4、识别峰值时刻:sort -k2 -t'/' -k1,1r /tmp/swap_trend.log | head -5
五、利用top命令实时定位高Swap占用进程
top本身不直接显示Swap用量,但可通过其进程排序功能结合/proc/PID/status反查各进程的Swap使用量,从而定位导致Swap使用率上升的具体程序。
1、启动top并按M键按内存使用率降序排列:top
2、记下疑似高内存消耗进程的PID
3、对每个PID执行:grep -i "swap" /proc/PID/status 2>/dev/null | awk '{print $2}'
4、汇总所有进程Swap用量并排序:for pid in $(ps -eo pid --no-headers); do swap=$(grep -i "swap" /proc/$pid/status 2>/dev/null | awk '{print $2}'); if [ -n "$swap" ]; then echo "$pid $swap"; fi; done | sort -k2 -nr | head -10



















