UnitsMAXMB: REAL*8 (8-byte) words
50 on machines where MDHW is the amount of physical memory
90 on machines where MDHW is the amount of memory for each user
MAXMD: 0.01 * MEMPCT * MDHW
These parameters control the amount of memory used by FMS. You may specify the amount of memory in any of the following ways:
- MAXMD specifies the memory size in REAL*8 words (8-bytes)
- MAXMB specifies the memory size in Megabytes,
- MEMPCT specifies the memory size as a percentage of the installed hardware MDHW.
FMS includes a memory management system for scratch storage of work arrays. When you call FMSINI, a pool of memory is allocated. Individual FMS tasks check memory out of this pool as needed. When the memory is no longer required, it is returned back to the pool.
All FMS routines which use scratch memory check the memory pool prior to execution to determine the amount of memory available. They then adjust their algorithm and storage requirements to operate within the available space.
Your application may also use memory from the FMS memory pool by calling routines FMSIMG, FMSRMG or FMSCMG. When you no longer need the memory you may return it to the pool by calling FMSIMR, FMSRMR and FMSCMR. This allows the non-FMS part of your application to share the same memory used by FMS.
FMS is designed to operate over a wide range of MAXMD values. In general, increasing MAXMD will reduce the amount of data FMS rereads from disk. If you notice that FMS is spending excessive time waiting for I/O to complete, you should try increasing the value of MAXMD. However MAXMD should not be increased beyond MDHW (the amount of physical memory in the machine), or excessive page faults will result.
On machines without virtual memory there is a hard upper limit to the value of MAXMD. Trying to set MAXMD above this limit will result in an FMS system error.
On virtual memory machines it is possible to set MAXMD to a value that is larger than the amount of physical memory. However this will result in page faults and degrade performance.
If you run multiple FMS jobs simultaneously, you may want to decrease the default value of MAXMD to reduce contention for the memory. What counts is the sum of the values of MAXMD in all concurrent FMS jobs. If this value is less than the amount of physical memory, the memory is under-subscribed. If this value is greater than the amount of physical memory, the system is oversubscribed.
Some oversubscription of memory will usually increase throughput, especially if the non-FMS part of your application has not been converted to run in parallel. A few tests will usually show the best combination of MAXMD for the concurrent FMS jobs. Note that each individual FMS job can have a different value of MAXMD.