0

0

Linux Swap 的真实作用

舞夢輝影

舞夢輝影

发布时间:2026-01-23 17:58:03

|

559人浏览过

|

来源于php中文网

原创

Swap是内核的内存调度杠杆,通过冷热页分离将不活跃页换出以优化RAM利用;其行为分休眠、内存压力保底、主动缓存优化三类场景;swappiness值调控换出时机,推荐服务器设为10;swapfile与分区性能无异,但权限和fstab配置须严格。

linux swap 的真实作用

Swap 不是“备用内存”,而是内核的内存调度杠杆

Swap 的核心作用不是补足物理内存缺口,而是让内核能主动腾出 RAM 给更需要的进程或缓存。它本质是内存页(page)的冷热分离机制:把长时间未访问的“冷页”挪到磁盘,把空出来的物理内存留给活跃程序、Page Cache 或内核数据结构。这解释了为什么 free -h 显示还有几 GB available,swap 却已用满——内核判断那些被换出的页确实不值得常驻内存。

三种典型场景,Swap 行为完全不同

同一台服务器,Swap 的使用逻辑取决于负载类型:

  • 休眠(Hibernation):必须启用 swap,且大小 ≥ 物理内存;系统关机前把整个 RAM 镜像写入 swap,唤醒时原样恢复——没 swap 就无法休眠。
  • 内存压力下的保底机制:当 available 内存趋近于 0,且 si(swap-in)持续 > 100 KB/s,说明进程正在频繁从 swap 拉回冷页,此时性能已明显下降,属于危险信号。
  • 主动回收冷页以提升缓存效率:比如 Redis + NGINX + 大量静态文件服务场景,内核可能把 Redis 的部分冷 key 换出,腾出内存给 Page Cache 加速文件读取——这时 so(swap-out)高但 si 极低,属健康行为。

Swappiness 值决定 Swap 是“帮手”还是“拖累”

vm.swappiness 控制内核换出内存页的激进程度,但它不是“是否启用 swap”的开关,而是“多早开始换出”的调节阀:

  • 值为 0:仅在内存真正耗尽(OOM 边缘)时才换出;但可能导致突发负载下 OOM Killer 直接杀进程。
  • 值为 10(推荐 Web/DB 服务器):平衡冷页回收与稳定性,避免过早换出影响延迟敏感型服务。
  • 值为 60(默认值):对桌面环境友好,但服务器上易造成无谓 IO 和延迟毛刺。
  • 值为 100:几乎等同于“只要有点空闲就换”,极易引发抖动,除非跑超大内存分析任务且磁盘极快(如 NVMe 上的 swapfile)。

临时调整:sudo sysctl vm.swappiness=10;永久生效需写入 /etc/sysctl.conf

AI Cheat Check
AI Cheat Check

专为教授、教师和大学提供的AI作弊检测,以验证学生作业的真实性

下载

Swap 文件 vs 分区:现在基本没区别,但路径权限不能错

现代 Linux(5.4+ 内核)对 swapfile 的支持已和 swap 分区一致,NVMe 下性能差距可忽略。关键差异只在初始化环节:

  • 创建命令优先用 fallocate -l 8G /swapfile,比 dd 快且不触发日志写入;
  • chmod 600 /swapfile 必须执行,否则 swapon 会拒绝启用(报错 swapon: /swapfile: insecure permissions 644, 0600 suggested);
  • /etc/fstab 中必须写成 /swapfile none swap sw 0 0,漏掉 none 或写错 sw 会导致开机失败或 swap 不加载。

真正容易被忽略的是:swap 启用后,free -h 显示的 swap 行是总量,但实际是否“被有效利用”,得看 si/sopgpgin/pgpgout(用 vmstat 1 查),而不是盯着百分比数字。100% 使用率本身不危险,持续高 si 才是问题。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

231

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

501

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

498

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

227

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

335

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3510

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

22

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

26

2026.01.13

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

9

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.6万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号