![为什么缓存交换有意义?](https://linux22.com/image/115/%E4%B8%BA%E4%BB%80%E4%B9%88%E7%BC%93%E5%AD%98%E4%BA%A4%E6%8D%A2%E6%9C%89%E6%84%8F%E4%B9%89%EF%BC%9F.png)
对我来说,缓存换出的页面听起来非常适得其反。如果交换页面,首先将它们缓存在内存中,然后只需将它们移动到正确的位置有什么好处?即使主动交换页面,“仅仅”交换它们不是更有意义吗?事实上缓存交换不是浪费资源吗?
答案1
经过更多研究,我发现 SwapCached 一词/proc/meminfo
具有误导性。事实上,它与内存和交换中同时存在的字节数有关,这样如果这些页面不脏,则不需要将其换出。
答案2
我从来没有听说过这个,而且对我来说也没有多大意义。我仍然认为确保它根本不交换(当然预订除外)的好旧规则是最好的。现在,从理论上讲,将数据缓存在直接可用内存中具有明显的优势,因为从磁盘等慢速数据中加载数据需要一段时间。但是,如果您能够缓存要交换的页面,为什么还要再次进行交换呢?
答案3
在交换区和 RAM 之间复制页面的目的是避免等待磁盘,如果出现以下情况:
需要从他们身上读取一些东西
他们需要被驱逐才能为其他东西腾出空间
如果它们仅处于交换状态,则情况 1. 意味着等待它们从磁盘进入;如果它们仅位于 RAM 中,则情况 2. 意味着等待它们写入磁盘。
(当然,情况 2 实际上有点复杂,因为驱逐此类页面显然更便宜,因此内核可能会优先驱逐它们,但要点应该很清楚。)