Linux脏页相关参数

发布于:2025-05-01 ⋅ 阅读:(27) ⋅ 点赞:(0)

参数

以下是Linux内核中与脏页(Dirty Page)相关的各个参数及其含义的详细说明:

1. vm.dirty_background_bytes

  • 含义:系统内存中脏页数量的绝对字节阈值(单位为字节),当脏页达到此值时,内核会在后台开始异步刷盘(不会阻塞应用程序)
  • 默认值:0(表示禁用,优先使用百分比dirty_background_ratio)
  • 优先级:如果设置为非零值,则覆盖dirty_background_ratio。

2. vm.dirty_background_ratio

  • 含义:系统内存中脏页占可用内存总量的百分比阈值,当脏页达到此比例时,内核会触发后台异步刷盘
  • 默认值:10(10%)
  • 示例:50GB内存的服务器,默认阈值为5GB脏页时触发后台刷盘。
  • 调优建议:
    • 降低(如5-10):可减少I/O堆积,但可能增加刷盘频率。
    • 升高(如20-30):适合写入密集型应用(如RocketMQ),但可能增加数据丢失风险。

3. vm.dirty_bytes

  • 含义:系统内存中脏页数量的绝对字节阈值(单位为字节),当脏页达到此值时,应用程序的写入操作会被同步阻塞,直到脏页被写入磁盘
  • 默认值:0(表示禁用,优先使用百分比dirty_ratio)。
  • 注意:与dirty_background_bytes不同,此参数触发的是同步刷盘(直接影响应用性能)

4. vm.dirty_expire_centisecs

  • 含义:脏页在内存中最长存活时间(单位:百分之一秒,即10毫秒),超过此时间的脏页会被后台刷盘线程写入磁盘。
  • 默认值:3000(即30秒)。
  • 调优建议:
    • 降低(如1000=10秒):减少数据丢失风险,但增加磁盘I/O压力。
    • 升高(如6000=60秒):适合允许短暂数据丢失的高吞吐场景。

5. vm.dirty_ratio

  • 含义:系统内存中脏页占可用内存总量的百分比阈值,当达到此比例时,应用程序的写入操作会被同步阻塞(强制刷盘)。
  • 默认值:20(20%)。
  • 示例:50GB内存的服务器,默认阈值为10GB脏页时阻塞写入。
  • 调优建议:
    • 降低(如10-15):减少写入延迟,适合低延迟应用。
    • 升高(如30-50):适合批量写入场景(如日志处理),但可能增加OOM风险。

6. vm.dirty_writeback_centisecs

  • 含义:内核周期性检查脏页的时间间隔(单位:百分之一秒),控制刷盘线程的唤醒频率。
  • 默认值:500(即5秒)。
  • 调优建议:
    • 常规值:500-1000(5-10秒)。
    • 写入密集型:可设为200-500(2-5秒)。
      不建议超过3000(30秒),否则可能丢失大量数据。

参数关系图

在这里插入图片描述

  • Linux如何查看dirty相关参数
    sysctl -a | grep dirty_