mbox series

[0/6] mm: memcontrol: clean up the LRU counts tracking

Message ID 20190228163020.24100-1-hannes@cmpxchg.org (mailing list archive)
Headers show
Series mm: memcontrol: clean up the LRU counts tracking | expand

Message

Johannes Weiner Feb. 28, 2019, 4:30 p.m. UTC
[ Resend #2: Sorry about the spam, I mixed up the header fields in
  git-send-email and I don't know who did and didn't receive the
  garbled previous attempt.

  Resend #1: Rebased on top of the latest mmots. ]

The memcg LRU stats usage is currently a bit messy. Memcg has private
per-zone counters because reclaim needs zone granularity sometimes,
but we also have plenty of users that need to awkwardly sum them up to
node or memcg granularity. Meanwhile the canonical per-memcg vmstats
do not track the LRU counts (NR_INACTIVE_ANON etc.) as you'd expect.

This series enables LRU count tracking in the per-memcg vmstats array
such that lruvec_page_state() and memcg_page_state() work on the enum
node_stat_item items for the LRU counters. Then it converts all the
callers that don't specifically need per-zone numbers over to that.

 include/linux/memcontrol.h | 28 ---------------
 include/linux/mm_inline.h  |  2 +-
 include/linux/mmzone.h     |  5 ---
 mm/memcontrol.c            | 85 +++++++++++++++++++++++++-------------------
 mm/vmscan.c                |  2 +-
 mm/workingset.c            |  5 +--
 6 files changed, 54 insertions(+), 73 deletions(-)

Comments

Roman Gushchin Feb. 28, 2019, 4:42 p.m. UTC | #1
On Thu, Feb 28, 2019 at 11:30:14AM -0500, Johannes Weiner wrote:
> [ Resend #2: Sorry about the spam, I mixed up the header fields in
>   git-send-email and I don't know who did and didn't receive the
>   garbled previous attempt.
> 
>   Resend #1: Rebased on top of the latest mmots. ]
> 
> The memcg LRU stats usage is currently a bit messy. Memcg has private
> per-zone counters because reclaim needs zone granularity sometimes,
> but we also have plenty of users that need to awkwardly sum them up to
> node or memcg granularity. Meanwhile the canonical per-memcg vmstats
> do not track the LRU counts (NR_INACTIVE_ANON etc.) as you'd expect.
> 
> This series enables LRU count tracking in the per-memcg vmstats array
> such that lruvec_page_state() and memcg_page_state() work on the enum
> node_stat_item items for the LRU counters. Then it converts all the
> callers that don't specifically need per-zone numbers over to that.
> 
>  include/linux/memcontrol.h | 28 ---------------
>  include/linux/mm_inline.h  |  2 +-
>  include/linux/mmzone.h     |  5 ---
>  mm/memcontrol.c            | 85 +++++++++++++++++++++++++-------------------
>  mm/vmscan.c                |  2 +-
>  mm/workingset.c            |  5 +--
>  6 files changed, 54 insertions(+), 73 deletions(-)
> 
> 


The patchset looks very good to me!

Reviewed-by: Roman Gushchin <guro@fb.com>

Thanks!