温馨提示×

怎样调试centos swap

小樊
40
2026-09-17 22:31:12
栏目: 智能运维

在 CentOS 上“调试 swap”通常分为几个层面:确认 swap 状态、定位 swap 使用异常、调优 swap 参数、排查性能问题。下面按实用顺序说明。


一、确认当前 Swap 状态

1. 查看是否启用 swap

free -h
swapon -s
cat /proc/swaps

正常应看到:

  • free -h 中 Swap 行不为 0
  • swapon -s 有设备(如 /dev/sda2 或文件)

2. 查看 swap 使用来源

smem -s swap -r
# 或
for pid in $(ls /proc | grep '^[0-9]'); do
  awk -v p=$pid '/VmSwap/{print p, $2}' /proc/$pid/status
done | sort -k2 -n -r | head

二、Swap 未启用或异常

1. 没有 swap

lsblk
swapon -s

创建 swap 文件示例:

dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

2. swap 已存在但不使用

检查 swappiness:

cat /proc/sys/vm/swappiness

临时调整:

sysctl vm.swappiness=10

永久:

echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p

三、Swap 被频繁使用(调试性能)

1. 是否是内存不足

free -h
vmstat 1

关注:

  • si/so 持续 > 0 → 频繁 swap
  • available memory 很低

2. 查看哪些进程在 swap

ps -eo pid,comm,vsz,rsz,swap --sort=-swap | head

3. 禁用某个进程 swap(不推荐长期)

echo 0 > /proc/<pid>/oom_score_adj

或使用 mlock(程序级)


四、Swap 性能调优(CentOS 常见)

1. swappiness(最重要)

  • 默认 30(CentOS 7/8)
  • 数据库服务器建议 1~10
  • 桌面/通用 10~30
sysctl vm.swappiness=10

2. vfs_cache_pressure

cat /proc/sys/vm/vfs_cache_pressure
sysctl vm.vfs_cache_pressure=50

3. 使用 zswap(CentOS 8+)

modprobe zswap

五、Swap 调试常用命令汇总

free -h
swapon -s
vmstat 1
sar -W 1
cat /proc/sys/vm/swappiness
dmesg | grep -i swap

六、典型问题排查清单

✅ 是否内存真的不够
✅ swappiness 是否过高
✅ 是否有大进程常驻 swap
✅ swap 设备是否为 HDD(慢)
✅ 是否应加内存而不是加 swap


如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 是swap 不工作还是swap 太慢
  • 应用场景(数据库 / 虚拟化 / 普通服务)

我可以给你更针对性的调试方案。

0 踩