Commit a3d8e0549d913e30968fa02e505dfe02c0a23e0d
Committed by
Linus Torvalds
1 parent
14797e2363
Exists in
master
and in
4 other branches
memcg: add mem_cgroup_zone_nr_pages()
Introduce mem_cgroup_zone_nr_pages(). It is called by zone_nr_pages() helper function. This patch doesn't have any behavior change. Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Acked-by: Rik van Riel <riel@redhat.com> Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Acked-by: Balbir Singh <balbir@in.ibm.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: Hugh Dickins <hugh@veritas.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 3 changed files with 25 additions and 1 deletions Side-by-side Diff
include/linux/memcontrol.h
... | ... | @@ -102,6 +102,9 @@ |
102 | 102 | int priority, enum lru_list lru); |
103 | 103 | int mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg, |
104 | 104 | struct zone *zone); |
105 | +unsigned long mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, | |
106 | + struct zone *zone, | |
107 | + enum lru_list lru); | |
105 | 108 | |
106 | 109 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP |
107 | 110 | extern int do_swap_account; |
... | ... | @@ -259,6 +262,14 @@ |
259 | 262 | { |
260 | 263 | return 1; |
261 | 264 | } |
265 | + | |
266 | +static inline unsigned long | |
267 | +mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, struct zone *zone, | |
268 | + enum lru_list lru) | |
269 | +{ | |
270 | + return 0; | |
271 | +} | |
272 | + | |
262 | 273 | |
263 | 274 | #endif /* CONFIG_CGROUP_MEM_CONT */ |
264 | 275 |
mm/memcontrol.c
... | ... | @@ -186,7 +186,6 @@ |
186 | 186 | 0, /* FORCE */ |
187 | 187 | }; |
188 | 188 | |
189 | - | |
190 | 189 | /* for encoding cft->private value on file */ |
191 | 190 | #define _MEM (0) |
192 | 191 | #define _MEMSWAP (1) |
... | ... | @@ -446,6 +445,17 @@ |
446 | 445 | return 1; |
447 | 446 | |
448 | 447 | return 0; |
448 | +} | |
449 | + | |
450 | +unsigned long mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, | |
451 | + struct zone *zone, | |
452 | + enum lru_list lru) | |
453 | +{ | |
454 | + int nid = zone->zone_pgdat->node_id; | |
455 | + int zid = zone_idx(zone); | |
456 | + struct mem_cgroup_per_zone *mz = mem_cgroup_zoneinfo(memcg, nid, zid); | |
457 | + | |
458 | + return MEM_CGROUP_ZSTAT(mz, lru); | |
449 | 459 | } |
450 | 460 | |
451 | 461 | unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan, |
mm/vmscan.c
... | ... | @@ -139,6 +139,9 @@ |
139 | 139 | static unsigned long zone_nr_pages(struct zone *zone, struct scan_control *sc, |
140 | 140 | enum lru_list lru) |
141 | 141 | { |
142 | + if (!scan_global_lru(sc)) | |
143 | + return mem_cgroup_zone_nr_pages(sc->mem_cgroup, zone, lru); | |
144 | + | |
142 | 145 | return zone_page_state(zone, NR_LRU_BASE + lru); |
143 | 146 | } |
144 | 147 |