Messages in this thread Patch in this message | | | Date | Wed, 13 Oct 2021 12:43:38 -0700 | Subject | [PATCH] memcg: page_alloc: skip bulk allocator for __GFP_ACCOUNT | From | Shakeel Butt <> |
| |
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 <shakeelb@google.com> --- 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; + /* * Skip populated array elements to determine if any pages need * to be allocated before disabling IRQs. -- 2.33.0.882.g93a45727a2-goog
| |