IP Library Granted Patent US 12,566,639
Granted Patent B2
US 12,566,639 · App. 17/513,777 · Granted Mar 3, 2026

Techniques for auto-tuning compute load resources

Inventors: Haining Mo (Kenmore, WA); Qiang Wang (Bellevue, WA); Travis John Portz (Seattle, WA)
Assignee: Oracle International Corporation
G06F9/505
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,566,639
App. No.
17/513,777
Granted
Mar 3, 2026
Kind
B2
Abstract

Techniques are disclosed for automated and dynamic compute resource allocation in an infrastructure-as-a-service (IaaS) environment. A system may determine a load threshold value corresponding to a maximum throughput of allocated resources and an active load of processing occurring at those resources. The threshold and load are compared to determine if throttling is occurring at the allocated resources. A specified range of permissible resource allocations is determined. Based on the range of permissible resource allocations, the threshold load value and the active load, the allocated resources may be modified. The modification may be a ramp-up of allocated resources to handle a throttling load or a ramp-down to reduce inefficient resource utilization and processing overhead. The ramp-up or ramp-down may be performed in periodic increments over periodic increments of time to reduce system stress and handle dynamically changing loads. A recommended permissible allocation range may be suggested.

Claims (60)

1 . A method, comprising:

receiving, by a computing device via a user interface, 1) a user-defined upper limit value indicating an upper bound of a permissible allocation range for dynamically increasing a number of computing resources in a first set of computing resources that are allocated to a client, and 2) a user-defined lower limit value indicating a lower bound of the permissible allocation range for dynamically decreasing the number of computing resources in the first set of computing resources that are allocated to the client;

monitoring, by the computing device over time, computing resource loads corresponding to the client;

determining, by the computing device and based at least in part on the monitoring, a first load threshold value and an active load value, the active load value corresponding to a level of activity of a first set of computing resources of the client during a first time period;

comparing, by the computing device, the active load value and the first load threshold value;

determining, by the computing device and based at least in part on the comparison between the active load value and the first load threshold value, a throttle state of the first set of computing resources during the first time period;

in response to determining the throttle state, selecting, by the computing device, a modification threshold value, wherein the user-defined upper limit value is selected for the modification threshold value when the throttle state indicates that the first set of computing resources are being throttled, and wherein the user-defined lower limit value is selected for the modification threshold value when the throttle state indicates that the first set of computing resources are not being throttled;

comparing, by the computing device, the first load threshold value and the modification threshold value; and

during the monitoring, modifying, by the computing device and based at least in part on the determining a difference value between the active load value and the modification threshold value, the number of computing resources in the first set of computing resources of the client, wherein modifying the number of computing resources in the first set of computing resources causes the number of computing resources to be 1) increased while adhering to the user-defined upper limit value of the permissible allocation range or 2) decreased while adhering to the user-defined lower limit value of the permissible allocation range.

2 . The method of claim 1 , wherein the first load threshold value corresponds to a maximum throughput capability of the first set of computing resources and the active load value corresponds to a rate of data being sent to the first set of computing resources.

3 . The method of claim 1 , wherein:

the active load value is greater than the first load threshold value; and

the throttle state indicates that the first set of computing resources is being throttled during the first time period.

4 . The method of claim 3 , wherein selecting the modification threshold value comprises selecting the user-defined upper limit value of the permissible allocation range.

5 . The method of claim 3 , wherein modifying the first set of computing resources comprises:

determining, based at least in part on the difference value, a second set of computing resources that are associated with a second load threshold value; and

adding the second set of computing resources to the first set of computing resources.

6 . The method of claim 1 , wherein:

the active load value is less than or equal to the first load threshold value; and

the throttle state indicates that the first set of computing resources is not being throttled during the first time period.

7 . The method of claim 6 , wherein selecting the modification threshold value comprises selecting the user-defined lower limit value of the permissible allocation range.

