mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
memcg: destroy memcg caches
Implement destruction of memcg caches. Right now, only caches where our reference counter is the last remaining are deleted. If there are any other reference counters around, we just leave the caches lying around until they go away. When that happens, a destruction function is called from the cache code. Caches are only destroyed in process context, so we queue them up for later processing in the general case. Signed-off-by: Glauber Costa <[email protected]> Cc: Christoph Lameter <[email protected]> Cc: David Rientjes <[email protected]> Cc: Frederic Weisbecker <[email protected]> Cc: Greg Thelen <[email protected]> Cc: Johannes Weiner <[email protected]> Cc: JoonSoo Kim <[email protected]> Cc: KAMEZAWA Hiroyuki <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Pekka Enberg <[email protected]> Cc: Rik van Riel <[email protected]> Cc: Suleiman Souhlal <[email protected]> Cc: Tejun Heo <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
d79923fad9
commit
1f458cbf12
6 changed files with 106 additions and 2 deletions
23
mm/slab.h
23
mm/slab.h
|
|
@ -117,6 +117,21 @@ static inline bool cache_match_memcg(struct kmem_cache *cachep,
|
|||
(cachep->memcg_params->memcg == memcg);
|
||||
}
|
||||
|
||||
static inline void memcg_bind_pages(struct kmem_cache *s, int order)
|
||||
{
|
||||
if (!is_root_cache(s))
|
||||
atomic_add(1 << order, &s->memcg_params->nr_pages);
|
||||
}
|
||||
|
||||
static inline void memcg_release_pages(struct kmem_cache *s, int order)
|
||||
{
|
||||
if (is_root_cache(s))
|
||||
return;
|
||||
|
||||
if (atomic_sub_and_test((1 << order), &s->memcg_params->nr_pages))
|
||||
mem_cgroup_destroy_cache(s);
|
||||
}
|
||||
|
||||
static inline bool slab_equal_or_root(struct kmem_cache *s,
|
||||
struct kmem_cache *p)
|
||||
{
|
||||
|
|
@ -135,6 +150,14 @@ static inline bool cache_match_memcg(struct kmem_cache *cachep,
|
|||
return true;
|
||||
}
|
||||
|
||||
static inline void memcg_bind_pages(struct kmem_cache *s, int order)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void memcg_release_pages(struct kmem_cache *s, int order)
|
||||
{
|
||||
}
|
||||
|
||||
static inline bool slab_equal_or_root(struct kmem_cache *s,
|
||||
struct kmem_cache *p)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue