为什么缓存交换有意义?

为什么缓存交换有意义?

对我来说,缓存换出的页面听起来非常适得其反。如果交换页面,首先将它们缓存在内存中,然后只需将它们移动到正确的位置有什么好处?即使主动交换页面,“仅仅”交换它们不是更有意义吗?事实上缓存交换不是浪费资源吗?

答案1

经过更多研究,我发现 SwapCached 一词/proc/meminfo具有误导性。事实上,它与内存和交换中同时存在的字节数有关,这样如果这些页面不脏,则不需要将其换出。

答案2

我从来没有听说过这个,而且对我来说也没有多大意义。我仍然认为确保它根本不交换(当然预订除外)的好旧规则是最好的。现在,从理论上讲,将数据缓存在直接可用内存中具有明显的优势,因为从磁盘等慢速数据中加载数据需要一段时间。但是,如果您能够缓存要交换的页面,为什么还要再次进行交换呢?

答案3

在交换区和 RAM 之间复制页面的目的是避免等待磁盘,如果出现以下情况:

  1. 需要从他们身上读取一些东西

  2. 他们需要被驱逐才能为其他东西腾出空间

如果它们仅处于交换状态,则情况 1. 意味着等待它们从磁盘进入;如果它们仅位于 RAM 中,则情况 2. 意味着等待它们写入磁盘。

(当然,情况 2 实际上有点复杂,因为驱逐此类页面显然更便宜,因此内核可能会优先驱逐它们,但要点应该很清楚。)

相关内容