mm/workingset: prepare the workingset detection infrastructure for anon LRU
To prepare the workingset detection for anon LRU, this patch splits workingset event counters for refault, activate and restore into anon and file variants, as well as the refaults counter in struct lruvec. Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: Hugh Dickins <hughd@google.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Mel Gorman <mgorman@techsingularity.net> Cc: Michal Hocko <mhocko@kernel.org> Cc: Minchan Kim <minchan@kernel.org> Link: http://lkml.kernel.org/r/1595490560-15117-4-git-send-email-iamjoonsoo.kim@lge.com Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
b518154e59
commit
170b04b7ae
15
mm/vmscan.c
15
mm/vmscan.c
@@ -2683,7 +2683,10 @@ again:
|
||||
if (!sc->force_deactivate) {
|
||||
unsigned long refaults;
|
||||
|
||||
if (inactive_is_low(target_lruvec, LRU_INACTIVE_ANON))
|
||||
refaults = lruvec_page_state(target_lruvec,
|
||||
WORKINGSET_ACTIVATE_ANON);
|
||||
if (refaults != target_lruvec->refaults[0] ||
|
||||
inactive_is_low(target_lruvec, LRU_INACTIVE_ANON))
|
||||
sc->may_deactivate |= DEACTIVATE_ANON;
|
||||
else
|
||||
sc->may_deactivate &= ~DEACTIVATE_ANON;
|
||||
@@ -2694,8 +2697,8 @@ again:
|
||||
* rid of any stale active pages quickly.
|
||||
*/
|
||||
refaults = lruvec_page_state(target_lruvec,
|
||||
WORKINGSET_ACTIVATE);
|
||||
if (refaults != target_lruvec->refaults ||
|
||||
WORKINGSET_ACTIVATE_FILE);
|
||||
if (refaults != target_lruvec->refaults[1] ||
|
||||
inactive_is_low(target_lruvec, LRU_INACTIVE_FILE))
|
||||
sc->may_deactivate |= DEACTIVATE_FILE;
|
||||
else
|
||||
@@ -2972,8 +2975,10 @@ static void snapshot_refaults(struct mem_cgroup *target_memcg, pg_data_t *pgdat)
|
||||
unsigned long refaults;
|
||||
|
||||
target_lruvec = mem_cgroup_lruvec(target_memcg, pgdat);
|
||||
refaults = lruvec_page_state(target_lruvec, WORKINGSET_ACTIVATE);
|
||||
target_lruvec->refaults = refaults;
|
||||
refaults = lruvec_page_state(target_lruvec, WORKINGSET_ACTIVATE_ANON);
|
||||
target_lruvec->refaults[0] = refaults;
|
||||
refaults = lruvec_page_state(target_lruvec, WORKINGSET_ACTIVATE_FILE);
|
||||
target_lruvec->refaults[1] = refaults;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user