如何在 Linux 中更改 swappiness

本文讲解如何在Linux系统上检查和调整Swappiness值,Swappiness是内核参数,决定内存和交换空间的使用平衡,影响系统性能。文章指导如何通过命令行修改Swappiness值,并在重启后保持设置。
导读交换空间是 RAM 内存已满时使用的硬盘的一部分。交换空间可以是专用交换分区或交换文件。当 Linux 系统耗尽物理内存时,非活动页面将从 RAM 移动到交换空间。Swappiness 是一个 Linux 内核属性,用于设置将页面从物理内存交换到交换空间以及从页面缓存中删除页面之间的平衡。它基本上定义了系统使用交换空间的频率。本文介绍如何更改 Linux 系统上的 swappiness 值。

检查 Swappiness 值

要检查系统上的当前 swappiness 值,请使用以下 cat 命令

cat /proc/sys/vm/swappiness

大多数 Linux 发行版上的默认 swappiness 值为 60 :

60

虽然 60 的 swappiness 值适合大多数用户,但在某些情况下,您可能需要设置较低的值。

您可以用来确定 swappiness 值的另一个命令是 sysctl :

sysctl vm.swappiness

vm.swappiness = 60

改变 Swappiness 值

Swappiness 可以具有 0 到 100 之间的值。值 0 指示内核积极地避免尽可能长时间地交换。值 100 将积极地将进程交换出物理内存。

较低的值将使内核尽可能避免交换,而较高的值意味着内核将尝试更积极地使用交换空间。

访问交换内存比直接访问物理内存要慢得多。 swappiness 参数的较低值很可能会提高整体系统性能。对于常规桌面安装,建议值为 10 。对于大多数数据库服务器,建议使用 swappiness 值0或1。

最佳 swappiness 值取决于您的系统工作负载和 RAM 内存的大小。您应该以小增量调整此参数以查找最佳值。

例如,要在运行时将 swappiness 值设置为 10 ,请以 root 或 sudo 用户身份键入以下命令:

sudo sysctl vm.swappiness=10

要使 swappiness 参数在重新启动后保持不变,请使用文本编辑器打开文件 /etc/sysctl.conf :

sudo nano /etc/sysctl.conf

找到 vm.swappiness 参数并更改其值。如果此参数不存在,请将以下行附加到该文件 /etc/sysctl.conf 中

vm.swappiness=10

结论

我们已经向您展示了如何更改 swappiness 参数的值。

<think>我们正在讨论Linux系统的swappiness设置和调优。根据引用内容,swappiness是一个控制内核倾向于使用交换空间(swap)程度的参数。它的取值范围是0到100,值越高表示内核越积极地使用交换空间,值越低则更倾向于保留物理内存(RAM)。 关键点: 1. swappiness定义:引用[1]提到swappiness值是一个关键参数,影响系统在物理内存不足时的性能。 2. 设置建议:引用[2]指出,无法通过swappiness值来影响交换在RAM使用方面的行为,并讨论了应该设置为什么值。 3. 调整步骤:引用[3]展示了如何查看交换分区、关闭交换分区以及修改/etc/fstab文件来永久移除交换分区挂载(但我们的重点是调整swappiness,而不是移除交换)。 用户问题:调整或了解Linux系统内存交换设置,特别是swappiness的设置和调优。 回答结构: 1. 解释swappiness的作用和取值范围。 2. 说明如何查看当前swappiness值。 3. 如何临时修改swappiness值(重启后失效)。 4. 如何永久修改swappiness值(通过sysctl.conf文件)。 5. 讨论设置不同值的场景和建议(包括性能影响)。 6. 注意事项。 生成相关问题:在回答末尾生成3个相关问题。 注意:使用中文回答,数学公式用$...$或$$...$$格式(但本问题可能涉及较少数学公式,如有则按规则处理)。</think>### Linux Swappiness 设置与调优指南 #### 1. **Swappiness 的定义与作用** SwappinessLinux 内核控制内存交换行为的参数,取值范围为 $0\sim100$: - **低值(如 0-30)**:内核优先使用物理内存(RAM),减少交换空间(swap)使用,适合数据库等对延迟敏感的应用[^1]。 - **高值(如 60-100)**:内核更积极使用交换空间,可能增加磁盘 I/O,但为物理内存腾出更多空间[^2]。 默认值通常为 **60**,公式表示为: $$\text{交换倾向} = \frac{\text{swappiness 值}}{100} \times \text{内存压力}$$ #### 2. **查看当前 Swappiness 值** ```bash cat /proc/sys/vm/swappiness # 或 sysctl vm.swappiness ``` 输出示例:`vm.swappiness = 60` #### 3. **临时修改 Swappiness**(重启失效) ```bash # 设置为 10(推荐测试值) sudo sysctl vm.swappiness=10 ``` #### 4. **永久修改 Swappiness** 编辑 `/etc/sysctl.conf`,添加: ```bash vm.swappiness=10 ``` 生效命令: ```bash sudo sysctl -p ``` #### 5. **调优建议** - **物理内存充足时**(如 >32GB): 设置为 **10-30**,减少不必要的磁盘 I/O,提升性能[^1]。 - **物理内存紧张时**: 保留默认值 **60**,避免 OOM(内存溢出)风险。 - **特殊场景**: - **数据库服务器**:建议 **1-10**(如 MySQL/Redis)[^2]。 - **桌面环境**:可设为 **30-50** 平衡响应速度与内存占用。 #### 6. **验证与监控** - **检查交换空间使用**: ```bash free -h # 查看内存/交换使用量 swapon --show # 显示交换分区信息 ``` - **监控工具**: `vmstat 1`(关注 `si`/`so` 交换频率)、`sar -B`(交换统计)。 #### 7. **注意事项** - **Swappiness=0 的风险**: 内核仍可能在内存耗尽时强制交换,极端情况下可能触发 OOM Killer[^2]。 - **固态硬盘(SSD)用户**: 可适度降低 swappiness(如 30),减少 SSD 磨损。 - **禁用交换分区**(不推荐): 需先 `swapoff /dev/分区名`,再注释 `/etc/fstab` 中的挂载项[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值