Message ID | 20210630040034.1155892-4-willy@infradead.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Folio conversion of memcg | expand |
On Wed 30-06-21 05:00:19, Matthew Wilcox wrote: > By using the node id in mem_cgroup_update_tree(), we can delete > soft_limit_tree_from_page() and mem_cgroup_page_nodeinfo(). Saves 42 > bytes of kernel text on my config. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Acked-by: Michal Hocko <mhocko@suse.com> Thanks! > --- > mm/memcontrol.c | 24 ++++-------------------- > 1 file changed, 4 insertions(+), 20 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 25cad0fb7d4e..29b28a050707 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -446,28 +446,12 @@ ino_t page_cgroup_ino(struct page *page) > return ino; > } > > -static struct mem_cgroup_per_node * > -mem_cgroup_page_nodeinfo(struct mem_cgroup *memcg, struct page *page) > -{ > - int nid = page_to_nid(page); > - > - return memcg->nodeinfo[nid]; > -} > - > static struct mem_cgroup_tree_per_node * > soft_limit_tree_node(int nid) > { > return soft_limit_tree.rb_tree_per_node[nid]; > } > > -static struct mem_cgroup_tree_per_node * > -soft_limit_tree_from_page(struct page *page) > -{ > - int nid = page_to_nid(page); > - > - return soft_limit_tree.rb_tree_per_node[nid]; > -} > - > static void __mem_cgroup_insert_exceeded(struct mem_cgroup_per_node *mz, > struct mem_cgroup_tree_per_node *mctz, > unsigned long new_usage_in_excess) > @@ -538,13 +522,13 @@ static unsigned long soft_limit_excess(struct mem_cgroup *memcg) > return excess; > } > > -static void mem_cgroup_update_tree(struct mem_cgroup *memcg, struct page *page) > +static void mem_cgroup_update_tree(struct mem_cgroup *memcg, int nid) > { > unsigned long excess; > struct mem_cgroup_per_node *mz; > struct mem_cgroup_tree_per_node *mctz; > > - mctz = soft_limit_tree_from_page(page); > + mctz = soft_limit_tree_node(nid); > if (!mctz) > return; > /* > @@ -552,7 +536,7 @@ static void mem_cgroup_update_tree(struct mem_cgroup *memcg, struct page *page) > * because their event counter is not touched. > */ > for (; memcg; memcg = parent_mem_cgroup(memcg)) { > - mz = mem_cgroup_page_nodeinfo(memcg, page); > + mz = memcg->nodeinfo[nid]; > excess = soft_limit_excess(memcg); > /* > * We have to update the tree if mz is on RB-tree or > @@ -879,7 +863,7 @@ static void memcg_check_events(struct mem_cgroup *memcg, struct page *page) > MEM_CGROUP_TARGET_SOFTLIMIT); > mem_cgroup_threshold(memcg); > if (unlikely(do_softlimit)) > - mem_cgroup_update_tree(memcg, page); > + mem_cgroup_update_tree(memcg, page_to_nid(page)); > } > } > > -- > 2.30.2
On Wed, Jun 30, 2021 at 05:00:19AM +0100, Matthew Wilcox (Oracle) wrote: > By using the node id in mem_cgroup_update_tree(), we can delete > soft_limit_tree_from_page() and mem_cgroup_page_nodeinfo(). Saves 42 > bytes of kernel text on my config. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Acked-by: Johannes Weiner <hannes@cmpxchg.org>
On Wed, Jun 30, 2021 at 05:00:19AM +0100, Matthew Wilcox (Oracle) wrote: > By using the node id in mem_cgroup_update_tree(), we can delete > soft_limit_tree_from_page() and mem_cgroup_page_nodeinfo(). Saves 42 > bytes of kernel text on my config. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 25cad0fb7d4e..29b28a050707 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -446,28 +446,12 @@ ino_t page_cgroup_ino(struct page *page) return ino; } -static struct mem_cgroup_per_node * -mem_cgroup_page_nodeinfo(struct mem_cgroup *memcg, struct page *page) -{ - int nid = page_to_nid(page); - - return memcg->nodeinfo[nid]; -} - static struct mem_cgroup_tree_per_node * soft_limit_tree_node(int nid) { return soft_limit_tree.rb_tree_per_node[nid]; } -static struct mem_cgroup_tree_per_node * -soft_limit_tree_from_page(struct page *page) -{ - int nid = page_to_nid(page); - - return soft_limit_tree.rb_tree_per_node[nid]; -} - static void __mem_cgroup_insert_exceeded(struct mem_cgroup_per_node *mz, struct mem_cgroup_tree_per_node *mctz, unsigned long new_usage_in_excess) @@ -538,13 +522,13 @@ static unsigned long soft_limit_excess(struct mem_cgroup *memcg) return excess; } -static void mem_cgroup_update_tree(struct mem_cgroup *memcg, struct page *page) +static void mem_cgroup_update_tree(struct mem_cgroup *memcg, int nid) { unsigned long excess; struct mem_cgroup_per_node *mz; struct mem_cgroup_tree_per_node *mctz; - mctz = soft_limit_tree_from_page(page); + mctz = soft_limit_tree_node(nid); if (!mctz) return; /* @@ -552,7 +536,7 @@ static void mem_cgroup_update_tree(struct mem_cgroup *memcg, struct page *page) * because their event counter is not touched. */ for (; memcg; memcg = parent_mem_cgroup(memcg)) { - mz = mem_cgroup_page_nodeinfo(memcg, page); + mz = memcg->nodeinfo[nid]; excess = soft_limit_excess(memcg); /* * We have to update the tree if mz is on RB-tree or @@ -879,7 +863,7 @@ static void memcg_check_events(struct mem_cgroup *memcg, struct page *page) MEM_CGROUP_TARGET_SOFTLIMIT); mem_cgroup_threshold(memcg); if (unlikely(do_softlimit)) - mem_cgroup_update_tree(memcg, page); + mem_cgroup_update_tree(memcg, page_to_nid(page)); } }
By using the node id in mem_cgroup_update_tree(), we can delete soft_limit_tree_from_page() and mem_cgroup_page_nodeinfo(). Saves 42 bytes of kernel text on my config. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- mm/memcontrol.c | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-)