1. 检查当前Swap使用情况
首先需要了解系统的Swap和内存使用现状,常用命令包括:
free -h:直观显示内存与Swap的总大小、已用空间及剩余空间;sudo swapon --show:列出当前启用的Swap分区/文件及其大小;cat /proc/swaps:查看Swap设备的详细信息(如优先级、使用量)。2. 调整Swap空间大小
Swap空间的大小需结合物理内存容量和使用场景设定:
sudo fallocate -l 4G /swapfile(旧版本用dd if=/dev/zero of=/swapfile bs=1M count=4096);sudo chmod 600 /swapfile(防止普通用户修改);sudo mkswap /swapfile;sudo swapon /swapfile;/swapfile none swap sw 0 0添加到/etc/fstab文件中。fallocate调整现有文件大小(需先禁用Swap:sudo swapoff /swapfile)。3. 优化Swappiness参数
swappiness是内核参数,控制物理内存使用率到达阈值后,将数据移至Swap的积极性。默认值为60(表示内存使用40%时开始Swap),数值越高,Swap使用越频繁,可能导致磁盘I/O升高(尤其是SSD),影响性能。
sudo sysctl vm.swappiness=20;/etc/sysctl.conf,添加vm.swappiness=20,保存后运行sudo sysctl -p使配置生效。4. 使用zram/zswap压缩内存
zram和zswap是Linux内核提供的内存压缩技术,可在不占用额外磁盘空间的情况下,将内存中的不活跃数据压缩存储,减少对物理内存的需求,从而降低Swap使用率:
sudo modprobe zram # 加载zram模块
echo 1 | sudo tee /sys/class/zram-control/hot_add # 添加一个zram设备
echo 2G | sudo tee /sys/block/zram0/disksize # 设置zram设备大小(如2GB)
sudo mkswap /dev/zram0 # 格式化为Swap
sudo swapon /dev/zram0 # 启用
永久生效可将上述命令添加到/etc/rc.local或创建systemd服务。/etc/default/grub,在GRUB_CMDLINE_LINUX中添加zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20(启用zswap,使用lz4压缩,最大占用内存20%),然后运行sudo update-grub并重启。5. 监控与定期维护
持续监控Swap和内存使用情况,及时发现异常并调整:
free -h:快速查看内存与Swap使用概况;top/htop:实时查看进程的内存占用(按M键按内存排序);vmstat 1:每秒刷新系统内存、Swap、I/O等统计信息(关注si(Swap In)、so(Swap Out)列,数值过高表示Swap使用频繁);iostat -x 1:查看磁盘I/O负载(若Swap所在磁盘的%util接近100%,说明Swap操作成为瓶颈)。sync && echo 1 | sudo tee /proc/sys/vm/drop_caches(清除页缓存);6. 其他优化建议
top或htop找出占用内存高的进程(如未使用的浏览器标签、后台服务),通过kill命令终止进程或systemctl stop停止服务,减少内存消耗;sudo apt clean(清理APT缓存)、sudo apt autoclean(清理旧的安装包)、rm -rf /tmp/*(清理临时文件),释放内存空间;systemd-analyze blame查看启动时间长的服务,通过sudo systemctl disable <service_name>禁用不需要的服务,减少开机时的内存占用;