log-about-linux-kernel-s-sysctl

vfs_cache_pressure


这个参数用于控制内核回收缓存目录和索引节点对象的频率。

它的默认值是100,内核相对于页缓存和交换缓存回收,将尝试以一种相对好的速率尝试回收目录数据结构和索引节点。降低vfs_cache_pressure使得内核更倾向于保存目录数据结构和索引节点缓存。当vfs_cache_pressure为0的时候,由于内存的压力的原因,系统内核将不回收目录数据结构和索引信息节点,这很容易就导致内存不足的情况。提高vfs_cache_pressure到100以上,将会导致内核提高回收目录数据结构和索引节点的速率,这可能对系统性能产生负面的影响。回收代码需要耗费多种锁去查找自由的目录和索引节点对象。如果vfs_cache_pressure=100,这将会查找比现有的自由对象多十倍。

swappiness


它是一个百分比数值,这个内核参数用来控制内核交换内存页的数量。数值越高,交换的数量就越多。
数值越低,会减少交换的数量。等于0的时候,等于告诉内核直到自由的文件备份页的数量少于某一数值的时候,才开始使用交换分区。它的默认的值是60。

总结:

  • 虚拟文件缓存系统(vfs),影响交换区的性能,百分比越高,将会提高内存回收频率。数值越低,说明内存回收频率越低,不需要频繁查询内存,寻找自由的目录数据结构和索引节点对象,系统性能相对要好,但是有可能会导致内存不足的情况发生。

  • 交换分区,控制系统内核如何使用交换分区,百分比越低,则系统内核更多的使用内存,使用交换分区的数量就会比较少,反之,则内核使用交换分区相对更多。可以说,交换区位于内存和磁盘中间一层,起到暂存区的作用,当内存不够用的时候,内存中的数据可以暂时放置到这个交换分区中。

References: