内存回收中fastpath和kswapd以及direct reclaim的差异
fastpath、kswapd和direct reclaim都会扫描zone,且最后调用的函数都一样,那么他们有什么区别呢?
fastpath和slowpath的区别在于,fastpath要求zone的unmapped file page必须大于zone规定的min_unmapped_pages,slab reclaimable大于min_slab_pages,回收内存的的页数为2^order个页数和是32个之间的最大值,而kswapd回收内存需要回收到所有的zone都满足free page大于high watermark值或者zone的high watermark值个页面。同时fastpath不会进行回写,也不会回收mapped的page。fastpath主要靠zone_reclaim来完成快速的内存回收。kswap则主要从balance_pgdat()来完成
direct reclaim和kswapd的差别在于只能回收32个页面,同时kswapd进行回写页面需要满足特定条件(当前有很多的页面需要等待writeback),而direct reclaim判断当回收过程中扫描的总页数大于48个时就会启动flush线程来进行脏页的回写操作。
我们在调性能时候都会尽量的提高extra_free_kbytes的值来防止过多的出现direct reclaim,因为direct reclaim会进行脏页的回写,这里再IO性能不是很好的时候会造成系统严重卡顿。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
