On Tue, 2017-01-24 at 15:49 +0800, Jia He wrote: > When there is no reclaimable pages in the zone, even the zone is > not balanced, we let kswapd go sleeping. That is prepare_kswapd_sleep > will return true in this case. > > Signed-off-by: Jia He <hejia...@gmail.com> > --- > mm/vmscan.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 7396a0a..54445e2 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -3140,7 +3140,8 @@ static bool prepare_kswapd_sleep(pg_data_t > *pgdat, int order, int classzone_idx) > if (!managed_zone(zone)) > continue; > > - if (!zone_balanced(zone, order, classzone_idx)) > + if (!zone_balanced(zone, order, classzone_idx) > + && !zone_reclaimable_pages(zone)) > return false; > }
This patch does the opposite of what your changelog says. The above keeps kswapd running forever if the zone is not balanced, and there are no reclaimable pages.