Why place the compiler phases in shared storage?
This section defines shared storage, and explains which compiler phases can be placed in shared storage and why you might want to place them there.
Shared storage is an area of storage that is the same for each virtual address space. Information stored there does not have to be loaded in the user region because it is the same space for all users. By sharing the information, more space is made available for the compiler work area.
All compiler modules, except the run dump modules (IGYCRDPR and IGYCRDSC) and the reserved word utility (IGY8RWTU), are eligible for placement in the shared storage of z/OS® machines. All compiler phases except IGYCRCTL and IGYCSIMD have RMODE ANY and AMODE 31. Since IGYCRCTL and IGYCSIMD have RMODE 24, they can be placed in the LPA or MLPA, but not in the ELPA.
The IGYCDOPT program indicates where each compiler phase (except for phases IGYCBE, IGYECWI, IGYMSGK and IGYMSGE) is loaded, either inside (IN) or outside (OUT) the user region. By placing compiler phases in the MLPA, the compiler has more storage available for the user's program.
If you indicate that a phase will not reside in the user region, you must ensure that you actually place the phase in shared storage. This information is used by the compiler to determine how much storage to leave for the system to load compiler phases in the user region.
For a description of how to place a phase in shared storage, see the Initialization and Tuning references listed in Related publications.
- IGYCRCTL
- Because it is resident in the user region throughout compilation.
- IGYCSIMD
- Because it is resident in the user region throughout compilation.
- IGYCBE
- Because it is the largest compiler phase.
- IGYECWI
- Because it is the second largest compiler phase.
- IGYCPGEN
- Because it is the third largest compiler phase.
- IGYCSCAN
- Because it is the fourth largest compiler phase.
You can select any or all compiler phases to be placed in shared storage based on frequency of concurrent use and phase size. If your facility seldom uses the compiler, there might be no advantage to installing any phases in shared storage. However, if there are frequent compilations and sufficient MLPA storage is available, making the entire compiler resident might be advantageous. If sufficient shared storage is not available, priority must be given to IGYCRCTL and IGYCSIMD, the two phases that are always resident in the user region during compilation; and also to IGYCBE, the largest compiler phase.
Another advantage of placing compiler phases in shared storage is that, at compile time, the initialization logic allocates in the user region a storage block of sufficient size to contain the largest phase not resident in shared storage. Minimizing the space allocation for any given user region size means more space for the compilation process (which allows larger programs to be compiled within a given user region) and possibly a more efficient compilation. The IGYCBE and IGYECWI compiler phases are approximately 10 MB larger than the next largest compiler phase. Shared storage can make a significant difference if you are compiling using the minimum region size.