[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ada868d0-077a-f3a9-7a0e-78a594834999@suse.cz>
Date: Mon, 26 Jun 2017 13:53:13 +0200
From: Vlastimil Babka <vbabka@...e.cz>
To: Michal Hocko <mhocko@...nel.org>,
Andrew Morton <akpm@...ux-foundation.org>
Cc: Johannes Weiner <hannes@...xchg.org>, Mel Gorman <mgorman@...e.de>,
NeilBrown <neilb@...e.com>, LKML <linux-kernel@...r.kernel.org>,
linux-mm@...ck.org, Michal Hocko <mhocko@...e.com>
Subject: Re: [PATCH 2/6] mm, tree wide: replace __GFP_REPEAT by
__GFP_RETRY_MAYFAIL with more useful semantic
On 06/23/2017 10:53 AM, Michal Hocko wrote:
...
> diff --git a/include/linux/gfp.h b/include/linux/gfp.h
> index 4c6656f1fee7..6be1f836b69e 100644
> --- a/include/linux/gfp.h
> +++ b/include/linux/gfp.h
> @@ -25,7 +25,7 @@ struct vm_area_struct;
> #define ___GFP_FS 0x80u
> #define ___GFP_COLD 0x100u
> #define ___GFP_NOWARN 0x200u
> -#define ___GFP_REPEAT 0x400u
> +#define ___GFP_RETRY_MAYFAIL 0x400u
> #define ___GFP_NOFAIL 0x800u
> #define ___GFP_NORETRY 0x1000u
> #define ___GFP_MEMALLOC 0x2000u
> @@ -136,26 +136,55 @@ struct vm_area_struct;
> *
> * __GFP_RECLAIM is shorthand to allow/forbid both direct and kswapd reclaim.
> *
> - * __GFP_REPEAT: Try hard to allocate the memory, but the allocation attempt
> - * _might_ fail. This depends upon the particular VM implementation.
> + * The default allocator behavior depends on the request size. We have a concept
> + * of so called costly allocations (with order > PAGE_ALLOC_COSTLY_ORDER).
> + * !costly allocations are too essential to fail so they are implicitly
> + * non-failing (with some exceptions like OOM victims might fail) by default while
> + * costly requests try to be not disruptive and back off even without invoking
> + * the OOM killer. The following three modifiers might be used to override some of
> + * these implicit rules
> + *
> + * __GFP_NORETRY: The VM implementation will try only very lightweight
> + * memory direct reclaim to get some memory under memory pressure (thus
> + * it can sleep). It will avoid disruptive actions like OOM killer. The
> + * caller must handle the failure which is quite likely to happen under
> + * heavy memory pressure. The flag is suitable when failure can easily be
> + * handled at small cost, such as reduced throughput
> + *
> + * __GFP_RETRY_MAYFAIL: The VM implementation will retry memory reclaim
> + * procedures that have previously failed if there is some indication
> + * that progress has been made else where. It can wait for other
> + * tasks to attempt high level approaches to freeing memory such as
> + * compaction (which removes fragmentation) and page-out.
> + * There is still a definite limit to the number of retries, but it is
> + * a larger limit than with __GFP_NORERY.
Also, __GFP_NORETRY ^ (for grep purposes).
Powered by blists - more mailing lists