mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
mm: memcontrol: refactor mod_memcg_state() and mod_memcg_lruvec_state()
Refactor the memcg_reparent_objcgs() to facilitate subsequent reparenting non-hierarchical stats. Link: https://lore.kernel.org/7f8bd3aacec2270b9453428fc8585cca9f10751e.1772711148.git.zhengqi.arch@bytedance.com Co-developed-by: Yosry Ahmed <yosry@kernel.org> Signed-off-by: Yosry Ahmed <yosry@kernel.org> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> Acked-by: Shakeel Butt <shakeel.butt@linux.dev> Cc: Allen Pais <apais@linux.microsoft.com> Cc: Axel Rasmussen <axelrasmussen@google.com> Cc: Baoquan He <bhe@redhat.com> Cc: Chengming Zhou <chengming.zhou@linux.dev> Cc: Chen Ridong <chenridong@huawei.com> Cc: David Hildenbrand <david@kernel.org> Cc: Hamza Mahfooz <hamzamahfooz@linux.microsoft.com> Cc: Harry Yoo <harry.yoo@oracle.com> Cc: Hugh Dickins <hughd@google.com> Cc: Imran Khan <imran.f.khan@oracle.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Kamalesh Babulal <kamalesh.babulal@oracle.com> Cc: Lance Yang <lance.yang@linux.dev> Cc: Liam Howlett <Liam.Howlett@oracle.com> Cc: Lorenzo Stoakes (Oracle) <ljs@kernel.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Michal Koutný <mkoutny@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Muchun Song <muchun.song@linux.dev> Cc: Muchun Song <songmuchun@bytedance.com> Cc: Nhat Pham <nphamcs@gmail.com> Cc: Roman Gushchin <roman.gushchin@linux.dev> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Usama Arif <usamaarif642@gmail.com> Cc: Vlastimil Babka <vbabka@kernel.org> Cc: Wei Xu <weixugc@google.com> Cc: Yuanchu Xie <yuanchu@google.com> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
7404bd37cf
commit
5371e350fd
|
|
@ -717,21 +717,12 @@ static int memcg_state_val_in_pages(int idx, int val)
|
|||
return max(val * unit / PAGE_SIZE, 1UL);
|
||||
}
|
||||
|
||||
/**
|
||||
* mod_memcg_state - update cgroup memory statistics
|
||||
* @memcg: the memory cgroup
|
||||
* @idx: the stat item - can be enum memcg_stat_item or enum node_stat_item
|
||||
* @val: delta to add to the counter, can be negative
|
||||
*/
|
||||
void mod_memcg_state(struct mem_cgroup *memcg, enum memcg_stat_item idx,
|
||||
int val)
|
||||
static void __mod_memcg_state(struct mem_cgroup *memcg,
|
||||
enum memcg_stat_item idx, int val)
|
||||
{
|
||||
int i = memcg_stats_index(idx);
|
||||
int cpu;
|
||||
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
|
||||
if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
|
||||
return;
|
||||
|
||||
|
|
@ -745,6 +736,21 @@ void mod_memcg_state(struct mem_cgroup *memcg, enum memcg_stat_item idx,
|
|||
put_cpu();
|
||||
}
|
||||
|
||||
/**
|
||||
* mod_memcg_state - update cgroup memory statistics
|
||||
* @memcg: the memory cgroup
|
||||
* @idx: the stat item - can be enum memcg_stat_item or enum node_stat_item
|
||||
* @val: delta to add to the counter, can be negative
|
||||
*/
|
||||
void mod_memcg_state(struct mem_cgroup *memcg, enum memcg_stat_item idx,
|
||||
int val)
|
||||
{
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
|
||||
__mod_memcg_state(memcg, idx, val);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MEMCG_V1
|
||||
/* idx can be of type enum memcg_stat_item or node_stat_item. */
|
||||
unsigned long memcg_page_state_local(struct mem_cgroup *memcg, int idx)
|
||||
|
|
@ -764,21 +770,16 @@ unsigned long memcg_page_state_local(struct mem_cgroup *memcg, int idx)
|
|||
}
|
||||
#endif
|
||||
|
||||
static void mod_memcg_lruvec_state(struct lruvec *lruvec,
|
||||
enum node_stat_item idx,
|
||||
int val)
|
||||
static void __mod_memcg_lruvec_state(struct mem_cgroup_per_node *pn,
|
||||
enum node_stat_item idx, int val)
|
||||
{
|
||||
struct mem_cgroup_per_node *pn;
|
||||
struct mem_cgroup *memcg;
|
||||
struct mem_cgroup *memcg = pn->memcg;
|
||||
int i = memcg_stats_index(idx);
|
||||
int cpu;
|
||||
|
||||
if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
|
||||
return;
|
||||
|
||||
pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec);
|
||||
memcg = pn->memcg;
|
||||
|
||||
cpu = get_cpu();
|
||||
|
||||
/* Update memcg */
|
||||
|
|
@ -794,6 +795,17 @@ static void mod_memcg_lruvec_state(struct lruvec *lruvec,
|
|||
put_cpu();
|
||||
}
|
||||
|
||||
static void mod_memcg_lruvec_state(struct lruvec *lruvec,
|
||||
enum node_stat_item idx,
|
||||
int val)
|
||||
{
|
||||
struct mem_cgroup_per_node *pn;
|
||||
|
||||
pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec);
|
||||
|
||||
__mod_memcg_lruvec_state(pn, idx, val);
|
||||
}
|
||||
|
||||
/**
|
||||
* mod_lruvec_state - update lruvec memory statistics
|
||||
* @lruvec: the lruvec
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user