This controller is enabled by the CONFIG_CGROUP_MEMRLIMIT_CTLR option. Prior
to reading this documentation please read Documentation/cgroups.txt and
Documentation/controllers/memory.txt. Several of the principles of this
controller are similar to the memory resource controller.

This controller framework is designed to be extensible to control any
memory resource limit with little effort.

This new controller, controls the address space expansion of the tasks
belonging to a cgroup. Address space control is provided along the same lines as
RLIMIT_AS control, which is available via getrlimit(2)/setrlimit(2).
The interface for controlling address space is provided through
"rlimit.limit_in_bytes". The file is similar to "limit_in_bytes" w.r.t. the user
interface. Please see section 3 of the memory resource controller documentation
for more details on how to use the user interface to get and set values.

The "memrlimit.usage_in_bytes" file provides information about the total address
space usage of the tasks in the cgroup, in bytes.

Advantages of providing this feature

1. Control over virtual address space allows for a cgroup to fail gracefully
   i.e., via a malloc or mmap failure as compared to OOM kill when no
   pages can be reclaimed.
2. It provides better control over how many pages can be swapped out when
   the cgroup goes over its limit. A badly setup cgroup can cause excessive
   swapping. Providing control over the address space allocations ensures
   that the system administrator has control over the total swapping that
   can take place.
