Cooperative memory management background
Cooperative memory management (CMM, or "cmm1") dynamically adjusts the memory available to Linux®.
In a virtualized environment it is common practice to give the virtual machines more memory than is actually available to the hypervisor. Linux tends to use all of its available memory. As a result, the hypervisor (z/VM®) might start swapping.
To avoid excessive z/VM swapping, the memory available to Linux can be reduced. CMM allocates pages to page pools that make the pages unusable to Linux. There are two such page pools as shown in Figure 1.
- A static page pool
- The page pool is controlled by a resource manager that changes the pool size at intervals according to guest activity as well as overall memory usage on z/VM (see Figure 2).
- A timed page pool
- Pages are released from this pool at a speed that is set in the release rate (see Figure 3). According to guest activity and overall memory usage on z/VM, a resource manager adds pages at intervals. If no pages are added and the release rate is not zero, the pool empties.
The external resource manager that controls the pools can be the z/VM resource monitor (VMRM) or a third-party systems management tool.
VMRM controls the pools over a message interface. Setting up the external resource manager is beyond the scope of this information. For more details, see the chapter about VMRM in z/VM: Performance, SC24-6301.
Third-party tools can provide a Linux deamon that receives commands for the memory allocation through TCP/IP. The deamon, in turn, uses the procfs-based interface. You can use the procfs interface to read the pool sizes. These values are useful diagnostic data.