Setting Resource Limits

Any resource limits attached to a job are propagated downward through all the job's descendants. Resource limits are stored in the values of the task attributes ELAPSEDLIMIT, MAXIOTIME, MAXLINES, MAXPROCTIME, PRIORITY, RESOURCE, SAVEMEMORYLIMIT, TEMPFILELIMIT, TOTALMEMORYLIMIT, and WAITLIMIT. Information about the amount of resources a particular process has used is stored in the task attributes ACCUMIOTIME, ACCUMPROCTIME, ELAPSEDTIME, and TEMPFILEMBYTES. If the accumulated usage of a resource rises above the maximum allowed, the process terminates abnormally. Most of these resource limits are propagated in two ways:

  • When a task is initiated, by default each resource limit for the task is assigned the difference between the parent's own limit for the resource and the parent's accumulated usage of the resource. For example, if the parent's MAXPROCTIME is 100 and its ACCUMPROCTIME is 75, then the task is assigned a MAXPROCTIME of 25. The parent's own MAXPROCTIME and ACCUMPROCTIME values are not affected. The parent can assign resource limits to the task through task equation, but the values are ignored unless they specify lower limits than the task would receive by default.

  • When a task terminates, the values of its accumulated usage attributes are added to the accumulated usage attributes of the task's job. If this addition causes any accumulated usage attribute of the job to be assigned a value greater than the corresponding maximum usage attribute, the job is abnormally terminated. The termination of the job in turn causes the termination of all the other members of the process family.

The resource-limiting attributes of a task cannot be set above the values of the corresponding attributes of the job. The MAXPROCTIME and MAXIOTIME task attributes can be set above the job values for an inactive task, but when the task is initiated, the values of these task attributes are automatically reduced to a value within the allowed limits.

If a job is a WFL job, then its resource-limiting attributes can inherit values specified by the queue attributes of the job queue from which the WFL job was initiated. For further information on queue limits, refer to Tasking from Programming Languages.