确定 Linux 2.6.32+ 中磁盘缓存的性能

确定 Linux 2.6.32+ 中磁盘缓存的性能

我希望找到一些好的方法(通过查看 /proc)或好工具,以便确定磁盘缓存的有效性。我希望能够确定磁盘缓存中使用的 RAM 中有多少被积极使用。我希望更好地了解磁盘缓存的使用情况,以便我可以更准确地为未来的服务器购买 RAM。

理想情况下,我希望看到的(尽管我不期望这种程度的详细)是这​​样的一份报告(或者我自己制作这份报告的方法):

1.4GB of RAM is used in the disk cache which is used for 10 IO requests per second
2.3GB of RAM "" "" for 2 requests per second
5.3GB of RAM "" "" is basically never used

答案1

我认为不可能收集这样的信息。内存实际上不用于处理请求。可能只有一个请求来映射内存中的页面,然后它可能会在很长一段时间内保持使用状态,而系统除了定期探测以查找陈旧内存之外,并不知道它使用了多少。

此外,该请求背后的理由是错误的。即使大多数缓存从未使用过,使用部分的命中率仍然取决于您拥有的缓存量。

让我打个比方。假设有 20 种不同的球,你可以保留其中 18 种。如果你随机存放,那么有 18/20 的机会你会有库存中有人想要的球。所以如果有人向你索要某个球,而你又有库存,那么只有 1/18 的球被使用过。但你有 18/20 的机会得到那个球,因为其他 17 个球都闲置在那里。

因此,用于满足请求的数量并不是真正正确的衡量标准。

系统实际上并没有保留足够的信息来让您了解如果缓存的大小不同,缓存的效果会如何。

更新:让我再解释一次为什么这行不通。您试图从 5GB RAM 用于未访问的缓存这一事实推断,如果系统的 RAM 少 5GB,其性能将大致相同。但这完全是错误的。

假设你经营一家书店。你注意到在某个月,你只卖出了 10% 的库存。你想:“真是浪费。90% 的书都闲置在那里。我不需要保留这么多库存。”所以你将库存减少了 90%。你认为会发生什么?

是的,事实上,你会发现很多库存都没有卖出去。但如果库存量少得多,大多数客户就无法在库存中找到他们想要的书。事后知道哪些书没有卖出去并不意味着你可以在事前用较少的库存来凑合——在你知道人们想要哪些书和不想要哪些书之前。

因此,即使您想要的信息可用,它也不会让您得出想要得出的结论。您必须保留足够的信息来运行模拟,并说 - 如果我保存在内存中的东西更少,我会保留哪些东西?因此,我是否仍然拥有后来被使用的信息?

因此,即使最终只使用了缓存中的一小部分数据,除非你能预测哪个信息将被使用,你不能推断,缓存的其余部分允许你将这些数据保存在内存中,这对性能没有显著影响。曾是用过的。

相关内容