On Thu, Jan 06, 2022 at 09:03:34PM +0900, DaeRo Lee wrote: > > > @@ -4355,7 +4355,7 @@ static enum zone_type kswapd_highest_zoneidx(pg_data_t *pgdat, > > > static void kswapd_try_to_sleep(pg_data_t *pgdat, int alloc_order, int reclaim_order, > > > unsigned int highest_zoneidx) > > > { > > > - long remaining = 0; > > > + long remaining = ~0; > > > DEFINE_WAIT(wait); > > > > > > if (freezing(current) || kthread_should_stop()) > > > > While this does avoid calling prepare_kswapd_sleep() twice if the pgdat > > is balanced on the first try, it then does not restore the vmstat > > thresholds and doesn't call schedul() for kswapd to go to sleep. > > I intended not to call prepare_kswapd_sleep() twice when the pgdat is NOT > balanced on the first try:) > Stupid typo on my part. > > @@ -4406,11 +4412,11 @@ static void kswapd_try_to_sleep(pg_data_t *pgdat, int alloc_order, int reclaim_o > > } > > > > /* > > - * After a short sleep, check if it was a premature sleep. If not, then > > - * go fully to sleep until explicitly woken up. > > + * If balanced to the high watermark, restore vmstat thresholds and > > + * kswapd goes to sleep. If kswapd remains awake, account whether > > + * the low or high watermark was hit quickly. > > */ > > - if (!remaining && > > - prepare_kswapd_sleep(pgdat, reclaim_order, highest_zoneidx)) { > > + if (balanced) { > > trace_mm_vmscan_kswapd_sleep(pgdat->node_id); > > > > /* > > But, I think what you did is more readable and nice. > Thanks! > Feel free to pick it up, rerun your tests to ensure it's behaving as expected and resend! Include something in the changelog about user-visible effects if any (or a note saying that it reduces unnecssary overhead) and resend with me added to the cc. > > > @@ -4331,7 +4331,7 @@ static int balance_pgdat(pg_data_t *pgdat, int order, int highest_zoneidx) > > > /* > > > * Return the order kswapd stopped reclaiming at as > > > * prepare_kswapd_sleep() takes it into account. If another caller > > > - * entered the allocator slow path while kswapd was awake, order will > > > + * entered the allqocator slow path while kswapd was awake, order will > > > * remain at the higher level. > > > */ > > > return sc.order; > > > > This hunk just adds a typo, drop it. > > Sorry about that;; No need to be sorry, it happens :) Thanks! -- Mel Gorman SUSE Labs