对磁盘I / O除外,是否可以对每个文件重复进行顺序stat
,导致缓冲区caching或slab对象驱逐旧条目和/或增长slab,从而导致明显的性能差异? 例如,Linux的缓冲区caching或slab处于加载大多数活动对象的状态。 磁盘上的“统计”文件(比如说所有这些文件)会将inode和dentry对象放在caching中。 因为他们人数众多,我认为他们可能会驱逐较旧的条目,并填充caching。 一旦完成,被删除的旧条目在相应应用程序访问时将不得不从磁盘重新加载。
我的问题是这种stat
例如对大量文件的重复使用对系统有明显影响吗? 这取决于caching的大小,据我了解,我的主要目标是了解大量文件的重复“du”是否会显着影响系统的性能。 同时指出是否可以看到任何其他的间接影响。
恕我直言,这取决于缓存替换政策。 如果是先进先出,那么yes – du
ing会用较新的代替旧条目。 但是,如果它是更常见的LRU,那么,我认为,这是不太可能发生的 – 我(希望)相信文件上的I / O对LRU时间/引用计数具有更高的优先级,然后进行stat
。 或者,也许这些缓存是完全分开的。 无论如何,强烈推荐一些深思熟虑的内核源代码阅读。