linux kernel 内核缓存回收的相关配置项

Linux 内核缓存回收涉及多个配置项和参数,这些参数可以通过/proc/sys/vm目录下的文件进行查看和调整。以下是一些常见的与内存缓存回收相关的配置项:

1.vm.dirty_background_ratio和vm.dirty_background_bytes

  • vm.dirty_background_ratio:指定系统内存中脏页(diry pages)达到总内存的百分比时,后台写回进程(pdflush 或 kswapd)开始将脏页写回磁盘
cat /proc/sys/vm/dirty_background_ratio
  • vm.dirty_background_bytes:指定系统内存中脏页达到一定字节数时,后台写回进程开始将脏页写回磁盘。如果设置了这个值,vm.dirty_background_ratio将被忽略。
cat /proc/sys/vm/dirty_background_bytes

2.vm.dirty_ratio和vm.dirty_bytes

  • vm.dirty_ratio:指定系统内存中脏页达到总内存的百分比时,任何产生脏页的进程都会被阻塞,直到脏页被写回磁盘。
cat /proc/sys/vm/dirty_ratio
  • vm.dirty_bytes:指定系统内存中脏页达到一定字节数时,任何产生脏页的进程都会被阻塞,直到脏页被写回磁盘。如果设置了这个值,vm.dirty_ratio将被忽略。
cat /proc/sys/vm/dirty_bytes

3.vm.dirty_writeback_centisecs

  • vm.dirty_writeback_centisecs:指定后台写回进程(pdflush 或 kswapd)周期性地将脏页写回磁盘的间隔时间(以百分之一秒为单位)。
cat /proc/sys/vm/dirty_writeback_centisecs

4.vm.dirty_expire_centisecs

  • vm.dirty_expire_centisecs:指定脏页在多长时间(以百分之一秒为单位)后被认为是“过期”的,过期的脏页将被优先写回磁盘。
cat /proc/sys/vm/dirty_expire_centisecs

5.vm.vfs_cache_pressure

  • vm.vfs_cache_pressure:控制内核在回收 VFS 缓存(如 inode 和 dentry 缓存)与回收页面缓存(page cache)之间的平衡。
cat /proc/sys/vm/vfs_cache_pressure

6.vm.swappiness

  • vm.swappiness:控制内核交换(swap)内存的倾向。值越高,内核越倾向于将不常用的内存页交换到交换空间中。
cat /proc/sys/vm/swappiness

7.vm.min_free_kbytes

  • vm.min_free_kbytes:指定系统应保持的最小空闲内存量(以 KB 为单位)。当系统空闲内存少于这个值时,内核会开始回收内存。
cat /proc/sys/vm/min_free_kbytes

8.vm.overcommit_memory和vm.overcommit_ratio

  • vm.overcommit_memory:控制内核如何处理内存过度分配。
    • 0:内核将根据启发式算法决定是否允许内存分配。
    • 1:内核将始终允许内存分配。
    • 2:内核将允许内存分配,直到总内存使用(包括 swap)达到vm.overcommit_ratio指定的百分比。
cat /proc/sys/vm/overcommit_memory
  • vm.overcommit_ratio:指定当vm.overcommit_memory为2时,总内存使用(包括 swap)可达到的百分比。
cat /proc/sys/vm/overcommit_ratio

调整这些参数

可以使用sysctl命令临时调整这些参数。例如:

sudo sysctl -w vm.dirty_ratio=20

要永久修改这些参数,可以将其添加到/etc/sysctl.conf文件中。例如:

sudo sh -c 'echo "vm.dirty_ratio = 20" >> /etc/sysctl.conf'

然后应用更改:

sudo sysctl -p

总结

这些参数允许你细粒度地控制 Linux 内核的内存和缓存管理行为。根据具体的应用需求和系统资源情况,适当调整这些参数可以优化系统性能和资源利用率。

相关推荐

  1. linux kernel 内核缓存回收相关配置

    2024-07-23 02:46:01       17 阅读
  2. 常用Prettier配置

    2024-07-23 02:46:01       31 阅读
  3. jvm垃圾回收相关算法

    2024-07-23 02:46:01       46 阅读
  4. 缓存相关状态码

    2024-07-23 02:46:01       41 阅读
  5. Nginx缓存配置与其他配置

    2024-07-23 02:46:01       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 02:46:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 02:46:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 02:46:01       45 阅读
  4. Python语言-面向对象

    2024-07-23 02:46:01       55 阅读

热门阅读

  1. Asp Net Web API 请求报错

    2024-07-23 02:46:01       11 阅读
  2. 欧鹏 数据库第二次作业

    2024-07-23 02:46:01       12 阅读
  3. FTP传输的两种模式的技术原理和应用

    2024-07-23 02:46:01       14 阅读
  4. mysql的不等于和null值问题

    2024-07-23 02:46:01       14 阅读
  5. 论c++中的GUI

    2024-07-23 02:46:01       14 阅读
  6. objdump命令的常见用法

    2024-07-23 02:46:01       11 阅读
  7. 关于paddle OCR不能调用cpu的问题

    2024-07-23 02:46:01       14 阅读
  8. 数据结构代码

    2024-07-23 02:46:01       14 阅读
  9. 理解 Objective-C 中 `+load` 方法的执行顺序

    2024-07-23 02:46:01       17 阅读
  10. llama_index中使用Ollama是出现timed out 问题

    2024-07-23 02:46:01       18 阅读
  11. SSH连接虚拟机被拒绝

    2024-07-23 02:46:01       13 阅读