Following suggestion[1], offer a cgroupfs entry to allow an administrator to request that a dmem controlled region also charges to the memory controller.
Add mem_cgroup_dmem_charge/uncharge helpers to resolve the effective cgroup from a dmem pool's cgroup, perform the charge and update a MEMCG_DMEM stat counter. Add a "dmem.memcg" control file at the root level to configure memcg charging per region. The setting is disabled by default and locked on first charge attempt. [1] https://lore.kernel.org/all/[email protected]/ Signed-off-by: Eric Chanudet <[email protected]> --- Changes in v2: - Use mem_cgroup_dmem_{,un}charge to account for memcg pages instead of exposing raw nr_pages functions. Use it to centralize where to find the effective cgroup from the pool's cgroup (Johannes) - Set depends_on for cgrp_memory if CONFIG_MEMCG by having a memory controller in children cgroup (Michal) - Move dmem.memcg to the root level as it applies by region for all cgroups - Add a dmem memory.stats entry for reporting memcg charges for dmem allocations. - Wrap the memcg enable/disable/lock configuration under a single state to avoid toctou races and simplify transitions. - Link to v1: https://lore.kernel.org/r/20260403-cgroup-dmem-memcg-double-charge-v1-0-c371d155d...@redhat.com --- Eric Chanudet (2): mm/memcontrol: add dmem charge/uncharge functions cgroup/dmem: add dmem.memcg control file for double-charging to memcg Documentation/admin-guide/cgroup-v2.rst | 23 +++++ include/linux/memcontrol.h | 16 ++++ kernel/cgroup/dmem.c | 158 +++++++++++++++++++++++++++++++- mm/memcontrol.c | 65 +++++++++++++ 4 files changed, 259 insertions(+), 3 deletions(-) --- base-commit: d989f135f71699294bb2ffd4726b526456e2db68 change-id: 20260327-cgroup-dmem-memcg-double-charge-0f100a9ffbf2 Best regards, -- Eric Chanudet <[email protected]>
