IP Library › Granted Patent US 12,417,127
Granted Patent B2
US 12,417,127 · App. 17/451,798 · Granted Sep 16, 2025

Managing workloads in container pools

Inventors: Lior Aronovich (Thornhill, CA); Julian Payne (Entrevaux, FR)
Assignee: International Business Corporation
G06F9/5055G06F9/4887G06N20/00
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,417,127
App. No.
17/451,798
Granted
Sep 16, 2025
Kind
B2
Abstract

A computer implemented method for managing jobs using job processing pools. A computer system receives a job having a job type. The computer system identifies a job processing pool in the job processing pools for running the jobs of the job type, wherein the job processing pool comprises job processors for running the jobs of the job type and wherein another job processing pool in the job processing pools comprises other job processors for running the jobs of a different job type. The computer system runs the job having the job type using a job processor of the job type in the job processing pool for the job type. As a result, the illustrative embodiments can provide a technical effect of increasing the performance in running jobs in a computer system in which wait times for running jobs can be reduced.

Claims (82)

1. A computer implemented method for managing jobs using job processing pools, the computer implemented method comprising:

receiving, by a computer system, a job having a job type;

identifying, by the computer system, a job processing pool in the job processing pools for running the jobs of the job type, wherein each job processing pool in the job processing pools processes jobs of same job type, and wherein at least two job processing pools in the job processing pools are duplicate job processing pools for running jobs of same job type, and wherein the job processing pool comprises job processors for running the jobs of the job type and wherein another job processing pool in the job processing pools comprises other job processors for running the jobs of a different job type;

determining, by the computer system, whether a job processor of the job type can be added to the job processing pool to run the job having the job type;

adding, by the computer system, the job processor of the job type to the job processing pool in response to a determination that the job processor of the job type can be added to the job processing pool to run the job having the job type and adding the job processor of the job type to the job processing pool does not exceed a set of resource limits; and

running, by the computer system, the job using the job processor of the job type.

2. The computer implemented method of claim 1 , wherein running, by the computer system, the job using the job processor of the job type in the job processing pool for the job type comprises:

running, by the computer system, the job using the job processor of the job type in the job processing pool for the job type in response to the job processor in the job processing pool for the job type being available to run the job.

3. The computer implemented method of claim 1 , wherein adding, by the computer system, the job processor of the job type in response to the determination that the job processor of the job type can be added to run the job having the job type comprises:

removing, by the computer system, a set of idle job processors to free up resources for adding the job processor; and

adding, by the computer system, the job processor of the job type to run the job having the job type.

4. The computer implemented method of claim 1 , adding, by the computer system, the job processor of the job type in response to the determination that the job processor of the job type can be added to run the job having the job type comprises:

sorting, by the computer system, the job processing pools into an order based on aggregate job priorities for the job processing pools and resource requirements for the job processors in the job processing pools;

removing, by the computer system, idle job processors from the job processing pools having a higher ranking in the order such that sufficient resources are available to add the job processor; and

adding, by the computer system, the job processor of the job type to the job processing pool.

5. The computer implemented method of claim 1 , adding, by the computer system, the job processor of the job type in response to the determination that the job processor of the job type can be added to run the job having the job type comprises

identifying, by the computer system, a set of candidate jobs having a priority lower than the job, wherein resource released by moving the set of candidate jobs are sufficient to add the job processor of the job type;

placing, by the computer system, the set of candidate jobs in a waiting queue; and

adding, by the computer system, the job processor of the job type to the job processing pool.

6. The computer implemented method of claim 1 further comprising:

removing, by the computer system, idle job processors that have been idle beyond a threshold amount of time.

7. The computer implemented method of claim 1 further comprising:

determining, by the computer system, a time-based job prediction for the jobs; and

reconciling, by the computer system, a size of the job processing pools using the time-based job prediction for the jobs.

8. The computer implemented method of claim 7 , wherein reconciling, by the computer system, the size of the job processing pools using the time-based job prediction for the jobs comprises:

removing, by the computer system, current job processors from the job processing pools that require a size reduction based on the time-based job prediction; and

adding, by the computer system, new job processors to the job processing pools based on the time-based job prediction and set of resource limits.

9. The computer implemented method of claim 8 , wherein adding, by the computer system, the new job processors to the job processing pools based on the set of resource limits comprises:

determining, by the computer system, an added resource requirement for the job processing pools that require a size increase based on the time-based job prediction;

responsive to a determination adding the new job processors to the job processing pools does not exceed the set of resource limits, adding, by the computer system, the new job processors;

responsive to a determination that adding the new job processors to the job processing pools exceeds the set of resource limits, sorting, by the computer system, the job processing pools into an order based on aggregate job priorities for the job processing pools and resource requirements for the job processors in the job processing pools based on the time-based job prediction for the jobs; and

