Message ID | 1584423717-3440-2-git-send-email-iamjoonsoo.kim@lge.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | workingset protection/detection on the anonymous LRU list | expand |
On Tue, Mar 17, 2020 at 02:41:49PM +0900, js1304@gmail.com wrote: > From: Joonsoo Kim <iamjoonsoo.kim@lge.com> > > Current implementation of LRU management for anonymous page has some > problems. Most important one is that it doesn't protect the workingset, > that is, pages on the active LRU list. Although, this problem will be > fixed in the following patchset, the preparation is required and > this patch does it. > > What following patchset does is to restore workingset protection. In this > case, newly created or swap-in pages are started their lifetime on the > inactive list. If inactive list is too small, there is not enough chance > to be referenced and the page cannot become the workingset. > > In order to provide enough chance to the newly anonymous pages, this patch > makes active/inactive LRU ratio as 1:1. > > Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Acked-by: Johannes Weiner <hannes@cmpxchg.org>
diff --git a/mm/vmscan.c b/mm/vmscan.c index 572fb17..e772f3f 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2217,7 +2217,7 @@ static bool inactive_is_low(struct lruvec *lruvec, enum lru_list inactive_lru) active = lruvec_page_state(lruvec, NR_LRU_BASE + active_lru); gb = (inactive + active) >> (30 - PAGE_SHIFT); - if (gb) + if (gb && is_file_lru(inactive_lru)) inactive_ratio = int_sqrt(10 * gb); else inactive_ratio = 1;