我正在处理文件系统中的数亿个文件(分布在许多子目录中),我需要能够非常快速地列出它们,特别是为了有效地 rsync 它们。
另一方面,我真的不需要将文件的实际内容保存在缓存中。
我不断地添加和删除文件,但不是那么频繁(大约每秒十次)。
有什么方法可以告诉操作系统 (2.6.18-194.el5) 在 inode 缓存上比在文件缓存上更多地使用 24GB 可用 RAM?我已经看过 /proc/etc/vm/vfs_cache_pressure 但它似乎并不是我正在寻找的......
小智 6
降低 的值如何vfs_cache_pressure
?根据文档 /proc/sys/vm/*这应该做你想做的:
vfs_cache_pressure
此百分比值控制内核回收用于缓存目录和 inode 对象的内存的趋势。
在 vfs_cache_pressure=100 的默认值下,内核将尝试以相对于页面缓存和交换缓存回收的“公平”速率回收 dentry 和 inode。降低 vfs_cache_pressure 会导致内核更喜欢保留 dentry 和 inode 缓存。当 vfs_cache_pressure=0 时,内核永远不会因为内存压力而回收 dentry 和 inode,这很容易导致内存不足的情况。将 vfs_cache_pressure 增加到 100 以上会导致内核更喜欢回收 dentry 和 inode。
显着增加 vfs_cache_pressure 超过 100 可能会对性能产生负面影响。回收代码需要使用各种锁来找到可释放的目录和 inode 对象。当 vfs_cache_pressure=1000 时,它将寻找比实际多十倍的可释放对象。
您可以使用这两个命令来完成相同的工作。
Updatedb(更新整个驱动器中的文件和文件夹位置列表)
locate /(列出整个操作系统中的所有文件,从数据库中获取它们的速度快如闪电)