2.3.1 Processing with a distributed load
JP1/AJS3 allows you to specify a group of execution agents as the agent host on which to execute a job or jobnet. This allows the processing load to be distributed among the execution agents in the group. The patterns of load distribution are as follows:
-
Jobs are distributed evenly among a number of execution agents.
-
Individual execution agents are assigned different limits for the number of concurrently executable jobs.
-
When the number of jobs executing concurrently at a specific execution agent reaches the limit, execution is distributed to the other execution agents.
You can specify an execution agent group to execute the following units:
-
Root jobnets
-
Nested jobnets
-
PC jobs
-
Unix jobs
-
Action jobs
-
Custom jobs
This section describes how load distribution processing takes place in each pattern. In this example, the agent group AGTGR1 is specified as the execution agent group for a jobnet containing six jobs (job1 to job6).
- Organization of this subsection
(1) Equal load distribution
In this pattern, the agents in the execution agent group have the same priority and the same maximum number of concurrently executable jobs.
The following figure shows an example of the pattern in which the load is distributed evenly among execution agents.
|
In this example, the job execution order is determined as follows, where the priorities of the three execution agents (AGT1, AGT2, and AGT3) in execution agent group AGTGR1 are 16, and a maximum of three jobs can be executed concurrently by each agent.
-
Determine the execution agent for job1.
Ratio: number of active jobs / maximum number of concurrently executable jobs:
-
Execution agent AGT1: 0 / 3
-
Execution agent AGT2: 0 / 3
-
Execution agent AGT3: 0 / 3
As all execution agents have the same load and the same priority, AGT1, which is defined first in the agent group AGTGR1, becomes the execution agent for job1.
-
-
Determine the execution agent for job2.
Because job1 has been assigned to execution agent AGT1, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 1 / 3
-
Execution agent AGT2: 0 / 3
-
Execution agent AGT3: 0 / 3
Execution agents AGT2 and AGT3 now have the same load and the same priority. Therefore, AGT2, which is defined earlier in the agent group AGTGR1, becomes the execution agent for job2.
-
-
Determine the execution agent for job3.
Because job2 has been assigned to execution agent AGT2, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 1 / 3
-
Execution agent AGT2: 1 / 3
-
Execution agent AGT3: 0 / 3
Execution agent AGT3 now has the lightest load. Therefore, job3 is assigned to execution agent AGT3.
-
-
Determine the execution agent for job4.
Now that job1 through job3 have been assigned to execution agents, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 1 / 3
-
Execution agent AGT2: 1 / 3
-
Execution agent AGT3: 1 / 3
Once again, all execution agents have the same load. Therefore, AGT1 becomes the execution agent for job4 because it is defined first in the agent group AGTGR1.
-
-
Determine the execution agent for job5.
Because job4 has been assigned to execution agent AGT1, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 2 / 3
-
Execution agent AGT2: 1 / 3
-
Execution agent AGT3: 1 / 3
Execution agents AGT2 and AGT3 now have the same load. Therefore, AGT2 becomes the execution agent for job5 because it is defined earlier in the agent group AGTGR1.
-
-
Determine the execution agent for job6.
Because job5 has been assigned to execution agent AGT2, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 2 / 3
-
Execution agent AGT2: 2 / 3
-
Execution agent AGT3: 1 / 3
Execution agent AGT3 now has the lightest load. Therefore, job6 is assigned to execution agent AGT3.
-
(2) Distribution among agents assigned different job execution limits
To distribute loads by using different job execution limits at each execution agent, set the maximum number of concurrently executable jobs to a different value, but set the same priority for each execution agent in the group.
The following figure shows an example where the execution agents are assigned a different number of concurrently executable jobs.
|
In this example, the job execution order is determined as follows, where the maximum number of concurrently executable jobs of the three execution agents (AGT1, AGT2, and AGT3) in execution agent group AGTGR1 are 3, 2, and 1.
-
Determine the execution agent for job1.
Ratio: number of active jobs / maximum number of concurrently executable jobs:
-
Execution agent AGT1: 0 / 3
-
Execution agent AGT2: 0 / 2
-
Execution agent AGT3: 0 / 1
As all execution agents have the same load and the same priority, AGT1, which is defined first in the agent group AGTGR1, becomes the execution agent for job1.
-
-
Determine the execution agent for job2.
Because job1 has been assigned to execution agent AGT1, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 1 / 3
-
Execution agent AGT2: 0 / 2
-
Execution agent AGT3: 0 / 1
Execution agents AGT2 and AGT3 now have the same load and the same priority. Therefore, AGT2, which is defined earlier in the agent group AGTGR1, becomes the execution agent for job2.
-
-
Determine the execution agent for job3.
Because job2 has been assigned to execution agent AGT2, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 1 / 3
-
Execution agent AGT2: 1 / 2
-
Execution agent AGT3: 0 / 1
Execution agent AGT3 now has the lightest load. Therefore, job3 is assigned to execution agent AGT3.
-
-
Determine the execution agent for job4.
Now that job1 through job3 have been assigned to execution agents, the ratio (active jobs / maximum concurrent jobs) is:
-
Execution agent AGT1: 1 / 3
-
Execution agent AGT2: 1 / 2
-
Execution agent AGT3: 1 / 1
Once again, all execution agents have the same load. Therefore, AGT1 becomes the execution agent for job4 because it is defined first in the agent group AGTGR1.
-
-
Determine the execution agent for job5.
Because job4 has been assigned to execution agent AGT1, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 2 / 3
-
Execution agent AGT2: 1 / 2
-
Execution agent AGT3: 1 / 1
Although AGT2 and AGT3 have the same load, AGT3 has now reached its maximum number of concurrently executable jobs. Therefore, job5 is assigned to execution agent AGT2.
-
-
Determine the execution agent for job6.
Because job5 has been assigned to execution agent AGT2, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 2 / 3
-
Execution agent AGT2: 2 / 2
-
Execution agent AGT3: 1 / 1
As AGT2 and AGT3 have both reached their maximum number of concurrently executable jobs, job6 is assigned to execution agent AGT1.
-
(3) Job execution distributed to other execution agents when the limit is reached
To have JP1/AJS3 distribute jobs to another execution agent in the group when the number of concurrently executed jobs reaches a limit at an agent, you must specify the priority of each agent in the group. You can also assign different job execution limits to each execution agent as required.
The following figure shows an example where jobs are distributed to another execution agent when the number of concurrently executed jobs has reached the limit.
|
In this example, the job execution order is determined as follows, where the priorities of the three execution agents (AGT1, AGT2, and AGT3) in execution agent group AGTGR1 are 16 (highest), 15 (second highest), and 14 (third highest), and a maximum of two jobs can be executed concurrently by each agent.
-
job 1 is executed.
Ratio: number of active jobs / maximum number of concurrently executable jobs:
-
Execution agent AGT1: 0 / 2
-
Execution agent AGT2: 0 / 2
-
Execution agent AGT3: 0 / 2
Because AGT1 is the execution agent with the highest priority, job1 is assigned to AGT1.
-
-
job 2 is executed.
Now that job1 has been assigned to AGT1, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 1 / 2
-
Execution agent AGT2: 0 / 2
-
Execution agent AGT3: 0 / 2
Although agents AGT2 and AGT3 now have a lighter load, job2 is also assigned to AGT1 because it has the highest priority.
-
-
job 3 is executed.
Now that job2 has been assigned to AGT1, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 2 / 2
-
Execution agent AGT2: 0 / 2
-
Execution agent AGT3: 0 / 2
Although AGT1 has the highest priority, it has now reached its maximum number of concurrently executable jobs. Therefore, job3 is assigned to AGT2, the execution agent with the next highest priority.
-
-
job 4 is executed.
Now that job3 has been assigned to AGT2, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 2 / 2
-
Execution agent AGT2: 1 / 2
-
Execution agent AGT3: 0 / 2
Like job3, job4 is assigned to AGT2.
-
-
job 5 is executed.
Now that job4 has been assigned to AGT2, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 2 / 2
-
Execution agent AGT2: 2 / 2
-
Execution agent AGT3: 0 / 2
As AGT1 and AGT2 have both reached their maximum number of concurrently executable jobs, job5 is assigned to execution agent AGT3.
-
-
job 6 is executed.
Now that job5 has been assigned to AGT3, the ratio (active jobs / maximum concurrent jobs) is now:
-
Execution agent AGT1: 2 / 2
-
Execution agent AGT2: 2 / 2
-
Execution agent AGT3: 1 / 2
As AGT1 and AGT2 have both reached their maximum number of concurrently executable jobs, job 6 is assigned to execution agent AGT3.
-