diff options
author | Glauber Costa <glommer@parallels.com> | 2012-12-18 17:23:01 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-18 18:02:14 -0500 |
commit | 749c54151a6e5b229e4ae067dbc651e54b161fbc (patch) | |
tree | 8d2d858e76e44d1bbf64439c189a57c18c8e60ae /include | |
parent | 22933152934f30de6f05b600c03f8a08f853a8d2 (diff) |
memcg: aggregate memcg cache values in slabinfo
When we create caches in memcgs, we need to display their usage
information somewhere. We'll adopt a scheme similar to /proc/meminfo,
with aggregate totals shown in the global file, and per-group information
stored in the group itself.
For the time being, only reads are allowed in the per-group cache.
Signed-off-by: Glauber Costa <glommer@parallels.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Frederic Weisbecker <fweisbec@redhat.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: JoonSoo Kim <js1304@gmail.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Rik van Riel <riel@redhat.com>
Cc: Suleiman Souhlal <suleiman@google.com>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/memcontrol.h | 8 | ||||
-rw-r--r-- | include/linux/slab.h | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index e119f3ef793c..8dc7c746b44f 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
@@ -420,6 +420,11 @@ static inline void sock_release_memcg(struct sock *sk) | |||
420 | 420 | ||
421 | #ifdef CONFIG_MEMCG_KMEM | 421 | #ifdef CONFIG_MEMCG_KMEM |
422 | extern struct static_key memcg_kmem_enabled_key; | 422 | extern struct static_key memcg_kmem_enabled_key; |
423 | |||
424 | extern int memcg_limited_groups_array_size; | ||
425 | #define for_each_memcg_cache_index(_idx) \ | ||
426 | for ((_idx) = 0; i < memcg_limited_groups_array_size; (_idx)++) | ||
427 | |||
423 | static inline bool memcg_kmem_enabled(void) | 428 | static inline bool memcg_kmem_enabled(void) |
424 | { | 429 | { |
425 | return static_key_false(&memcg_kmem_enabled_key); | 430 | return static_key_false(&memcg_kmem_enabled_key); |
@@ -557,6 +562,9 @@ memcg_kmem_get_cache(struct kmem_cache *cachep, gfp_t gfp) | |||
557 | return __memcg_kmem_get_cache(cachep, gfp); | 562 | return __memcg_kmem_get_cache(cachep, gfp); |
558 | } | 563 | } |
559 | #else | 564 | #else |
565 | #define for_each_memcg_cache_index(_idx) \ | ||
566 | for (; NULL; ) | ||
567 | |||
560 | static inline bool memcg_kmem_enabled(void) | 568 | static inline bool memcg_kmem_enabled(void) |
561 | { | 569 | { |
562 | return false; | 570 | return false; |
diff --git a/include/linux/slab.h b/include/linux/slab.h index 869efb8d2377..b9278663f22a 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h | |||
@@ -220,6 +220,10 @@ struct memcg_cache_params { | |||
220 | 220 | ||
221 | int memcg_update_all_caches(int num_memcgs); | 221 | int memcg_update_all_caches(int num_memcgs); |
222 | 222 | ||
223 | struct seq_file; | ||
224 | int cache_show(struct kmem_cache *s, struct seq_file *m); | ||
225 | void print_slabinfo_header(struct seq_file *m); | ||
226 | |||
223 | /* | 227 | /* |
224 | * Common kmalloc functions provided by all allocators | 228 | * Common kmalloc functions provided by all allocators |
225 | */ | 229 | */ |