发布于2026-05-21 阅读(0)
扫一扫,手机访问
当麒麟操作系统出现响应迟缓,而物理内存使用率看似正常时,问题往往出在Swap交换空间上。持续的换页操作或Swap被异常占用,都可能是系统性能的隐形杀手。要精准定位问题,我们需要一套组合监控策略。下面这五种方法,从实时采样到历史回溯,从系统全局到进程定位,能帮你全面掌握Swap的动态。

想快速知道系统此刻是否在“偷偷”进行页面交换?vmstat是你的首选工具。它开销极低,能提供实时的换入(si)和换出(so)速率,是判断内存压力的灵敏探头。
执行命令 vmstat 1 5,每秒采样一次,共5次。重点盯着输出里的si和so列(单位KB/s)。如果连续几行都不是零,那就意味着Swap正在被活跃使用,系统内存可能已经吃紧。
想看得更宏观一点?可以加上 vmstat -s | grep -E "(swap|page)",这里能看到交换页面的累计统计数据,对整体情况有个把握。
事后分析,数据为王。sar命令的强大之处在于它能将Swap使用率(%swpused)和页面交换活动(pgpgin/pgpgout)按时间序列记录下来,形成历史曲线。这对于排查那些周期性或偶发的内存问题至关重要。
首先,确保sysstat服务已经跑起来:sudo systemctl is-active sysstat。
然后,立即开始采集数据:sar -W 10 6 表示每10秒采样一次,共6次,专门看Swap统计。如果想同时观察页面换入换出的吞吐量,就用 sar -B 10 6,重点关注pgpgin和pgpgout字段的变化。
这些数据可以直接导出到文件,方便后续对比分析:sar -W 10 6 > /tmp/swap_usage_$(date +%s).log。
想获得最底层的真相,就得去问内核。/proc文件系统下的这两个文件提供了最直接的信息。
cat /proc/swaps 会列出所有启用的Swap设备及其使用详情,让你一眼看清Swap空间的总量和占用。
而 grep -E "^(Swap|Pg)" /proc/meminfo 则能提取出一系列关键指标:SwapTotal, SwapFree, SwapCached, 以及页面交换相关的 Pgpgin, Pgpgout, Pswpin, Pswpout。将它们结合起来看,就能交叉验证Swap是被真实占用,还是仅仅挂载在那里。
配合watch命令,可以实现动态监控:watch -n 2 'grep -E "^(Swap|Pg)" /proc/meminfo',每2秒刷新一次。
在没有sysstat的环境下,或者需要快速进行简易诊断时,free命令加上一点脚本魔法,就能构建一个轻量级的趋势日志。
思路很简单:循环执行free命令,并给每次的结果打上时间戳。
比如,可以创建一个记录文件,然后运行一个循环:
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秒记录一次Swap已用和总量,共20次。记录完成后,用cat查看日志,或者用sort命令快速找出Swap使用最高的几个时间点,线索往往就藏在这些峰值里。
知道了系统Swap使用率高,那到底是哪个进程在“搞鬼”?top命令本身不直接显示进程的Swap占用,但我们可以通过它找到嫌疑犯,再去/proc里取证。
首先,运行top,然后按M键,让进程按内存使用率降序排列。把那些内存消耗大户的PID记下来。
接着,对每个嫌疑PID执行:grep -i "swap" /proc/[PID]/status 2>/dev/null | awk '{print $2}',就能查到该进程具体的Swap使用量(单位是KB)。
如果想一次性找出系统里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
这样一来,元凶就无处遁形了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9