X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=mm%2Fworkingset.c;fp=mm%2Fworkingset.c;h=8a75f8d2916af99a1efb6101666038dcd4309c04;hb=fee7cceca60339ecef683609e7809a13364c84d6;hp=6130ba0b26415353e09c977a0f3d13cf94b76178;hpb=7b58ec44889be3744b8786371b3e3aa84f9df0a9;p=uclinux-h8%2Flinux.git diff --git a/mm/workingset.c b/mm/workingset.c index 6130ba0b2641..8a75f8d2916a 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -349,7 +349,13 @@ static unsigned long count_shadow_nodes(struct shrinker *shrinker, shadow_nodes = list_lru_shrink_count(&workingset_shadow_nodes, sc); local_irq_enable(); - pages = node_present_pages(sc->nid); + 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 * entries that represent a refault distance bigger than that @@ -458,7 +464,7 @@ static struct shrinker workingset_shadow_shrinker = { .count_objects = count_shadow_nodes, .scan_objects = scan_shadow_nodes, .seeks = DEFAULT_SEEKS, - .flags = SHRINKER_NUMA_AWARE, + .flags = SHRINKER_NUMA_AWARE | SHRINKER_MEMCG_AWARE, }; /*