CMS Saved Segment Management

Last update 01 August 2013

We recognize that managing saved segments for program products and the segments that come with CMS can present some interesting challenges. This page is meant to provide some useful information to help with this challenge. Some general guidelines are provided along with descriptions of the saved segments shipped with CMS. To understand potential impact to paging performance see Understanding Poor Performance Due to Paging Increases. Other information on segments is available in VM/ESA Data in Memory Techniques. See also SHARE presentation VM/ESA Data in Memory Techniques.

Segment Placement Guidelines

  • For segments that must be below the 16 meg line it is usually better to work down from the lowest address CMS uses, thus avoiding infringement into user virtual storage. Note that segments can be placed inside a virtual machine's defined storage size.
  • Use the CP INDICATE USER userid EXP command to determine the defined storage limit and the address limit and other fun stuff.
  • To avoid fragmenting storage and to increase the size of contiguous storage, try to work up from highest address CMS uses. You might want to leave a small gap of a few megabytes to allow for future growth in CMS segments to minimize the changes for future releases.
  • Remember that CMS will use a section of virtual storage for its management of storage (free work area and page allocation table). This is roughly 1.5 pages per megabyte of the virtual machine and is located at the highest address not used by the CMS nucleus. See z/VM:Saved Segments Planning and Administration SC24-6229 Chapter 1 "Planning Considerations" for more details.
  • See z/VM:Performance SC24-6208 Chapter 2 "Guidelines for Virtual Machine Storage" for more information on the impact of segment placement and virtual machine size.

CMS Saved Segment Descriptions

Below is a list of segments and a brief description of them.

INSTSEG (Previously CMSINST)
The "Installation Saved Segment" by default contains a list of the most commonly used system execs and XEDIT macros. By default, it's loaded in every virtual machine.
HELPSEG
Segment contains the FSTs for files on the help disk. It is used by many people. Since it contains FSTs, it must be located below the 16 meg line. (As of z/VM 6.3.0 the HELPSEG segment is no longer defined.)
CMSPIPES (previously PIPES and RXSOCKET)
Contains the PIPELINES modules and the REXX Sockets code. It can be loaded above the 16 meg line. Pipelines is used by just about everyone.
CMSFILES
is a segment space that contains a modules (DMSDAC and DMSSAC) used by CRR, SFS, or BFS server virtual machines, so it is fair game to overlap with other program products or place above 32M line since it is only for a subset of virtual machines and these machines might already be greater than 32 meg.
CMSVMLIB
This logical segment contains the callable services library (CSL) and the REXX run time library used for the CMS parts that are shipped as compiled REXX programs. The CMSVMLIB logical segment is loaded by default in the SYSPROF EXEC, so every CMS user has this segment loaded. It can be located above the 16 meg line. It is contained in the CMSVMLIB physical segment. If you have the full REXX compiler library installed, you should use the full library.
SVM
SVM is a generic, run-time, function library used by several IBM products. DFSMS, ADSM, PVM, and one or more of the LAN products use the SVM functions. The segment consists of the DMSSVM5 and DMSSVM5C MODULEs. It can be loaded into all users virtual machines, but by default is not. We ship this with VM so that the products do not each need to include it.
SCEEx
The SCEE and SCEEX physical segments contain the z/VM Language Environment (LE) code. LE, as shipped in z/VM, consists of C/C++, COBOL, and PL/I run-time libraries and their common execution environment code. The SCEE segment consists of several logical segments which may need to be explicitly loaded (via SEGMENT LOAD) in order for the segment copy to be used. The logical segments in the SCEEX segment will be dynamically loaded by the common execution environment code if the SCEEX segment and the logical segments exist. So, any call to a C/C++, COBOL, or PLI program will automatically load SCEEX members.

Back to the Performance Tips Page