Skip to main content

Techdocs Library > Flashes >

Limiting Storage use above the bar in z/Architecture

Document Author:

Riaz Ahmad

Document ID:


Doc. Organization:

Washington Systems Center

Document Revised:


Product(s) covered:

z/OS; OS/390

Abstract: As of z/OS Release 1.2, an address space begins at address 0 and ends at 16 exabytes. The z/Architecture that creates this address space provides 64-bit addresses. The address space structure below the 2 gigabyte address has not changed; all programs in AMODE 24 and AMODE 31 continue to run without change.

As in the 31-bit address space, a virtual "line" marks the 16-megabyte address. The 64-bit address space also includes the virtual line at the 16-megabyte address; additionally, it includes a second virtual line called the bar that marks the 2-gigabyte address. The bar separates storage below the 2-gigabyte address, called below the bar, from storage above the 2-gigabyte address, called above the bar. The area above the bar is intended for data; no programs run above the bar. There is no area above the bar that is common to all address spaces, and no system control blocks exist above the bar. You can set a limit on how much virtual storage above the bar each address space can use. This limit is called the MEMLIMIT. If you do not set MEMLIMIT, the system default is 0, meaning no address space can use virtual storage above the bar (Use of real storage above the 2GB is not controlled by this parameter). If you want to use virtual storage above the bar, you need to set the MEMLIMIT explicitly. You can set an installation default MEMLIMIT through SMFPRMxx in PARMLIB. You can also set MEMLIMIT for a specific address space in the JCL that creates the address space or by using SMF exit IEFUSI.

To use virtual storage above the bar, a program must request storage above the bar, be in AMODE 64 and use the new z/Architecture assembler instructions.

An installation can set the default MEMLIMIT through SMFPRMxx in PARMLIB.


This specifies the default MEMLIMIT to be used by jobs not establishing a MEMLIMIT in their JCL. For reference see z/OS MVS JCL User's Guide. NOLIMIT means that there is no limit on the use of virtual storage above 2 gigabytes.
MEMLIMIT values are defined with nnnnnM for megabytes, nnnnnG for gigabytes, nnnnnT for terabytes, or nnnnnP for petabytes. For example, to request 1200 gigabytes, you can specify MEMLIMIT(1200G). D SMF,O operator command displays the current MEMLIMIT, as shown in example below:

 IEE967I 15.39.05 SMF PARAMETERS 795                                  
         MEMBER = SMFPRMZ3                                            
         MULCFUNC -- DEFAULT                                          
         MEMLIMIT(00000M) -- DEFAULT                                  
         DDCONS(YES) -- DEFAULT                                        
         LASTDS(MSG) -- DEFAULT                                        
         NOBUFFS(MSG) -- DEFAULT                                      
         DUMPABND(RETRY) -- DEFAULT                                    
         SUBSYS(OMVS,NODETAIL) -- SYS                                  
         SUBSYS(OMVS,TYPE(0,30,70:79,88:90,103,245)) -- PARMLIB        
         SUBSYS(OMVS,INTERVAL(SMF,SYNC)) -- PARMLIB                    
         SUBSYS(OMVS,NOEXITS) -- PARMLIB                              
         SUBSYS(STC,NODETAIL) -- SYS                                  
          :::::::::: :::::::: ::::::::::
::: ::::: ::::::: :::::::
Note: If MEMLIMIT is not specified in SMFPRMxx, the default value is 0M.

MEMLIMIT on JOB and EXEC Statement
MEMLIMIT is a new keyword on the JOB and EXEC statements. MEMLIMIT specifies the limit on the total number of usable virtual storage above the bar for a single address space.
While there is no practical limit to the virtual storage above the bar, there are practical limits to the real storage frames and auxiliary storage slots backing the virtual storage area. To control the amount of real and auxiliary storage an address space can use for memory objects at one time, your installation should establish an installation default MEMLIMIT to set the total amount of usable virtual pages above the bar for a single address space. You set this default on the MEMLIMIT parameter in the SMFPRMxx parmlib member, or through the SET SMF or SETSMF commands. This default takes effect if a job does not specify MEMLIMIT on the JOB or an EXEC statement or REGION=0M in the JCL; the MEMLIMIT specified in an IEFUSI exit routine overrides all other MEMLIMIT settings.

The system enforces the MEMLIMIT when you issue the IARV64 GETSTOR and CHANGEGUARD services. When your unconditional request for new storage (either for a new memory object or for more usable storage in an existing memory object) causes the MEMLIMIT to be exceeded, the system abends the program. IBM recommends programs use the COND parameter to make a conditional request and check the return code to make sure the storage is

What happens to the MEMLIMIT for an already-created address space if a SET SMF or SETSMF command changes the default MEMLIMIT (either the system default or the installation default)?
  • If the command raises the current default MEMLIMIT, all address spaces whose MEMLIMIT was set through SMF run with the higher default.
  • If the command lowers the current default MEMLIMIT, all address spaces whose MEMLIMIT was set through SMF keep their original system default.
A SET SMF or SETSMF command cannot change the MEMLIMIT value set through JCL or by an IEFUSI installation exit.

MEMLIMIT Enforcement Through IEFUSI

The SMF IEFUSI exit can change the MEMLIMIT value by updating the value in the third double word. But the publication failed to mention the value used is in the unit of MB (for example, 00000000 00008400 is 33 GB).

The z/OS 1.2 MVS Installation Exits manual does not describe the meaning of the flags in the first double word. The z/OS 1.2 book contains a NOLIMIT value of FFFFFFFF FFFFF000, which is incorrect. Both of these errors have been corrected in the z/OS 1.3 publication. The z/OS 1.2 and z/OS 1.3 books do not mention the unit of MB in the third double word

When IEFUSI Exit receives control, Register 1 points to a list of addresses. Word 9 contains the address of an area, as described in the z/OS 1.3 MVS Installation Exits:

Word 9
The address of an area consisting of three 64-bit fields:

| A 64-bit flagword. The first 8 bits indicate whether the
| source of the MEMLIMIT is from JCL or the SMF-supplied
| system default. The remaining 56 bits are not used. Possible
| values for the first 8 bits, and their meanings are as
| follows:

| 01 -- indicates MEMLIMIT is from SMF

| 02 -- indicates MEMLIMIT is from JCL

| 03 -- indicates MEMLIMIT was set to NOLIMIT because JCL
| specified REGION=0

| FF -- indicates MEMLIMIT is from SMF (indicative of
| internal processing errors)

| Note: Other values are possible when initializing a child
| address space in the UNIX System Services
| environment. See UNIX System Services publications
| for more information.

| The 64-bit MEMLIMIT originally requested by the source that
| is specified in the flagword.

| The 64-bit MEMLIMIT requested by the IEFUSI exit. The
| initial value is X'FFFFFFFFFFFFFFFF' to indicate that no
| value was set by the exit. If not changed, SMF uses the
| MEMLIMIT that was originally requested.

Note: A MEMLIMIT of NOLIMIT is equivalent to X'00000FFFFFFFF000'.




Installation and Migration


IBM System z Family

S/W Pillar(s):

IBM System z Software


OS/390; z/OS


64-bit, z/Architecture, limit, Storage, IEFUSI, zosmigr

The Techdocs Library
Is this your first visit to Techdocs (the Technical Sales Library)?

Learn more

Techdocs QuickSearch