lkml.org 
[lkml]   [2022]   [Jan]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] mm/vmscan.c: no need to double-check if free pages are under high-watermark
On Sun,  2 Jan 2022 12:31:29 +0900 skseofh@gmail.com wrote:

> From: Daero Lee <skseofh@gmail.com>
>
> In kswapd_try_to_sleep function, to check whether kswapd can sleep,
> the prepare_kswapd_sleep function is called twice.
>
> If free pages are below high-watermark in the first call,
> the @remaining variable is not updated at 0 and the
> prepare_kswapd_sleep function is called for the second time.
>
> I think it is necessary to set the initial value of the
> @remaining to a non-zero value to prevent consecutive calls
> to the same function.

Seems right. Mel & Joonsoo, could you please check?

> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -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

whoops.

> * remain at the higher level.
> */
> return sc.order;
> @@ -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())

\
 
 \ /
  Last update: 2022-01-06 01:18    [W:0.320 / U:0.492 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site