我的 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 缓存。目录缓存比我想象的要小得多。
不过,我仍然无法真正推断出使用了多少页面缓存。