cat /proc/meminfo 看到。其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache)。随着写入缓存页,Dirty 的值会增加。 一旦开始把缓存页写入硬盘,Writeback的值会增加直到写入结束。 cat /proc/sys/vm/nr_pdflush_threadspdflush的行为受/proc/sys/vm中的参数的控制 /proc/sys/vm/dirty_writeback_centisecs (default 500): 1/100秒, 多长时间唤醒pdflush将缓存页数据写入硬盘。默认5秒唤醒2个(更多个)线程。 如果wrteback的时间长于dirty_writeback_centisecs的时间,可能会出问题。 pdflush的第一件事是读取 第二件事是判断内存是否到了要写入硬盘的限额,由参数决定: pdflush写入硬盘看两个参数: 以下参数也会影响到pdflush 对于有高度写入操作的系统 Swapping参数 如果有大量的写操作,为避免I/O的长时间等待,可以设置: 文件系统数据缓冲需要频繁的内存分配。加大保留内存的值能提升系统速度和稳定。小于8G的内存,保留内存为64M,大于8G的设置为256M I/O 调度器 4中调度算法 改变调度器 提高调度器请求队列的 有大量的读请求,默认的请求队列应付不过来,可以提高这个值。缺点是要牺牲一定的内存。 服务器遇到磁盘写活动高峰,导致请求处理延迟非常大(超过3秒)。通过调整内核参数,将写活动的高峰分布成频繁的多次写,每次写入的数据比较少。这样可以把尖峰的写操作削平成多次写操作。以这种方式执行的效率比较低,因为内核不太有机会组合写操作。但对于繁忙的服务器,写操作将更一致地进行,并将极大地改进交互式性能。 <strong>/proc/sys/vm/dirty_ratio </strong> 控制文件系统的写缓冲区的大小,单位是百分比,表示占系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值。 <strong>/proc/sys/vm/dirty_background_ratio</strong> 控制文件系统的pdflush进程,在何时刷新磁盘。单位是百分比,表示系统内存的百分比,pdflush用于将内存中的内容和文件系统进行同步,比如说,当一个文件在内存中进行修改,pdflush负责将它写回硬盘.每当内存中的垃圾页(dirty page)超过10%的时候,pdflush就会将这些页面备份回硬盘.增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值: <strong>/proc/sys/vm/dirty_writeback_centisecs</strong> 控制内核的脏数据刷新进程pdflush的运行间隔。单位是 1/100 秒。缺省数值是500,也就是 5 秒。如果你的系统是持续地写入动作,那么实际上还是降低这个数值比较好,这样可以把尖峰的写操作削平成多次写操作。 <strong>/proc/sys/vm/dirty_expire_centisecs</strong> 声明Linux内核写缓冲区里面的数据多“旧”了之后,pdflush进程就开始考虑写到磁盘中去。单位是 1/100秒。缺省是 30000,也就是 30 秒的数据就算旧了,将会刷新磁盘。对于特别重载的写操作来说,这个值适当缩小也是好的,但也不能缩小太多,因为缩小太多也会导致IO提高太快。 <strong>/proc/sys/vm/vfs_cache_pressure</strong> 表示内核回收用于directory和inode <strong>/proc/sys/vm/min_free_kbytes</strong> 表示强制Linux <strong>/proc/sys/vm/nr_pdflush_threads</strong> 表示当前正在运行的pdflush进程数量,在I/O负载高的情况下,内核会自动增加更多的pdflush进程。 <strong>/proc/sys/vm/overcommit_memory</strong> 指定了内核针对内存分配的策略,其值可以是0、1、2。 0, 1, 2, 缺省设置:0 <strong>/proc/sys/vm/overcommit_ratio</strong> 如果overcommit_memory=2,可以过载内存的百分比,通过以下公式来计算系统整体可用内存。系统可分配内存=交换空间+物理内存*overcommit_ratio/100 <strong>/proc/sys/vm/page-cluster</strong> 表示在写一次到swap区的时候写入的页面数量,0表示1页,1表示2页,2表示4页。 <strong>/proc/sys/vm/swapiness</strong> 表示系统进行交换行为的程度,数值(0-100)越高,越可能发生磁盘交换。 更改: <strong>vm.dirty_ratio = 40</strong> sysctl -p 查看: <strong>find /proc/sys/vm -name dirty* -print | while read name; do echo $name ;cat ${<strong>name</strong> </strong> |
|