Thread (28 messages) 28 messages, 6 authors, 2021-10-16

Re: [PATCH mm v3] memcg: enable memory accounting in __alloc_pages_bulk

flat view

From: Shakeel Butt <hidden>
Date: 2021-10-12 16:09:02
Also in: cgroups, lkml

On Tue, Oct 12, 2021 at 8:36 AM Michal Hocko [off-list ref] wrote:
quoted hunk ↗ jump to hunk
On Tue 12-10-21 17:58:21, Vasily Averin wrote:
quoted
Enable memory accounting for bulk page allocator.
ENOCHANGELOG

And I have to say I am not very happy about the solution. It adds a very
tricky code where it splits different charging steps apart.

Would it be just too inefficient to charge page-by-page once all pages
are already taken away from the pcp lists? This bulk should be small so
this shouldn't really cause massive problems. I mean something like
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index b37435c274cf..8bcd69195ef5 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5308,6 +5308,10 @@ unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid,

        local_unlock_irqrestore(&pagesets.lock, flags);

+       if (memcg_kmem_enabled() && (gfp & __GFP_ACCOUNT)) {
+               /* charge pages here */
+       }
It is not that simple because __alloc_pages_bulk only allocate pages
for empty slots in the page_array provided by the caller.

The failure handling for post charging would be more complicated.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help