Re: [PATCH] memcg: page_alloc: skip bulk allocator for __GFP_ACCOUNT
From: Roman Gushchin <hidden>
Date: 2021-10-13 22:03:59
Also in:
cgroups, lkml
On Wed, Oct 13, 2021 at 12:43:38PM -0700, Shakeel Butt wrote:
quoted hunk ↗ jump to hunk
The commit 5c1f4e690eec ("mm/vmalloc: switch to bulk allocator in __vmalloc_area_node()") switched to bulk page allocator for order 0 allocation backing vmalloc. However bulk page allocator does not support __GFP_ACCOUNT allocations and there are several users of kvmalloc(__GFP_ACCOUNT). For now make __GFP_ACCOUNT allocations bypass bulk page allocator. In future if there is workload that can be significantly improved with the bulk page allocator with __GFP_ACCCOUNT support, we can revisit the decision. Fixes: 5c1f4e690eec ("mm/vmalloc: switch to bulk allocator in __vmalloc_area_node()") Signed-off-by: Shakeel Butt <redacted> --- mm/page_alloc.c | 4 ++++ 1 file changed, 4 insertions(+)diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 668edb16446a..b3acad4615d3 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c@@ -5215,6 +5215,10 @@ unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid, unsigned int alloc_flags = ALLOC_WMARK_LOW; int nr_populated = 0, nr_account = 0; + /* Bulk allocator does not support memcg accounting. */ + if (unlikely(gfp & __GFP_ACCOUNT)) + goto out; +
Isn't it a bit too aggressive?
How about
if (WARN_ON_ONCE(gfp & __GFP_ACCOUNT))
gfp &= ~__GFP_ACCOUNT;
And maybe with some explanatory message?
Thanks!