当前位置: 首页 > news >正文

别再让Ubuntu卡成PPT了!手把手教你调整Swap分区大小(从1G到64G实战)

Ubuntu性能优化实战:科学配置Swap分区解决系统卡顿

当你在Ubuntu上同时运行多个虚拟机、编译大型项目或处理海量数据时,是否经历过系统突然变得异常缓慢,甚至出现程序无响应的情况?这种"卡成PPT"的体验往往不是物理内存不足导致的,而是被忽视的Swap空间配置不当造成的性能瓶颈。

1. 诊断Swap空间不足的症状

系统开始频繁使用Swap空间时,会出现一些典型症状。最直观的表现是硬盘灯常亮,系统响应明显变慢,鼠标移动都变得卡顿。这时候打开终端执行htop命令,如果发现SWAP栏位使用率持续高位(超过70%),同时MEM栏位仍有可用内存,就是典型的Swap空间过小导致的性能问题。

另一个判断方法是使用vmstat命令观察si(swap in)和so(swap out)两列的数据:

vmstat 1 5

如果这两列数值持续不为零,说明系统正在频繁进行内存和Swap之间的数据交换。这种交换操作会显著拖慢系统速度,因为硬盘I/O速度远低于内存访问速度。

注意:现代Ubuntu安装时默认的Swap空间设置往往偏保守,特别是对于大内存(32GB以上)的机器,默认1-2GB的Swap空间在高负载场景下远远不够。

2. Swap空间配置的科学原则

传统上关于Swap空间大小的经验法则(如"Swap应该是物理内存的2倍")已经不完全适用于现代计算机系统。更科学的配置方案应该考虑以下因素:

  • 休眠需求:如果需要使用系统休眠功能,Swap空间应不小于物理内存大小
  • 工作负载特性:内存密集型应用(如虚拟机、数据库)需要更多Swap空间作为缓冲
  • 物理内存大小:大内存系统可以适当减少Swap比例

推荐的计算公式:

Swap大小 = min(4GB, 物理内存 × 内存使用系数)

其中内存使用系数可以参考下表:

物理内存大小推荐系数示例计算(32GB内存)
≤ 8GB2.0-
8-64GB0.532 × 0.5 = 16GB
> 64GB0.25128 × 0.25 = 32GB

对于大多数开发用机(32GB内存),16GB的Swap空间是一个合理的起点。如果经常运行内存密集型任务,可以适当增加到24-32GB。

3. 创建和启用Swap文件的详细步骤

3.1 创建Swap文件

首先确定当前系统的Swap使用情况:

sudo swapon --show free -h

如果现有Swap空间不足,可以创建一个新的Swap文件。以下是创建64GB Swap文件的具体步骤:

sudo fallocate -l 64G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile

这里使用fallocate而非dd命令,因为前者创建大文件的速度更快。chmod 600确保文件权限安全,避免潜在的安全风险。

3.2 启用临时Swap

创建完成后,可以立即启用这个Swap文件:

sudo swapon /swapfile

验证Swap是否已成功添加:

free -h

你应该能看到Swap总量已经增加。要查看更详细的信息:

cat /proc/swaps

4. 永久化Swap配置

要使Swap配置在重启后依然有效,需要编辑/etc/fstab文件:

sudo nano /etc/fstab

在文件末尾添加以下行:

/swapfile none swap sw 0 0

保存后,可以使用以下命令测试配置是否正确:

sudo swapoff -a sudo swapon -a

如果没有任何错误提示,说明配置成功。可以通过free -h再次确认Swap空间是否正常加载。

5. 高级调优与注意事项

5.1 Swapiness参数调整

Linux内核参数vm.swappiness控制系统使用Swap的倾向程度,取值范围0-100。值越高,系统越倾向于使用Swap空间。对于大内存系统,可以适当降低这个值:

# 查看当前值 cat /proc/sys/vm/swappiness # 临时修改 sudo sysctl vm.swappiness=10 # 永久修改 echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

5.2 多个Swap文件的管理

系统可以同时使用多个Swap文件或分区。要查看所有活动的Swap空间:

