zVRM is a real-time management facility to manage Linux storage/ram resources and virtual CPU counts, both to meet current workload requirements.
Traditional Linux servers are created very large to ensure that they meet resource requirements as workloads grow. In the z/VM virtualized environment, this becomes a costly objective both in real storage requirements, and the overhead associated with Linux managing excessive number of virtual CPUs. As zVPS measures very accurately the current workload requirements, zVRM can reduce the impact on real resources by comparing current requirements to what is available and adjust settings accordingly.
Storage Management: Linux touches all pages over time, and as that happens, z/VM must back those pages with real resources. Thus an 8GB server will require 8GB of storage residing in real storage or paging storage - or sometimes pages reside in both places. zVRM evaluates current Linux free storage and using CMM (Collaborative Memory Management), will free up the backed storage to the point where the storage assigned to the server matches the storage needed by the workload. There is an additional buffer to ensure that if the workload grows, there is still resources to support that growth. The buffer size is a percent and tailorable by the installation by node, node class or system wide. Note that swap is also a buffer, and even though if on virtual disk and very fast, we prefer to minimize the use of swap.
The objective of the memory buffer plus swap is to ensure that there is plenty of time to give storage back as workload requirements increase.
Virtual CPU Management: If Linux is given 32 virtual CPUs, but rarely uses more than 1, it would greatly alleviate potential spin locks as well as management time by varying most of the virtual CPUs offline. There are two buffers associated with CPU management. The first is setting a utilization target with a default of 30%. This generous target average cpu utilization allows the workload to triple without creating internal CPU queuing. An additional buffer is providing allowing a minimum number of CPUs to be kept online.
The mechanism to provide this function uses the zPRO command interface allowing specific processors to be directly varied online and offline.
zVRM is managed using a secure zPRO function. The default settings are generous, and after getting experience, installations may want to obtain better utilization of resources by reducing buffers. This can be done dynamically through zPRO. The "Status" function provides current status of all servers. Current free storage, CMM settings and swap utilization are shown as the 3 data points that should be used to understand zVRM effectiveness.
The following is a sample 3270 based status that zPRO will display via browser.
smsg zvrm status Ready; T=0.01/0.01 14:45:57 14:45:02 VRM Release 5136 <-Target Server-> <----Storage(mb)----> Increment Target Swap <-Status> Userid NODENAME Size Free CMM Size Avail FULL% CMM CPU -------- -------- ------ ------- ----- -------- ------- ------ ------- LXDB2002 lxdb2002 997 349 0 19 139 0 OFF ON MONGO01 mongo01 3849 599 483 76 538 16 ON ON REDHAT4 redhat85 814 263 0 8 114 21 ON ON REDHAT6 redhat6 492 5 0 8 68 0 ON ON REDHAT64 redhat64 492 19 0 8 68 0 ON ON REDHAT74 redhat74 991 275 0 8 138 0 ON ON REDHAT75 redhat75 988 73 0 8 138 0 ON ON REDHAT9 redhat01 970 198 0 8 135 1 OFF ON SLES12 sles12 3892 326 0 8 194 100 ON ON SLES15 sles15 818 40 0 16 114 2 ON ON Totals 14308 0
When using zVRM, the results can be verified. Use the following command can be done to see the savings from turning on ZVRM: On the ZVRM machine, type in the following: (or from an authorized machine use ZVRM instead of *)
CP SMSG * QUERY SAVINGS Real Storage Savings by node group NodeCls: RANCHER 2.1G NodeCls: REDHAT 316M NodeCls: SUSE 190M NodeCls: TheUsrs 1.0G Total VCPUs OFFLINE: 2
This shows the amount of storage saved in each Node class and the amount of VCPUs that are offline.