mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
Revert "FROMLIST: mm: multi-gen LRU: optimize multiple memcgs"
This reverts commit 082bc8296a.
To be replaced with upstream version.
Bug: 249601646
Change-Id: I549fb8b85659b3e7b1d457c5214a7edb99df5ac5
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
This commit is contained in:
45
mm/vmscan.c
45
mm/vmscan.c
@@ -134,13 +134,6 @@ struct scan_control {
|
|||||||
/* The file pages on the current node are dangerously low */
|
/* The file pages on the current node are dangerously low */
|
||||||
unsigned int file_is_tiny:1;
|
unsigned int file_is_tiny:1;
|
||||||
|
|
||||||
#ifdef CONFIG_LRU_GEN
|
|
||||||
/* help make better choices when multiple memcgs are available */
|
|
||||||
unsigned int memcgs_need_aging:1;
|
|
||||||
unsigned int memcgs_need_swapping:1;
|
|
||||||
unsigned int memcgs_avoid_swapping:1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Allocation order */
|
/* Allocation order */
|
||||||
s8 order;
|
s8 order;
|
||||||
|
|
||||||
@@ -3965,22 +3958,6 @@ static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc)
|
|||||||
|
|
||||||
VM_BUG_ON(!current_is_kswapd());
|
VM_BUG_ON(!current_is_kswapd());
|
||||||
|
|
||||||
/*
|
|
||||||
* To reduce the chance of going into the aging path or swapping, which
|
|
||||||
* can be costly, optimistically skip them unless their corresponding
|
|
||||||
* flags were cleared in the eviction path. This improves the overall
|
|
||||||
* performance when multiple memcgs are available.
|
|
||||||
*/
|
|
||||||
if (!sc->memcgs_need_aging) {
|
|
||||||
sc->memcgs_need_aging = true;
|
|
||||||
sc->memcgs_avoid_swapping = !sc->memcgs_need_swapping;
|
|
||||||
sc->memcgs_need_swapping = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sc->memcgs_need_swapping = true;
|
|
||||||
sc->memcgs_avoid_swapping = true;
|
|
||||||
|
|
||||||
current->reclaim_state->mm_walk = &pgdat->mm_walk;
|
current->reclaim_state->mm_walk = &pgdat->mm_walk;
|
||||||
|
|
||||||
memcg = mem_cgroup_iter(NULL, NULL, NULL);
|
memcg = mem_cgroup_iter(NULL, NULL, NULL);
|
||||||
@@ -4382,8 +4359,7 @@ static int isolate_pages(struct lruvec *lruvec, struct scan_control *sc, int swa
|
|||||||
return scanned;
|
return scanned;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int evict_pages(struct lruvec *lruvec, struct scan_control *sc, int swappiness,
|
static int evict_pages(struct lruvec *lruvec, struct scan_control *sc, int swappiness)
|
||||||
bool *swapped)
|
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
int scanned;
|
int scanned;
|
||||||
@@ -4448,9 +4424,6 @@ static int evict_pages(struct lruvec *lruvec, struct scan_control *sc, int swapp
|
|||||||
|
|
||||||
sc->nr_reclaimed += reclaimed;
|
sc->nr_reclaimed += reclaimed;
|
||||||
|
|
||||||
if (type == LRU_GEN_ANON && swapped)
|
|
||||||
*swapped = true;
|
|
||||||
|
|
||||||
return scanned;
|
return scanned;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4479,10 +4452,8 @@ static long get_nr_to_scan(struct lruvec *lruvec, struct scan_control *sc, bool
|
|||||||
if (!nr_to_scan)
|
if (!nr_to_scan)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!need_aging) {
|
if (!need_aging)
|
||||||
sc->memcgs_need_aging = false;
|
|
||||||
return nr_to_scan;
|
return nr_to_scan;
|
||||||
}
|
|
||||||
|
|
||||||
/* leave the work to lru_gen_age_node() */
|
/* leave the work to lru_gen_age_node() */
|
||||||
if (current_is_kswapd())
|
if (current_is_kswapd())
|
||||||
@@ -4504,8 +4475,6 @@ static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc
|
|||||||
{
|
{
|
||||||
struct blk_plug plug;
|
struct blk_plug plug;
|
||||||
long scanned = 0;
|
long scanned = 0;
|
||||||
bool swapped = false;
|
|
||||||
unsigned long reclaimed = sc->nr_reclaimed;
|
|
||||||
struct pglist_data *pgdat = lruvec_pgdat(lruvec);
|
struct pglist_data *pgdat = lruvec_pgdat(lruvec);
|
||||||
|
|
||||||
lru_add_drain();
|
lru_add_drain();
|
||||||
@@ -4531,19 +4500,13 @@ static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc
|
|||||||
if (!nr_to_scan)
|
if (!nr_to_scan)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
delta = evict_pages(lruvec, sc, swappiness, &swapped);
|
delta = evict_pages(lruvec, sc, swappiness);
|
||||||
if (!delta)
|
if (!delta)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (sc->memcgs_avoid_swapping && swappiness < 200 && swapped)
|
|
||||||
break;
|
|
||||||
|
|
||||||
scanned += delta;
|
scanned += delta;
|
||||||
if (scanned >= nr_to_scan) {
|
if (scanned >= nr_to_scan)
|
||||||
if (!swapped && sc->nr_reclaimed - reclaimed >= MIN_LRU_BATCH)
|
|
||||||
sc->memcgs_need_swapping = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
cond_resched();
|
cond_resched();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user