Message ID | 20190228163020.24100-4-hannes@cmpxchg.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mm: memcontrol: clean up the LRU counts tracking | expand |
On Thu, 28 Feb 2019 11:30:17 -0500 Johannes Weiner <hannes@cmpxchg.org> wrote: > Instead of adding up the node counters, use memcg_page_state() to get > the memcg state directly. This is a bit cheaper and more stream-lined. > > ... > > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -746,10 +746,13 @@ static unsigned long mem_cgroup_nr_lru_pages(struct mem_cgroup *memcg, > unsigned int lru_mask) > { > unsigned long nr = 0; > - int nid; > + enum lru_list lru; > > - for_each_node_state(nid, N_MEMORY) > - nr += mem_cgroup_node_nr_lru_pages(memcg, nid, lru_mask); > + for_each_lru(lru) { > + if (!(BIT(lru) & lru_mask)) > + continue; > + nr += memcg_page_state(memcg, NR_LRU_BASE + lru); > + } Might be able to use for_each_set_bit(&lru_mnask) here, but it's much of a muchness.
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index d85a41cfee60..e702b67cde41 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -746,10 +746,13 @@ static unsigned long mem_cgroup_nr_lru_pages(struct mem_cgroup *memcg, unsigned int lru_mask) { unsigned long nr = 0; - int nid; + enum lru_list lru; - for_each_node_state(nid, N_MEMORY) - nr += mem_cgroup_node_nr_lru_pages(memcg, nid, lru_mask); + for_each_lru(lru) { + if (!(BIT(lru) & lru_mask)) + continue; + nr += memcg_page_state(memcg, NR_LRU_BASE + lru); + } return nr; }
Instead of adding up the node counters, use memcg_page_state() to get the memcg state directly. This is a bit cheaper and more stream-lined. Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> --- mm/memcontrol.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)