Re: [PATCH v2] page_alloc: fix invalid watemark check on a negative value

From: Andrew Morton
Date: Mon Jul 25 2022 - 14:37:29 EST


On Mon, 25 Jul 2022 18:52:12 +0900 Jaewon Kim <jaewon31.kim@xxxxxxxxxxx> wrote:

> There was a report that a task is waiting at the
> throttle_direct_reclaim. The pgscan_direct_throttle in vmstat was
> increasing.
>
> This is a bug where zone_watermark_fast returns true even when the free
> is very low. The commit f27ce0e14088 ("page_alloc: consider highatomic
> reserve in watermark fast") changed the watermark fast to consider
> highatomic reserve. But it did not handle a negative value case which
> can be happened when reserved_highatomic pageblock is bigger than the
> actual free.
>
> If watermark is considered as ok for the negative value, allocating
> contexts for order-0 will consume all free pages without direct reclaim,
> and finally free page may become depleted except highatomic free.
>
> Then allocating contexts may fall into throttle_direct_reclaim. This
> symptom may easily happen in a system where wmark min is low and other
> reclaimers like kswapd does not make free pages quickly.
>
> Handle the negative case by using MIN.
>

Thanks, I added cc:stable to this.