[RFC] [PATCH 0/4] memcg: Kernel memory accounting.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch series introduces kernel memory accounting to memcg.
It currently only accounts for slab.

With this, kernel memory gets counted in a memcg's usage_in_bytes.

Slab gets accounted per-page, by using per-cgroup kmem_caches that
get created the first time an allocation of that type is done by
that cgroup.
This means that we only have to do charges/uncharges in the slow
path of the slab allocator, which should have low performance
impacts.

A per-cgroup kmem_cache will appear in slabinfo named like its
original cache, with the cgroup's name in parenthesis.
On cgroup deletion, the accounting gets moved to the root cgroup
and any existing cgroup kmem_cache gets "dead" appended to its
name, to indicate that its accounting was migrated.

TODO:
	- Per-memcg slab shrinking (we have patches for that already).
	- Make it support the other slab allocators.
	- Come up with a scheme that does not require holding
	  rcu_read_lock in the whole slab allocation path.
	- Account for other types of kernel memory than slab.
	- Migrate to the parent cgroup instead of root on cgroup
	  deletion.

---
 Documentation/cgroups/memory.txt |   33 +++
 include/linux/gfp.h              |    2 
 include/linux/memcontrol.h       |   35 +++
 include/linux/slab.h             |    1 
 include/linux/slab_def.h         |   47 ++++
 init/Kconfig                     |   10 -
 mm/memcontrol.c                  |  373 ++++++++++++++++++++++++++++++++++++++-
 mm/slab.c                        |  284 +++++++++++++++++++++++++++--
 8 files changed, 755 insertions(+), 30 deletions(-)

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]