在 CentOS 系统中,监控 Swap(交换分区) 的使用情况,常用方法如下,从“快速查看”到“持续监控”逐步说明。
free最常用、最直观:
free -h
示例输出:
total used free shared buff/cache available
Mem: 7.8G 2.1G 1.2G 120M 4.5G 5.2G
Swap: 2.0G 512M 1.5G
✅ 关注:
Swap total:Swap 总量Swap used:已使用 SwapSwap free:剩余 Swapswapon查看 Swap 设备及使用情况:
swapon --show
示例:
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 2G 512M -2
/proc/meminfo更底层的信息:
cat /proc/meminfo | grep -i swap
常见字段:
SwapTotalSwapFreeSwapCachedtoptop
进入后:
SWAP 字段即可看到每个进程的 Swap 使用量。
htop(推荐)如果未安装:
yum install -y htop
htop
smem(最准确)yum install -y smem
smem -t -k
或查看 Swap 占用的进程:
smem -s swap -t -k
vmstatvmstat 1
关注:
si(swap in)so(swap out)✅ 说明:
sar(sysstat 工具)安装:
yum install -y sysstat
查看 Swap 使用历史:
sar -S 1 5
输出示例:
01:00:01 PM kbswpfree kbswpused %swpused
01:00:02 PM 1572864 524288 25.00
SWAP_USED=$(free | awk '/Swap/{print $3}')
SWAP_TOTAL=$(free | awk '/Swap/{print $2}')
if [ "$SWAP_TOTAL" -gt 0 ]; then
USAGE=$((SWAP_USED * 100 / SWAP_TOTAL))
if [ "$USAGE" -gt 80 ]; then
echo "Swap usage over 80%: ${USAGE}%"
fi
fi
可加入:
cron| 现象 | 可能原因 |
|---|---|
| Swap 持续增长 | 内存不足 |
| si/so 很高 | 内存抖动 |
| 进程占用大量 Swap | 内存泄漏 |
| 数据库使用 Swap | 配置不合理 |
cat /proc/sys/vm/swappiness
1~1010~30临时修改:
sysctl vm.swappiness=10
永久生效:
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
✅ 日常监控
free -h
swapon --show
✅ 排查问题
top / htop
vmstat 1
✅ 生产环境
sar如果你愿意,我可以:
只要告诉我你的使用场景即可。