內存回收中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性能不是很好的時候會造成系統嚴重卡頓。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章