8 . The method of claim 6 , wherein modifying the first set of computing resources comprises:

determining a first subset of the first set of computing resources associated with a second load threshold value less than the difference value; and

removing the first subset of the first set of computing resources from the first set of computing resources.

9 . The method of claim 1 , wherein modifying the first set of computing resources comprises altering the number of computing resources at one or more time intervals of a second time period occurring subsequent to the first time period, and wherein altering the number of computing resources comprises adding or removing a static number of computing resources during each of the one or more time intervals of the second time period.

10 . The method of claim 9 , wherein the static number of computing resources is generated based at least in part on a throttling value corresponding to a predefined proportion of throttling.

11 . The method of claim 1 , wherein the number of computing resources is incrementally increased or decreased over subsequent time periods based at least in part on the difference value between the active load value and the modification threshold value.

12 . A non-transitory computer-readable storage medium storing a plurality of instructions executable by one or more processors of a server computer, the plurality of instructions when executed by the one or more processors cause the one or more processors to perform operations comprising:

receiving, by a computing device via a user interface, 1) a user-defined upper limit value indicating an upper bound of a permissible allocation range for dynamically increasing a number of computing resources in a first set of computing resources that are allocated to a client, and 2) a user-defined lower limit value indicating a lower bound of the permissible allocation range for dynamically decreasing the number of computing resources in the first set of computing resources that are allocated to the client;

monitoring, by the computing device over time, computing resource loads corresponding to the client;

determining, by the computing device and based at least in part on the monitoring, a first load threshold value and an active load value, the active load value corresponding to a level of activity of a first set of computing resources of the client during a first time period;

comparing, by the computing device, the active load value and the first load threshold value;

determining, by the computing device and based at least in part on the comparison between the active load value and the first load threshold value, a throttle state of the first set of computing resources during the first time period;

in response to determining the throttle state, selecting, by the computing device, a modification threshold value, wherein the user-defined upper limit value is selected for the modification threshold value when the throttle state indicates that the first set of computing resources are being throttled, and wherein the user-defined lower limit value is selected for the modification threshold value when the throttle state indicates that the first set of computing resources are not being throttled;

comparing, by the computing device, the first load threshold value and the modification threshold value; and

during the monitoring, modifying, by the computing device and based at least in part on the determining a difference value between the active load value and the modification threshold value, the number of computing resources in the first set of computing resources of the client wherein modifying the number of computing resources in the first set of computing resources causes the number of computing resources to be 1) increased while adhering to the user-defined upper limit value of the permissible allocation range or 2) decreased while adhering to the user-defined lower limit value of the permissible allocation range.

13 . The non-transitory computer-readable storage medium of claim 12 , wherein the first load threshold value corresponds to a maximum throughput capability of the first set of computing resources and the active load value corresponds to a rate of data being sent to the first set of computing resources.

14 . The non-transitory computer-readable storage medium of claim 12 , wherein:

the active load value is greater than the first load threshold value; and

the throttle state indicates that the first set of computing resources is being throttled during the first time period.

15 . The non-transitory computer-readable storage medium of claim 14 , wherein selecting the modification threshold value comprises selecting the user-defined upper limit value of the permissible allocation range.

16 . The non-transitory computer-readable storage medium of claim 14 , wherein modifying the first set of computing resources comprises:

determining, based at least in part on the difference value, a second set of computing resources that are associated with a second load threshold value; and

adding the second set of computing resources to the first set of computing resources.

17 . The non-transitory computer-readable storage medium of claim 12 , wherein:

the active load value is less than or equal to the first load threshold value; and

the throttle state indicates that the first set of computing resources is not being throttled during the first time period.

18 . The non-transitory computer-readable storage medium of claim 17 , wherein selecting the modification threshold value comprises selecting the user-defined lower limit value of the permissible allocation range.

19 . A management server device comprising:

one or more data processors; and

