Re: [PATCH 8/8] mm/vmscan: Delay waking of tasks throttled on NOPROGRESS

From: Vlastimil Babka
Date: Thu Oct 14 2021 - 11:41:22 EST


On 10/8/21 15:53, Mel Gorman wrote:
> Tracing indicates that tasks throttled on NOPROGRESS are woken
> prematurely resulting in occasional massive spikes in direct
> reclaim activity. This patch wakes tasks throttled on NOPROGRESS
> if reclaim efficiency is at least 12%.
>
> Signed-off-by: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx>

Acked-by: Vlastimil Babka <vbabka@xxxxxxx>

> ---
> mm/vmscan.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 7b54fec4072c..80a9a26f701f 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -3338,8 +3338,11 @@ static inline bool compaction_ready(struct zone *zone, struct scan_control *sc)
>
> static void consider_reclaim_throttle(pg_data_t *pgdat, struct scan_control *sc)
> {
> - /* If reclaim is making progress, wake any throttled tasks. */
> - if (sc->nr_reclaimed) {
> + /*
> + * If reclaim is making progress greater than 12% efficiency then
> + * wake all the NOPROGRESS throttled tasks.
> + */
> + if (sc->nr_reclaimed > (sc->nr_scanned >> 3)) {
> wait_queue_head_t *wqh;
>
> wqh = &pgdat->reclaim_wait[VMSCAN_THROTTLE_NOPROGRESS];
>