adding, by the computer system, the new job processors to the job processing pools based on the order without exceeding the set of resource limits, wherein the set of resource limits is selected from one of a global resource limit, a consumer resource limit, or per container type limit.

10. The computer implemented method of claim 1 further comprising:

moving, by the computer system, a current job from the job processor in the job processing pool to a dedicated job processor outside of the job processing pools in response to the current job running for a period of time that exceeds a running time threshold.

11. The computer implemented method of claim 1 , wherein the job processors are selected from a least one of a container, a pod, a thread, a process, an application, an operating system instance, a virtual machine, a host, or a cluster.

12. A computer implemented method for managing jobs using job processing pools, the computer implemented method comprising:

responsive to receiving a job having a job type, determining, by a computer system, whether a container for the job type in container pools is present to run the job having the job type, wherein each container pool in the container pools run the jobs for a selected job type, and wherein at least two container pools in the container pools are duplicate job processing pools for running jobs of same job type;

running, by the computer system, the job using the container in response to the container being available;

determining, by the computer system, whether the container for the job type can be added without exceeding a set of resource limits in response to the container being unavailable; and

adding, by the computer system, the container for the job type to run the job in response to a determination that the container for the job type can be added without exceeding the set of resource limits; and

placing, by the computer system, the job in a waiting queue in in response to a determination that the container for the job type cannot be added without exceeding the set of resource limits.

13. A computer system comprising:

a number of processor units, wherein the number of processor units executes program instructions to:

receive a job having a job type;

identify a job processing pool in the job processing pools for running the jobs of the job type, wherein each job processing pool in the job processing pools processes jobs of same job type, and wherein at least two job processing pools in the job processing pools are duplicate job processing pools for running jobs of same job type, and wherein the job processing pool comprises job processors for running the jobs of the job type and wherein another job processing pool in the job processing pools comprises other job processors for running the jobs of a different job type;

determining whether a job processor of the job type can be added to the job processing pool to run the job having the job type;

adding the job processor of the job type to the job processing pool in response to a determination that the job processor of the job type can be added to the job processing pool to run the job having the job type and adding the job processor of the job type to the job processing pool does not exceed a set of resource limits; and

running the job using the job processor of the job type.

14. The computer system of claim 13 , wherein in running the job using the job processor of the job type in the job processing pool for the job type, the number of processor units executes program instructions to:

run the job using the job processor of the job type in the job processing pool for the job type in response to the job processor in the job processing pool for the job type being available to run the job.

15. The computer system of claim 13 , wherein in adding the job processor of the job type in response to the determination that the job processor of the job type can be added to run the job having the job type, the number of processor units executes program instructions to:

remove a set of idle job processors to free up resources for adding the job processor; and

add the job processor of the job type to run the job having the job type.

16. The computer system of claim 13 , in adding the job processor of the job type in response to the determination that the job processor of the job type can be added to run the job having the job type, the number of processor units executes program instructions to:

sort the job processing pools into an order based on aggregate job priorities for the job processing pools and resource requirements for the job processors in the job processing pools;

remove idle job processors from the job processing pools having a higher ranking in the order such that sufficient resources are available to add the job processor; and

add the job processor of the job type to the job processing pool.

17. The computer system of claim 13 , in adding the job processor of the job type in response to the determination that the job processor of the job type can be added to run the job having the job type, the number of processor units executes program instructions to:

identify a set of candidate jobs having a priority lower than the job, wherein resource released by moving the set of candidate jobs are sufficient to add the job processor of the job type;

place the set of candidate jobs in a waiting queue; and

add the job processor of the job type to the job processing pool.

18. The computer system of claim 13 , wherein the number of processor units executes program instructions to:

remove idle job processors that have been idle beyond a threshold amount of time.

19. The computer system of claim 13 , wherein the number of processor units executes program instructions to:

determine a time-based job prediction for the jobs; and

reconcile a size of the job processing pools using the time-based job prediction for the jobs.

20. The computer system of claim 19 , wherein in reconciling the size of the job processing pools using the time-based job prediction for the jobs, the number of processor units executes program instructions to:

remove current job processors from the job processing pools that require a size reduction based on the time-based job prediction; and

add new job processors to the job processing pools based on the time-based job prediction and set of resource limits.

21. The computer system of claim 20 , wherein in adding the new job processors to the job processing pools based on the set of resource limits, the number of processor units executes program instructions to:

determine an added resource requirement for the job processing pools that require a size increase based on the time-based job prediction;

responsive to a determination adding the new job processors to the job processing pools does not exceed the set of resource limits, add the new job processors;