swapon --show

如果需要停用某个Swap文件:

sudo swapoff /path/to/swapfile

5.3 性能监控与调优

长期监控Swap使用情况有助于优化配置:

# 实时监控内存和Swap使用情况 watch -n 1 'free -h; echo; vmstat -s' # 查看Swap使用历史 sar -r -S 1 10

如果发现Swap使用率长期居高不下,可能需要考虑:

  1. 增加物理内存
  2. 优化应用程序内存使用
  3. 进一步增加Swap空间

6. 常见问题解决方案

Q: 创建大Swap文件时出现"fallocate failed: Operation not supported"错误

A: 某些文件系统(如FAT32)不支持fallocate,可以改用dd命令:

sudo dd if=/dev/zero of=/swapfile bs=1M count=65536

Q: 系统重启后Swap未自动加载

A: 检查以下内容:

  1. /etc/fstab中的配置是否正确
  2. Swap文件权限是否为600
  3. 使用dmesg | grep swap查看启动日志

Q: 如何完全移除Swap文件

A: 执行以下步骤:

sudo swapoff /swapfile sudo rm /swapfile # 然后从/etc/fstab中删除相关行

对于SSD用户,可以考虑将Swap文件放在单独的分区,或者使用zram作为替代方案,减少对固态硬盘的写入。

http://www.jsqmd.com/news/876504/

相关文章:

  • ICU死亡率预测模型公平性监控:从文档偏见识别到GAM模型实践
  • 英雄联盟智能助手:让每一局游戏都像职业选手一样从容
  • ab、Postman、JMeter并发测试真相:协议层、运行时与系统瓶颈解析
  • Rubish:纯 Ruby 编写的 UNIX shell,深度集成 Ruby 且功能强大!
  • 2026年5月海南财税公司推荐,代理记账哪家好,乱账整理、注册公司代办高性价比优选权威测评 - 品牌智鉴榜
  • MacType终极指南:5个简单步骤让Windows字体渲染媲美macOS
  • 数字主权还是数字枷锁?德国eIDAS钱包的Apple/Google账户依赖之困
  • 如何用Python自动化工具提升大麦网抢票成功率:5个实战技巧
  • K210开发板固件烧录终极指南:kflash_gui完全使用手册
  • Android APP通信协议逆向:AES+Base64+Protobuf加密还原实战
  • 终于让我找到了小红书流量密码!点赞34,收藏14,我却被封号了:小红书最狠的封号逻辑,根本不看图
  • Ubuntu 22.04上从零安装UCSF DOCK 6.11:手把手解决依赖与编译的那些坑
  • TinyML安全实战:从硬件攻击到模型防护的嵌入式AI安全指南
  • 12全排列 II 回溯
  • GetQzonehistory:三步永久保存QQ空间记忆的免费数据迁移工具
  • 如何高效提取Wallpaper Engine资源?RePKG专业工具全解析
  • 基于支持点样本分割与双重机器学习的高维因果推断实践
  • 高效音频解密利器:qmc-decoder深度解析与应用指南
  • abc459_d Adjacent Distinct String 的一种构造方法
  • 11全排列 回溯
  • Postman 401错误排查:Bearer Token认证填法与工程化实践
  • 抖音批量下载器终极指南:如何3分钟搞定无损音乐提取与高效素材管理
  • 30+平台一键文档下载:告别繁琐流程,实现“所见即所得“的自由
  • 2026年免费降AI/AIGC率保姆级教程:3款亲测好用不踩雷的降AI工具 - 降AI实验室
  • 如果你要设计一个“个人助理“Agent,记忆系统应该如何分层?
  • 如何快速配置Atmosphere破解系统:Switch游戏体验全面升级指南
  • 微信小程序逆向:基于Frida Hook WeChatAppHost.dll解密wxapkg
  • SHAP值在时间感知研究中的应用:从机器学习预测到认知机制解释
  • 终极解决方案:如何彻底解决Reloaded-II模组加载器的依赖循环与下载死锁问题
  • 超参数调优中的评估偏差:数据泄露如何导致模型性能误判