Hitachi

JP1 Version 12 JP1/Automatic Job Management System 3 System Design (Work Tasks) Guide


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:

You can specify an execution agent group to execute the following units:

#

For a flexible job, you can specify an execution agent group as a relay agent.

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.

Figure 2‒62: Example of equal load distribution

[Figure]

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.

  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 / 3

    • Execution agent AGT3: 0 / 3

    Because all execution agents have the same agent usage rate# and the same priority, one of AGT1 to AGT3, which are defined in the execution agent group AGTGR1, becomes the execution agent for job1. In this example, AGT1 becomes the execution agent for job1.

  2. 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 agent usage rate#. Because execution agents AGT2 and AGT3 also have the same priority, AGT2 or AGT3, which are defined in the execution agent group AGTGR1, becomes the execution agent for job2. In this example, AGT2 becomes the execution agent for job2.

  3. 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 lowest agent usage rate#. Therefore, job3 is assigned to execution agent AGT3.

  4. 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

    Because all execution agents now have the same agent usage rate# again, one of AGT1 to AGT3, which are defined in the execution agent group AGTGR1, becomes the execution agent for job4. In this example, AGT1 becomes the execution agent for job4.

  5. 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

    Because execution agents AGT2 and AGT3 now have the same agent usage rate#, AGT2 or AGT3, which are defined in the execution agent group AGTGR1, becomes the execution agent for job5. In this example, AGT2 becomes the execution agent for job5.

  6. 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

    Because execution agent AGT3 now has the lowest agent usage rate#, AGT3 becomes the execution agent for job6.

#

The agent usage rate is the ratio of the number of active jobs to the maximum number of concurrently executable jobs assigned to the agent host.

For details about how to distribute jobs to multiple execution agents in an execution agent group and the agent usage rate, see 5.4.9 Distributing jobs among execution hosts (agent hosts) in the manual JP1/Automatic Job Management System 3 Overview.

(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.

Figure 2‒63: Example of distribution between execution agents with different job execution limits

[Figure]

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.

  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

    All execution agents have the same priority. Therefore, the execution agent that will have the lowest agent usage rate# among those defined in the execution agent group AGTGR1 when it executes the next job becomes the execution agent for job1. In this example, AGT1 becomes the execution agent for job1.

  2. 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

    All execution agents have the same priority. Therefore, the execution agent that will have the lowest agent usage rate# among those defined in the execution agent group AGTGR1 when it executes the next job becomes the execution agent for job1. In this example, AGT2 becomes the execution agent for job2.

  3. 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 AGT1 now has the lowest agent usage rate#. Therefore, job3 is assigned to execution agent AGT1.

  4. Determine the execution agent for job4.

    Because job3 has been assigned to execution agent AGT1, the ratio (active jobs / maximum concurrent jobs) is now as follows:

    • Execution agent AGT1: 2 / 3

    • Execution agent AGT2: 1 / 2

    • Execution agent AGT3: 0 / 1

    All execution agents have the same priority and every execution agent will also have the same agent usage rate# when it executes the next job. Therefore, one of AGT1 to AGT3, which are defined in the execution agent group AGTGR1, becomes the execution agent for job4. In this example, AGT1 becomes the execution agent for job4.

  5. 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: 3 / 3

    • Execution agent AGT2: 1 / 2

    • Execution agent AGT3: 0 / 1

    Execution agents AGT2 and AGT3 will have the same agent usage rate# when they execute the next job. Because AGT2 and AGT3 also have the same priority, AGT2 or AGT3, defined in the execution agent group AGTGR1, becomes the execution agent for job5. In this example, AGT2 becomes the execution agent for job5.

  6. 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: 3 / 3

    • Execution agent AGT2: 2 / 2

    • Execution agent AGT3: 0 / 1

    Because both execution agents AGT1 and AGT2 have reached the job execution limits assigned to them, AGT3 becomes the execution agent for job6.

#

The agent usage rate is the ratio of the number of active jobs to the maximum number of concurrently executable jobs assigned to the agent host.

For details about how to distribute jobs to multiple execution agents in an execution agent group and the agent usage rate, see 5.4.9 Distributing jobs among execution hosts (agent hosts) in the manual JP1/Automatic Job Management System 3 Overview.

(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.

Figure 2‒64: Example of distribution to another execution agent when the number of jobs executed reaches the limit

[Figure]

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.

  1. 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.

  2. 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 execution agents AGT2 and AGT3 now have a lower agent usage rate, also job2 is assigned to AGT1 because AGT1 has the highest priority.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

#

The agent usage rate is the ratio of the number of active jobs to the maximum number of concurrently executable jobs assigned to the agent host.

For details about how to distribute jobs to multiple execution agents in an execution agent group and the agent usage rate, see 5.4.9 Distributing jobs among execution hosts (agent hosts) in the manual JP1/Automatic Job Management System 3 Overview.