responsive to a determination that adding the new job processors to the job processing pools exceeds the set of resource limits, sort the job processing pools into an order based on aggregate job priorities for the job processing pools and resource requirements for the job processors in the job processing pools based on the time-based job prediction for the jobs; and

add the new job processors to the job processing pools based on the order without exceeding the set of resource limits, wherein the set of resource limits is selected from one of a global resource limit, a consumer resource limit, or per container type limit.

22. The computer system of claim 21 , wherein the number of processor units executes program instructions to:

move a current job from the job processor in the job processing pool to a dedicated job processor outside of the job processing pools in response to the current job running for a period of time that exceeds a running time threshold.

23. A computer program product for managing jobs using job processing pools, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a computer system to cause the computer system to perform a method of:

receiving, by the computer system, a job having a job type;

identifying, by the computer system, a job processing pool in the job processing pools for running the jobs of the job type, wherein each job processing pool in the job processing pools processes jobs of same job type, and wherein at least two job processing pools in the job processing pools are duplicate job processing pools for running jobs of same job type, and wherein the job processing pool comprises job processors for running the jobs of the job type and wherein another job processing pool in the job processing pools comprises other job processors for running the jobs of a different job type;

determining, by the computer system, whether a job processor of the job type can be added to the job processing pool to run the job having the job type;

adding, by the computer system, the job processor of the job type to the job processing pool in response to a determination that the job processor of the job type can be added to the job processing pool to run the job having the job type and adding the job processor of the job type to the job processing pool does not exceed a set of resource limits; and

running, by the computer system, the job using the job processor of the job type.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2021
From: ARONOVICH, LIOR; PAYNE, JULIAN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 057870/0746 →
Continuity (1)
Related Publication 20230125765A1 · Apr 27, 2023
References Cited (34)
US 7237242B2 · Blythe et al. · 2007 [cited by applicant]
US 8095659B2 · Phenix · 2012 [cited by examiner]
US 8185906B2 · Muscarella · 2012 [cited by applicant]
US 8209702B1 · Roytman et al. · 2012 [cited by applicant]
US 8352621B2 · Di Balsamo · 2013 [cited by examiner]
US 9141430B2 · Cherkasova · 2015 [cited by examiner]
US 9262190B2 · Gombert · 2016 [cited by examiner]
US 9612815B1 · Jagtap · 2017 [cited by examiner]
US 9921885B2 · Antony et al. · 2018 [cited by applicant]
US 10013284B2 · Di Balsamo · 2018 [cited by examiner]
US 10037230B2 · Chen · 2018 [cited by examiner]
US 10268461B2 · Boehm · 2019 [cited by examiner]
US 10389598B2 · Padala et al. · 2019 [cited by applicant]
US 10713092B2 · Gupta · 2020 [cited by examiner]
US 11003992B2 · Wesolowski et al. · 2021 [cited by applicant]
US 20140047341A1 · Breternitz et al. · 2014 [cited by applicant]
US 20150143363A1 · Gombert · 2015 [cited by examiner]
US 20170235605A1 · Chaloupka · 2017 [cited by examiner]
US 20180032373A1 · Chen · 2018 [cited by examiner]
US 20180060132A1 · Maru · 2018 [cited by examiner]
US 20180088993A1 · Gerdesmeier et al. · 2018 [cited by applicant]
US 20180225155A1 · Watt, Jr. · 2018 [cited by examiner]
US 20200357483A1 · Roquet · 2020 [cited by examiner]
CN 102509197 · 2012 [cited by applicant]
CN 106716367 · 2017 [cited by applicant]
JP 3817541 · 2006 [cited by applicant]
JP 3944154 · 2007 [cited by applicant]
Rolia et al. “Configuring Workload Manager Control Parameters for Resource Pools”, 2006 IEEE, pp. 127-137. [cited by examiner]
González et al. “HerdMonitor: Monitoring Live Migrating Containers in Cloud Environments”, 2020 IEEE, pp. 2180-2189. [cited by examiner]
Lu et al. “Application-Driven Dynamic Vertical Scaling of Virtual Machines in Resource Pools”, 2014 IEEE, 9 pages. [cited by examiner]
Wang et al “Capacity and Performance Overhead in Dynamic Resource Allocation to Virtual Containers”, 2007 IEEE, pp. 149-158. [cited by examiner]
Awada et al “Improving Resource Efficiency of Container-instance Clusters on Clouds”, 2017 IEEE, pp. 929-934. [cited by examiner]
Mell et al., “The NIST Definition of Cloud Computing”, Computer Security Division, National Institute of Standards and Technology, Jan. 2011, 7 pages. [cited by applicant]
Narayana et lal., “Application deployment using Containers with Auto-scaling for Microservices in Cloud Environment,” Journal of Network and Computer Applications, vol. 160, 2020, 30 pages. [cited by applicant]