【问题标题】:Dentry caches for deletion用于删除的 Dentry 缓存
【发布时间】:2011-12-14 14:37:00
【问题描述】:

我正在开发一个无状态文件系统来浏览基于网络的目录和文件。我的主机上有我自己的文件/目录的 inode 缓存。我以这样一种方式设计了我的文件系统模块,即当从 VFS 层调用 evict_inode() 函数时,我的主机 inode 缓存将被删除。但是,只有在高内存压力或将 3 写入 /proc/sys/vm/drop_caches 时才会刷新。我不确定如何刷新我的主机 inode 缓存。随着时间的推移,我的主机端 inode 缓存变得越来越大,因为 evict_inode() 没有被调用。当我将 3 写入 /proc/sys/vm/drop_caches 时会调用它。

我想像 NFS 那样将dentry 缓存和inode 缓存标记为以有时限的方式删除,但我不确定如何实现这一点。

或者,有什么更好的办法来实现这一点?让 VFS inode 与我的主机 inode 同步会很有帮助。任何想法将不胜感激。

【问题讨论】:

    标签: linux linux-kernel


    【解决方案1】:

    释放页面缓存: echo 1 > /proc/sys/vm/drop_caches

    释放dentries和inode: 回声 2 > /proc/sys/vm/drop_caches

    释放 pagecache、dentries 和 inode: 回声 3 > /proc/sys/vm/drop_caches

    阅读更多:http://linuxpoison.blogspot.jp/2010/08/how-to-free-linux-kernel-page-cache.html#ixzz24ni162iL

    引用自:http://linuxpoison.blogspot.jp/2010/08/how-to-free-linux-kernel-page-cache.html

    【讨论】:

      【解决方案2】:

      我想像 NFS 那样将dentry 缓存和inode 缓存标记为限时删除,但我不知道如何实现。

      我认为 NFS 缓存的 inode 和 dentry 在到期后不会被“删除”。过期的 inode 和 dentry 只是在过期时重新验证。要真正从缓存中驱逐它们,我认为最简单的想法是垃圾收集过时的条目。 (一种简单的方法是将echo 3 > /proc/sys/vm/drop_caches 放入cron 作业中......)FUSE 也有时间限制验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-19
        • 1970-01-01
        • 2016-01-23
        • 2018-03-01
        相关资源
        最近更新 更多