linux swap 内存交换分区详细介绍

结论摘要:

一个内存剩余还比较大的系统中,是否有可能使用swap?

A: 有可能,如果运行中的某个阶段出发了这个条件”zonefile+zonefree<=high_wmark_pages(zone) “,就可能会swap。

swappiness设置为0就相当于关闭swap么?

A: 不是的,关闭swap要使用swapoff命令。swappiness只是在内存发生回收操作的时候用来平衡cache回收和swap交换的一个参数,调整为0意味着,尽量通过清缓存来回收内存。

swappiness设置为100代表系统会尽量少用剩余内存而多使用swap么?

A:不是的,这个值设置为100表示内存发生回收时,从cache回收内存和swap交换的优先级一样。就是说,如果目前需求100M内存,那么较大机率会从cache中清除50M内存,再将匿名页换出50M,把回收到的内存给应用程序使用。但是这还要看cache中是否能有空间,以及swap是否可以交换50m。内核只是试图对它们平衡一些而已。

kswapd进程什么时候开始内存回收?

A: kswapd根据内存水位标记决定是否开始回收内存,如果标记达到low就开始回收,回收到剩余内存达到high标记为止。

如何查看当前系统的内存水位标记?

A: cat /proc/zoneinfo

网上好多对swappiness的解释都不太对
感觉这篇文章讲的更准确