[PATCH RFC 0/4] mm: kmem: kernel memory accounting in an interrupt context

Roman Gushchin
2020-08-27T17:52:35Z

This patchset implements memcg-based memory accounting of
allocations made from an interrupt context.

Historically, such allocations were passed unaccounted mostly
because charging the memory cgroup of the current process wasn't
an option. Also performance reasons were likely a reason too.

The remote charging API allows to temporarily overwrite the
currently active memory cgroup, so that all memory allocations
are accounted towards some specified memory cgroup instead
of the memory cgroup of the current process.

This patchset extends the remote charging API so that it can be
used from an interrupt context. Then it removes the fence that
prevented the accounting of allocations made from an interrupt
context. It also contains a couple of optimizations/code
refactorings.

This patchset doesn't directly enable accounting for any specific
allocations, but prepares the code base for it. The bpf memory
accounting will likely be the first user of it: a typical
example is a bpf program parsing an incoming network packet,
which allocates an entry in hashmap map to store some information.

Roman Gushchin (4):
mm: kmem: move memcg_kmem_bypass() calls to
get_mem/obj_cgroup_from_current()
mm: kmem: remove redundant checks from get_obj_cgroup_from_current()
mm: kmem: prepare remote memcg charging infra for interrupt contexts
mm: kmem: enable kernel memcg accounting from interrupt contexts

include/linux/memcontrol.h | 12 -------
include/linux/sched/mm.h | 13 +++++--
mm/memcontrol.c | 69 ++++++++++++++++++++++++++++----------
mm/percpu.c | 3 +-
mm/slab.h | 3 --
5 files changed, 63 insertions(+), 37 deletions(-)

--
2.26.2