proc/sys/vm 下相关值解释

本文详细介绍了 Linux 虚拟内存管理器 (VM) 的关键参数及其默认设置,这些参数涉及块设备调试、脏页管理、缓存压力调节等多个方面,对于优化 Linux 系统性能至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个不是原创,原文url地址: http://www.linuxidc.com/Linux/2007-08/6995p2.htm
 
1)      /proc/sys/vm/block_dump
该文件表示是否打开Block Debug模式,用于记录所有的读写及Dirty Block写回动作。
 
缺省设置:0,禁用Block Debug模式
2)      /proc/sys/vm/dirty_background_ratio

该文件表示脏数据到达系统整体内存的百分比,此时触发pdflush进程把脏数据写回磁盘。
 
缺省设置:10
3)      /proc/sys/vm/dirty_expire_centisecs
该文件表示如果脏数据在内存中驻留时间超过该值,pdflush进程在下一次将把这些数据写回磁盘。
 
缺省设置:3000(1/100秒)
4)      /proc/sys/vm/dirty_ratio
该文件表示如果进程产生的脏数据到达系统整体内存的百分比,此时进程自行把脏数据写回磁盘。
 
缺省设置:40
5)      /proc/sys/vm/dirty_writeback_centisecs
该文件表示pdflush进程周期性间隔多久把脏数据写回磁盘。
 
缺省设置:500(1/100秒)
6)      /proc/sys/vm/vfs_cache_pressure

 
缺省设置:100
7)      /proc/sys/vm/min_free_kbytes

 
缺省设置:724(512M物理内存)
8)      /proc/sys/vm/nr_pdflush_threads
该文件表示当前正在运行的pdflush进程数量,在I/O负载高的情况下,内核会自动增加更多的pdflush进程。
 

9)      /proc/sys/vm/overcommit_memory
该文件指定了内核针对内存分配的策略,其值可以是0、1、2。

1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2,表示内核允许分配超过所有物理内存和交换空间总和的内存(参照overcommit_ratio)。
 
缺省设置:0
10) /proc/sys/vm/overcommit_ratio
该文件表示,如果overcommit_memory=2,可以过载内存的百分比,通过以下公式来计算系统整体可用内存。
系统可分配内存=交换空间+物理内存*overcommit_ratio/100
 
缺省设置:50(%)
11) /proc/sys/vm/page-cluster
该文件表示在写一次到swap区的时候写入的页面数量,0表示1页,1表示2页,2表示4页。
 
缺省设置:3(2的3次方,8页)
12) /proc/sys/vm/swapiness
该文件表示系统进行交换行为的程度,数值(0-100)越高,越可能发生磁盘交换。
 
缺省设置:60
13) legacy_va_layout
该文件表示是否使用最新的32位共享内存mmap()系统调用,Linux支持的共享内存分配方式包括mmap(),Posix,System VIPC。
0,使用最新32位mmap()系统调用。
1,使用2.4内核提供的系统调用。
 
缺省设置:0
14) nr_hugepages
该文件表示系统保留的hugetlb页数。
15) hugetlb_shm_group
该文件表示允许使用hugetlb页创建System VIPC共享内存段的系统组ID
<think>好的,我现在需要帮用户解决如何设置`vm.swappiness`为0并持久化的问题。首先,我得回想一下这个参数的作用。`swappiness`控制内核使用交换空间的倾向,0表示尽量使用物理内存,100则积极使用交换空间。用户可能希望减少交换,提升性能,尤其是在有足够内存的情况下。 接下来,用户的问题分为两步:设置当前为0和持久化。临时设置很简单,直接`echo 0 > /proc/sys/vm/swappiness`就行,但重启后会失效。持久化需要修改系统配置文件,通常是`/etc/sysctl.conf`或者`/etc/sysctl.d/`下的文件。常见做法是在`sysctl.conf`中添加`vm.swappiness=0`,然后执行`sysctl -p`生效。 不过,我需要考虑用户可能遇到的情况。比如,不同的Linux发行版可能配置文件的位置不同,用户是否有权限修改这些文件?是否需要sudo?另外,用户可能对如何验证设置是否持久化有疑问,比如重启后检查是否生效。 可能还需要提醒用户,设置为0并不总是最佳实践。在某些情况下,即使内存充足,完全禁用交换可能导致OOM killer被触发,尤其是在内存突然紧张的时候。特别是对于数据库服务器或需要大量内存的应用,需要权衡利弊。 另外,用户可能想知道如何检查当前,除了`cat /proc/sys/vm/swappiness`,还可以用`sysctl vm.swappiness`来确认。还需要确认修改后的配置文件是否正确,是否有拼写错误,比如是否写成了`vm.swappiness = 0`(等号两边有空格),这在某些情况下可能导致问题,应该写成`vm.swappiness=0`。 还有,用户可能使用的是systemd的系统,这时候是否需要考虑其他配置方式?不过通常sysctl的配置已经足够,不需要额外步骤。如果用户遇到修改后不生效的情况,可能需要检查是否有其他配置文件覆盖了设置,或者是否在启动脚本中重新设置了该参数。 总结步骤应该是:临时设置、修改配置文件、应用配置、验证、注意事项。需要以清晰的结构呈现,确保用户一步步操作无误。同时,加入注意事项,帮助用户理解潜在影响,避免后续问题。</think>--- ### **一、操作目标** 将 `vm.swappiness` 设置为 `0`(禁止内核主动使用交换空间),并确保重启后配置持久生效。 --- ### **二、操作步骤** #### **1. 临时修改(立即生效,重启失效)** ```bash echo 0 | sudo tee /proc/sys/vm/swappiness ``` - **验证**: ```bash cat /proc/sys/vm/swappiness # 输出应为 0 ``` --- #### **2. 持久化配置(重启后生效)** 修改系统配置文件,具体方法如下: ##### **方法 1:直接编辑 sysctl.conf** ```bash sudo nano /etc/sysctl.conf # 或其他编辑器(如 vim) ``` - **添加内容**: ```bash vm.swappiness=0 ``` - **保存后加载配置**: ```bash sudo sysctl -p # 立即生效,无需重启 ``` ##### **方法 2:创建独立配置文件(推荐)** ```bash echo "vm.swappiness=0" | sudo tee /etc/sysctl.d/99-swappiness.conf ``` - **加载配置**: ```bash sudo sysctl --system # 加载所有 sysctl 配置 ``` --- #### **3. 验证持久化** ```bash # 重启后检查 sudo reboot cat /proc/sys/vm/swappiness # 输出应为 0 ``` --- ### **三、参数说明** - **`vm.swappiness=0`**: - **`0`**:内核仅在内存不足时使用交换空间(极端内存压力下)。 - **默认**:通常为 `60`(多数 Linux 发行版)。 - **取范围**:`0`(禁用主动交换)到 `100`(积极使用交换空间)。 --- ### **四、适用场景** 1. **物理内存充足**:避免因交换操作拖慢性能(如数据库服务器)。 2. **SSD 优化**:减少对固态硬盘的写入损耗。 3. **虚拟化环境**:避免宿主机与虚拟机竞争交换资源。 --- ### **五、注意事项** 1. **内存压力风险**: - 若物理内存耗尽且 `swappiness=0`,系统可能直接触发 OOM Killer 终止进程,而非尝试交换。 - **建议**:在内存充足的场景使用,或监控内存使用量(例如:`free -h`)。 2. **内核版本差异**: - 旧内核(<3.5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值