VM Resource Manager Cooperative Memory Management (VMRM-CMM)

VMRM-CMM between a z/VM® system and Linux® guests assists in managing memory constraint in the system.

Based on several variables obtained from the System and Storage domain CP monitor data, the VMRM detects when there is constraint and notifies specific Linux virtual guests when this occurs. The guests can then take the appropriate action to adjust their memory utilization in order to relieve the constraint on the system.

A user-defined VMRM configuration file is used to identify which guests should be notified. These guests must be prepared to handle the data being sent in the notification and take appropriate action, such as issuing a CP Diagnose instruction to release pages of storage.

In addition to the workload management functions provided by VMRM for the CPU and DASD I/O, the following enhancements have been made to the VMRM for Linux guests:
  1. A new NOTIFY statement with a MEMORY keyword is supported in the VMRM configuration file. Following the keyword is a user ID or a list of user IDs to be notified when virtual memory becomes constrained. (For the format of this statement, see z/VM 5.3 CP Commands and Utilities, SC24-6081 and z/VM 5.3 Performance, SC24-6109.)
  2. System and Storage domains are monitored for data to be used for calculating memory constraint as well as how much memory to request that the guest machine release.
  3. The VMRM issues a CP SMSG to notify the specified guests when memory is constrained as well as the amount required to release in order to relieve the constraint. (For the format of the CP SMSG buffer, see z/VM 5.3 CP Commands and Utilities, SC24-6081 and z/VM 5.3 Performance, SC24-6109.)
  4. A message is logged in the VMRM log file, which indicates which users were sent an SMSG and the text of the SMSG buffer. Also, if MSGUSER is specified on the VMRM ADMIN statement, the same message written to the log is written to the MSGUSER user ID's console as well.

Once a system memory constraint has been detected, VMRM calculates how much memory each Linux guest should release to relieve the constraint. Using the SHRINK keyword on the SMSG command, a message indicating the amount of storage to release is sent to each logged on Linux guest in the notify list.

When system memory is no longer constrained, another SHRINK message with a smaller absolute value is issued. A smaller SHRINK request than the previous one effectively instructs the guest to reclaim some of the storage previously released.

To setup z/VM to use VMRM-CMM you need to create a VMRM configuration file (ours was VMRM CONFIG A1) on the VMRMSVM user ID that contains one of the following statements:
NOTIFY MEMORY LNX00080 LNX00081 LNX00082 LNX00083 LNX00084
or
NOTIFY MEMORY LNX0008*
We also added the following statement to get VMRMSVM messages:
ADMIN MSGUSER MAINT
This statement causes VMRMSVM messages to be sent to the MAINT user ID.

The "*" acts as a wild card. After creating the configuration file on the VMRMSVM A-disk we logged off VMRMSVM and issued an xautolog VMRMSVM from MAINT to start the VMRM server.

To stop the VMRMSVM server, log on to VMRMSVM and issue the command HMONITOR.

On the Linux servers we loaded the VMRM-CMM kernel extension using the following modprobe command:
modprobe cmm