a non-transitory computer-readable storage medium comprising instructions which, when executed on the one or more data processors, cause the one or more data processors to perform operations including:

receiving, by the management server device via a user interface, 1) a user-defined upper limit value indicating an upper bound of a permissible allocation range for dynamically increasing a number of computing resources in a first set of computing resources that are allocated to a client, and 2) a user-defined lower limit value indicating a lower bound of the permissible allocation range for dynamically decreasing the number of computing resources in the first set of computing resources that are allocated to the client;

monitoring, by the management server device over time, computing resource loads corresponding to the client;

determining, by the management server device and based at least in part on the monitoring, a first load threshold value and an active load value, the active load value corresponding to a level of activity of a first set of computing resources of the client during a first time period;

comparing, by the management server device, the active load value and the first load threshold value;

determining, by the management server device and based at least in part on the comparison between the active load value and the first load threshold value, a throttle state of the first set of computing resources during the first time period;

in response to determining the throttle state, selecting, by the management server device, a modification threshold value, wherein the user-defined upper limit value is selected for the modification threshold value when the throttle state indicates that the first set of computing resources are being throttled, and wherein the user-defined lower limit value is selected for the modification threshold value when the throttle state indicates that the first set of computing resources are not being throttled;

comparing, by the management server device, the first load threshold value and the modification threshold value; and

during the monitoring, modifying, by the management server device and based at least in part on the determining a difference value between the active load value and the modification threshold value, the number of computing resources in the first set of computing resources of the client, wherein modifying the number of computing resources in the first set of computing resources causes the number of computing resources to be 1) increased while adhering to the user-defined upper limit value of the permissible allocation range or 2) decreased while adhering to the user-defined lower limit value of the permissible allocation range.

20 . The management server device of claim 19 , wherein the number of computing resources is incrementally increased or decreased over subsequent time periods based at least in part on the difference value between the active load value and the modification threshold value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2021
From: MO, HAINING; WANG, QIANG; PORTZ, TRAVIS JOHN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 057996/0400 →
Continuity (1)
Related Publication 20230136226A1 · May 4, 2023
References Cited (18)
US 5283897A · Georgiadis · 1994 [cited by examiner]
US 9342801B2 · Certain et al. · 2016 [cited by applicant]
US 10997098B2 · Longo et al. · 2021 [cited by applicant]
US 11347550B1 · Harjono · 2022 [cited by examiner]
US 20160299697A1 · Chen et al. · 2016 [cited by applicant]
US 20210019193A1 · Ffrench · 2021 [cited by examiner]
US 20210160317A1 · Portz et al. · 2021 [cited by applicant]
US 20210349759A1 · Bansal · 2021 [cited by examiner]
US 20220318058A1 · Kowalczyk · 2022 [cited by examiner]
US 20230104787A1 · Hassan · 2023 [cited by examiner]
CN 107704213A · 2018 [cited by applicant]
EP 2798488A1 · 2014 [cited by applicant]
EP 3599547A1 · 2020 [cited by applicant]
“Adjusting IOPS”, Available online at https://cloud.ibm.com/docs/BlockStorage?topic=BlockStorage-adjustingIOPS, 2 pages. [cited by applicant]
“Amazon EBS Features”, Available online at https://aws.amazon.com/ebs/features/, 5 pages. [cited by applicant]
“Azure Premium Storage: Design For High Performance”, Available online at https://docs.microsoft.com/en-us/azure/virtual-machines/premium-storage-performance, 3 pages. [cited by applicant]
Lu et al., “IOTune: A G-states Driver for Elastic Performance of Block Storage”, Available online at https://arxiv.org/pdf/1705.03591.pdf, May 10, 2017, pp. 1-15. [cited by applicant]
Sharma et al., “Introducing Auto-Tune in Amazon ES”, Available online at https://aws.amazon.com/blogs/big-data/introducing-auto-tune-in-amazon-es/, Mar. 24, 2021, 6 pages. [cited by applicant]