![内核如何决定哪些页面提交交换?](https://linux22.com/image/66864/%E5%86%85%E6%A0%B8%E5%A6%82%E4%BD%95%E5%86%B3%E5%AE%9A%E5%93%AA%E4%BA%9B%E9%A1%B5%E9%9D%A2%E6%8F%90%E4%BA%A4%E4%BA%A4%E6%8D%A2%EF%BC%9F.png)
如果 RAM 使用率高于 «swapiness» 中写入的级别,内核将使用 SWAP。好的。但是内核如何“排序”程序呢? RAM 是“先到先得”吗?或者 SWAP 中最大的程序? RAM 中最常用的程序?
我想知道在 RAM 已满或几乎满的情况下,内核如何决定 RAM 或 SWAP。
答案1
内核内存管理不使用“程序”的概念来组织内存,而是使用页面。内核根据“最近最少使用”来决定(这可能已经改变,但是我能找到的最新参考资料这么说),当内核面临内存压力时(通过交换,它会交换出那些很少访问的页面,为更频繁访问的页面或新页面(或者为什么不,磁盘缓存)提供空间。
所以,你的假设都不正确。内核不会将程序排序到交换区,而是以统计方式选择内存的哪些部分将提交到交换区。该方法是LRU。程序提交的匿名或私有内存的大小不会影响内核选择提交哪些页面的方式。
您可以使用 来查看内核已承诺交换多少千字节(或页)smem -s swap -t -k -n
。