如何强制内核cachingNFS上的更多文件

我有一个专门的networking服务器提供静态文件víaNFS。 服务器有32GB的内存,但caching内存永远不会超过16GB。

我敢肯定,SO可以分配更多的,因为一整天,caching的内存保持固定在16GB,但是当logrotate运行时,caching内存增长到30GB。

我一直在玩/ proc / slabinfo(nfs_direct_cache nfs_read_data nfs_inode_cache)几个值没有成功。

任何提示或链接关于这将是感激。

提前致谢。

如果您谈论页面caching,则会随着您访问的文件,您访问的文件中的数据量以及文件的活动情况而增长。

在现代内核上,当一个文件被caching时,它立即被标记为非活动,直到它再次被使用。 这并不意味着将其从caching中逐出,而是在内存压力较高的系统上(主动匿名映射的页面),它可能会很快被丢弃。

caching大小也是由内存压力决定的。 这基本上是caching扫描次数的一小部分,即从“非活动”提升到“活动”的页面数量,反之亦然。 反对从磁盘访问这些数据需要多less个磁盘search。 因此,实际上,扫描和维护caching比从磁盘访问某些数据需要更长的时间,不要增加页面caching大小。

这可能是因为你没有通过文件访问产生足够的内存压力来决定使用更多的页面caching会有什么好处。 这意味着每天大约有16G的页面访问,而且这种情况经常不会改变。

我想在logrotate,如果你刚才阅读的文件(导致30G)连续读取,那么它使用的网页不需要在那里了。 这可以解释为什么页面caching大小再次降低。

AFAIK这只是后期2.6.28内核,他们改变了内存pipe理algorithm。