Linux vm.swappiness
参数详解
vm.swappiness
是 Linux 内核的一个重要参数,用于控制系统在内存压力下使用 Swap 空间的倾向程度。这个参数对系统性能有显著影响,特别是在内存有限的服务器环境中。
基本概念
- 默认值:大多数 Linux 发行版默认值为
60
- 取值范围:
0
到100
- 单位:百分比(%)
参数含义
vm.swappiness
值表示内核在内存使用率达到多少百分比时开始积极使用 Swap 空间:
- 值越高(如 60-100):内核会更早、更积极地使用 Swap
- 值越低(如 0-30):内核会尽量避免使用 Swap,尽量使用物理内存
- 值为 0:除非内存耗尽(OOM),否则完全不使用 Swap
推荐设置
场景 | 推荐值 | 说明 |
---|---|---|
桌面系统 | 30-60 | 平衡响应速度和内存使用 |
数据库服务器 | 1-10 | 减少 Swap 使用,提高性能 |
应用服务器 | 10-30 | 适度使用 Swap 避免 OOM |
内存充足系统 | 1-10 | 充分利用物理内存 |
内存紧张系统 | 30-60 | 防止 OOM 但可能降低性能 |
查看当前值
cat /proc/sys/vm/swappiness
# 或
sysctl vm.swappiness
临时修改
sudo sysctl vm.swappiness=10
永久修改
编辑 /etc/sysctl.conf
文件:
sudo nano /etc/sysctl.conf
添加或修改:
vm.swappiness=10
然后应用更改:
sudo sysctl -p
高级注意事项
-
SSD 系统:可以设置较低值(如 10),因为 SSD 的 Swap 性能比 HDD 好,但仍比物理内存慢
-
数据库系统:通常建议设为 1-10,因为数据库有自己优化的内存管理机制
-
值为 0 的风险:完全禁用 Swap 可能导致 OOM Killer 过早杀死进程
-
监控工具:使用
free -h
、vmstat 1
和sar -r 1
监控内存和 Swap 使用情况 -
与
vfs_cache_pressure
配合:调整文件系统缓存回收的积极程度(默认值 100)
性能影响
- 高 swappiness:可能导致频繁的磁盘 I/O,降低系统响应速度
- 低 swappiness:可能导致内存压力增大,增加 OOM Killer 干预的风险