Why does RHEL6 allocate a number of size-2097152 slabs on boot?

Latest response

With RHEL6 came a long-awaited feature called cgroups, which are used to partition system resources amongst different users, applications etc.

 

Find out more about cgroups in Red Hat's Resource Management Guide here:

http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/index.html

 

In stock RHEL6, there is an amount of memory allocated to  2M slab objects (SUnreclaim in /proc/meminfo; size-2097152 in  /proc/slabinfo).  For every 1GB of system RAM, 8x2MB slabs are required to manage memory cgroups.

 

A page_cgroup page is associated with every page descriptor; meaning that for each 1GB of physical RAM, (8) 2MB slabs are required to manage memory cgroups.

 

If you're not using cgroups and you'd like to make use of this RAM, add the below to the kernel command line (followed by a reboot), which disables memory cgroups system-wide:

        cgroup_disable=memory

snippet of code from 'include/linux/page_cgroup.h'
--------------------------------------------------

/*
* Page Cgroup can be considered as an extended mem_map.
* A page_cgroup page is associated with every page descriptor. The
* page_cgroup helps us identify information about the cgroup
* All page cgroups are allocated at boot or memory hotplug event,
* then the page cgroup for pfn always exists.

As a note, a feature request has been submitted to reduce the memory overhead required by memory cgroups.

Responses