使用 vfs_cache_pressure 将文件系统元数据保存在缓存中

使用 vfs_cache_pressure 将文件系统元数据保存在缓存中

我的 Ubuntu Linux(虚拟)服务器每天都会运行 rdiff-backup,它会查看所有文件元数据以确定需要备份的内容,从而减慢其速度。它每天都会这样做,即使大多数文件不会更改。我想将这些数据保存在缓存中。为此,我一直在尝试/proc/sys/vm/vfs_cache_pressure,目前设置为 20。

举例来说,一个虚拟服务器有 35% 的 inode 正在使用中:

在此处输入图片描述

这总计为 1057350。Inode 大小为 256。这是否意味着我需要 (1057350*256) = 258 MB?编辑:显然不是,见下文。

那么目录项呢?该服务器有 225510 个目录,其中大多数大小为 4k。这是否意味着我需要 225510 * 4096 = 880 MB 的缓存?

这是否意味着当我设置vfs_cache_pressure为 1 并且有 2 GB 的可用内存时,它会将所有元数据保留在缓存中?

我如何才能看到当前缓存的使用情况;什么是元数据,什么是数据?

编辑:我刚刚找到了这个slabtop工具。最上面的几行是:

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
1656144 1655632  99%    0.19K  78864       21    315456K dentry                 
1207269 1207269 100%    0.76K  57489       21    919824K ext3_inode_cache       
246909 246909 100%    0.10K   6331       39     25324K buffer_head            
232640 232400  99%    0.06K   3635       64     14540K kmalloc-64             
 69776  60491  86%    0.55K   2492       28     39872K radix_tree_node        
 51896  49740  95%    0.61K   1996       26     31936K proc_inode_cache       
 37376  21915  58%    0.01K     73      512       292K kmalloc-8

因此已经有 1 GB 的 inode 缓存。目录缓存比我想象的要小得多。

不过,我仍然无法真正推断出使用了多少页面缓存。

相关内容