|
@@ -349,8 +349,12 @@ static unsigned long count_shadow_nodes(struct shrinker *shrinker,
|
|
shadow_nodes = list_lru_shrink_count(&workingset_shadow_nodes, sc);
|
|
shadow_nodes = list_lru_shrink_count(&workingset_shadow_nodes, sc);
|
|
local_irq_enable();
|
|
local_irq_enable();
|
|
|
|
|
|
- pages = node_page_state(sc->nid, NR_ACTIVE_FILE) +
|
|
|
|
- node_page_state(sc->nid, NR_INACTIVE_FILE);
|
|
|
|
|
|
+ if (memcg_kmem_enabled())
|
|
|
|
+ pages = mem_cgroup_node_nr_lru_pages(sc->memcg, sc->nid,
|
|
|
|
+ LRU_ALL_FILE);
|
|
|
|
+ else
|
|
|
|
+ pages = node_page_state(sc->nid, NR_ACTIVE_FILE) +
|
|
|
|
+ node_page_state(sc->nid, NR_INACTIVE_FILE);
|
|
|
|
|
|
/*
|
|
/*
|
|
* Active cache pages are limited to 50% of memory, and shadow
|
|
* Active cache pages are limited to 50% of memory, and shadow
|
|
@@ -460,7 +464,7 @@ static struct shrinker workingset_shadow_shrinker = {
|
|
.count_objects = count_shadow_nodes,
|
|
.count_objects = count_shadow_nodes,
|
|
.scan_objects = scan_shadow_nodes,
|
|
.scan_objects = scan_shadow_nodes,
|
|
.seeks = DEFAULT_SEEKS,
|
|
.seeks = DEFAULT_SEEKS,
|
|
- .flags = SHRINKER_NUMA_AWARE,
|
|
|
|
|
|
+ .flags = SHRINKER_NUMA_AWARE | SHRINKER_MEMCG_AWARE,
|
|
};
|
|
};
|
|
|
|
|
|
/*
|
|
/*
|