ubuntu设置swap交换缓存
你这台 Ubuntu 14.04 系统目前是 没有启用交换分区/交换文件 的,所以 free -mh
里显示 交换:0B,sar -S
也全是 0。要启用 swap(交换缓存),需要手动添加。
一、创建交换文件(推荐方法)
-
创建一个 2G 的交换文件(可以根据内存大小决定,通常设为内存的 1~2 倍,但不要超过硬盘实际空间):
sudo fallocate -l 2G /swapfile
如果
fallocate
不支持,可以用dd
:sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
-
设置权限
sudo chmod 600 /swapfile
-
格式化为交换分区
sudo mkswap /swapfile
-
启用 swap
sudo swapon /swapfile
-
检查是否生效
free -mh
会显示有了 2G 的 Swap。
你再执行:sar -S 1 5
就会有 kbswpfree 数值了。
-
永久生效
编辑/etc/fstab
,在文件最后添加一行:/swapfile none swap sw 0 0
二、如果你有空闲磁盘分区
也可以用 mkswap
格式化一个分区(比如 /dev/sdb2
),然后 swapon /dev/sdb2
,并写入 /etc/fstab
。
三、调整内核交换策略(可选)
Linux 默认 尽量不用 swap,你可以通过 swappiness
调整:
cat /proc/sys/vm/swappiness
默认是 60(数值越高越倾向使用 swap)。
临时修改:
sudo sysctl vm.swappiness=10
永久修改:
编辑 /etc/sysctl.conf
,添加:
vm.swappiness=10
保存后执行:
sudo sysctl -p
🔧 建议:
-
你的内存才 1.8G,一定要开 swap,否则遇到大进程容易 OOM。
-
推荐 swapfile 2G 左右,再配合
vm.swappiness=10
,避免过度使用交换区导致系统卡顿。
要不要我帮你写一份 Ubuntu 14.04 一键创建 + 启用 2G swap 的脚本(直接复制运行即可)?
👌 现在效果很清楚了:
-
你已经启用了 2 GiB swap(
free -mh
里显示出来了)。 -
sar -S
也显示 swap 空间总量:kbswpfree 2096880 (大约 2GB 可用) kbswpused 268 (大约 268KB 被用) %swpused 0.01%
→ 说明 swap 已经生效,并且被轻微使用。
你目前的状态
-
内存总计:1.8 GiB,已用 ~727 MiB,可用 ~898 MiB。
-
缓冲/缓存 ~1 GiB,说明系统在尽可能利用内存做缓存。
-
Swap 已经挂上,使用量几乎为 0,只在少数情况下被触发。
-
kbswpcad
(swap cache)显示有 13% 命中率,说明有部分页被交换出去后又被引用,但整体使用很轻微。
优化建议
-
调整 swappiness(控制 swap 使用倾向)
目前系统的默认值应该是60
。
你内存比较小(1.8 G),建议设低一些,避免过早 swap:echo 10 | sudo tee /proc/sys/vm/swappiness
永久生效:在
/etc/sysctl.conf
里加:vm.swappiness=10
然后:
sudo sysctl -p
-
设置 cache 压缩(可选)
如果升级到较新内核,可以考虑用zram
压缩 swap,性能更好。不过你现在是 5.4 内核,已经支持 zram,可以配置/dev/zram
来当 swap。 -
监控 swap 使用情况
-
查看 swap 使用情况:
swapon -s
-
结合内存监控:
vmstat 1
如果
si/so
(swap in/out)经常不为 0,就说明 swap 压力大了。
-
⚡ 总结:
-
你已经 成功启用了 2 G swap。
-
swap 正常工作,但几乎没用到,不会拖慢性能。
-
建议把
vm.swappiness
调到 10 左右,主要靠内存跑,只有在内存紧张时才用 swap。
要不要我给你写一个 一键设置 swappiness + 开机启用 swap 检查的脚本,方便你服务器自动化维护?
No Comments