Re: [PATCH] memcg: page_alloc: skip bulk allocator for __GFP_ACCOUNT
From: Vasily Averin <hidden>
Date: 2021-10-14 07:05:50
Also in:
linux-mm, lkml
On 13.10.2021 22:43, 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; +
May be (memcg_kmem_enabled() && (gfp & __GFP_ACCOUNT)) check is better here?
/* * Skip populated array elements to determine if any pages need * to be allocated before disabling IRQs.