【问题标题】:Drop cache does not work删除缓存不起作用
【发布时间】:2014-08-29 22:44:46
【问题描述】:

我目前正在优化大型程序的内存管理。出于某种目的,我想将页面缓存放在我的主内存中。

我使用了互联网上广泛建议的sync && echo 3 > /proc/sys/vm/drop_caches,但它不会将缓存降至程序启动之前的水平。这意味着程序启动后主内存中有一些不可删除的缓存。

但是echo 3 不是意味着释放缓存内存中的页面缓存、dentries 和 inode?是否还有其他类型的缓存无法通过此命令释放?

【问题讨论】:

  • 你如何确定缓存没有被删除?
  • 我使用了free -mhtop前后的值。

标签: linux caching memory memory-management


【解决方案1】:

是的,有些类型的缓存不能被删除。例如,tmpfs 文件系统存储在页面缓存中。但这些在使用时无法冲洗。通过使用free 命令并检查available 列,您可以更好地了解您真正拥有多少内存。您会注意到可用内存小于空闲 + 缓冲区 + 缓存。有时要小得多。

有关tmpfs 使用缓存的更多信息,请参阅this answer

【讨论】:

    【解决方案2】:

    在发出 drop cache 之前和之后收集 cat /proc/vmstat 的输出。

    它将给出 nr_inactive_file、nr_active_file、nr_file_pages、nr_isolated_file。如果 drop cache 有效,那么以上 4 的总数应该比发出 drop cache 之前少。

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      相关资源
      最近更新 更多