【发布时间】:2010-10-10 15:02:55
【问题描述】:
我想在缓存开始占用过多内存后强制 Linux 内核为应用程序分配更多内存(从 'free' 的输出可以看出)。
我跑了
sudo sync; sudo sysctl -w vm.drop_caches=3; free
(释放磁盘目录/inode 缓存和页面缓存)我看到只有大约一半已使用的缓存被释放 - 其余的仍然存在。如何判断是什么占用了缓存的其余部分并强制释放它?
【问题讨论】:
-
留下的缓存只是缓存,当需要新内存时会立即丢弃。强制删除这些缓存区域是没有好处的。应用程序将永远是内存的第一公民,不必为它与缓存竞争。
-
我的服务器有问题,我认为某些东西正在滥用缓存,以至于应用程序被降级为换出页面,并且由于内存不足而崩溃。这可能是内核问题,也可能不是。清除缓存可能是一个很好的测试方法。
标签: linux linux-kernel kernel memory-management