Michal Hocko wrote:
> +             target -= (stall_backoff * target + MAX_STALL_BACKOFF - 1) / 
> MAX_STALL_BACKOFF;
target -= DIV_ROUND_UP(stall_backoff * target, MAX_STALL_BACKOFF);



Michal Hocko wrote:
> This alone wouldn't be sufficient, though, because the writeback might
> get stuck and reclaimable pages might be pinned for a really long time
> or even depend on the current allocation context.

Is this a dependency which I worried at
http://lkml.kernel.org/r/201510262044.bai43236.fomsffotovl...@i-love.sakura.ne.jp
 ?

>                                                   Therefore there is a
> feedback mechanism implemented which reduces the reclaim target after
> each reclaim round without any progress.

If yes, this feedback mechanism will help avoiding infinite wait loop.

>                                          This means that we should
> eventually converge to only NR_FREE_PAGES as the target and fail on the
> wmark check and proceed to OOM.

What if all in-flight allocation requests are !__GFP_NOFAIL && !__GFP_FS ?
(In other words, either "no __GFP_FS allocations are in-flight" or "all
__GFP_FS allocations are in-flight but are either waiting for completion
of operations which depend on !__GFP_FS allocations with a lock held or
waiting for that lock to be released".)

Don't we need to call out_of_memory() even though !__GFP_FS allocations?

>                                 The backoff is simple and linear with
> 1/16 of the reclaimable pages for each round without any progress. We
> are optimistic and reset counter for successful reclaim rounds.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to