IP Library › Granted Patent US 12,301,472
Granted Patent B2
US 12,301,472 · App. 17/407,910 · Granted May 13, 2025

Request throttling using PI-ES controller

Inventors: Raghuveer Murari Bhandarkar (Bangalore, IN); Ravijeet Ranjit Kumar (Bangalore, IN)
Assignee: Oracle International Corporation
H04L47/6225H04L43/16H04L47/562H04L47/6255
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,301,472
App. No.
17/407,910
Granted
May 13, 2025
Kind
B2
Abstract

Techniques for providing request throttling using proportional, integral, and exponential smoothing algorithms are disclosed. A distributed computing system can include a throttler engine that receives a plurality of requests targeting a software component within the distributed computing system. The throttler engine can aggregate the requests into a queue based on a time window. The throttler engine can determine a received request rate and a request rate limit for the software component and then compute a throttled request rate. The throttled request rate can include correction terms derived from proportional and integral computations and a correction term obtained from an exponential smoothing algorithm. The throttler engine can then provide throttled requests from the queue to the software component.

Claims (87)

1. A computer-implemented method, comprising:

receiving, at a throttler engine of a distributed computing system, a plurality of requests to use a software component, each request of the plurality of requests associated with a request time;

aggregating, by the throttler engine, a subset of the plurality of requests based at least in part on a time window, wherein the request time of each of the requests in the subset corresponds to the time window, and wherein the subset is aggregated into a queue;

determining, based at least in part on the subset of the plurality of requests, a received request rate;

identifying a request rate limit associated with the software component, the request rate limit corresponding to the time window;

tuning a plurality of weights;

computing, based at least in part on the received request rate, the request rate limit and the plurality of weights, a plurality of correction values;

determining a throttled request rate based at least in part on the plurality of correction values;

identifying one or more throttled requests from the subset, the one or more throttled requests corresponding to the throttled request rate; and

providing the one or more throttled requests to the software component,

wherein tuning the plurality of weights comprises:

detecting (i) a deviation between a predicted request rate and the received request rate and (ii) a previous deviation between the predicted request rate and a previous received request rate, wherein a drift corresponds to a difference between the deviation and the previous deviation; and

responsive to detecting the drift exceeding a threshold, re-tuning the plurality of weights by simulating, by the throttler engine, the throttled request rate using a new predicted request rate.

2. The computer-implemented method of claim 1 , further comprising:

aggregating a second subset of the plurality of requests based at least in part on a second time window, the request times of each of the requests in the second subset corresponding to the second time window, the second subset aggregated into the queue;

determining, based at least in part on the second subset, a second received request rate corresponding to the second time window;

updating, based at least in part on the second received request rate, the plurality of correction values;

updating the throttled request rate based at least in part on the updated plurality of correction values;

identifying additional throttled requests from the second subset, the additional throttled requests corresponding to the updated throttled request rate; and

providing the additional throttled requests to the software component.

3. The computer-implemented method of claim 2 , wherein computing the plurality of correction values comprises:

computing a proportional correction value based at least in part on a first difference between the received request rate and the request rate limit, the proportional correction value comprising a proportional weight;

computing an integral correction value based at least in part on the first difference and a second difference between the second received request rate and the request rate limit, the integral correction value comprising an integral weight; and

computing a smoothed correction value based at least in part on the first difference and the second difference, the smoothed correction value comprising a smoothed weight.

4. The computer-implemented method of claim 1 , further comprising:

determining the new predicted request rate based at least in part on the previous deviation.

5. The computer-implemented method of claim 1 , wherein the plurality of weights tuned using hyperparameter tuning comprises predetermined values.

6. The computer-implemented method of claim 1 , wherein the queue comprises a first-in first-out queue.

7. The computer-implemented method of claim 1 , wherein the request rate limit comprises a static request rate limit.

8. The computer-implemented method of claim 1 , wherein tuning the plurality of weights further comprises using hyperparameter tuning and performing a grid search.

9. The computer-implemented method of claim 1 , wherein the predicted request rate is based at least in part on historical request traffic to the software component.

10. The computer-implemented method of claim 1 , wherein the previous received request rate is determined based at least in part on previous requests received during a previous time window preceding the time window.

11. A distributed computing system comprising:

one or more processors; and

one or more memories storing computer-executable instructions that, when executed with the one or more processors, cause the distributed computing system to:

receive, at a throttler engine of the distributed computing system, a plurality of requests to use a software component, each request of the plurality of requests associated with a request time;

aggregate, by the throttler engine, a subset of the plurality of requests based at least in part on a time window, wherein the request time of each of the requests in the subset corresponds to the time window, and wherein the subset is aggregated into a queue;

determine, based at least in part on the subset of the plurality of requests, a received request rate;

identify a request rate limit associated with the software component, the request rate limit corresponding to the time window;

tune a plurality of weights;

compute, based at least in part on the received request rate, the request rate limit and the plurality of weights, a plurality of correction values;

determine a throttled request rate based at least in part on the plurality of correction values;

identify one or more throttled requests from the subset, wherein the one or more throttled requests correspond to the throttled request rate; and

provide the one or more throttled requests to the software component,

wherein tuning the plurality of weights comprises:

detecting (i) a deviation between a predicted request rate and the received request rate and (ii) a previous deviation between the predicted request rate and a previous received request rate, wherein a drift corresponds to a difference between the deviation and the previous deviation; and

responsive to detecting the drift exceeding a threshold, re-tuning the plurality of weights by simulating, by the throttler engine, the throttled request rate using a new predicted request rate.

12. The distributed computing system of claim 11 , wherein executing the computer-executable instructions further causes the distributed computing system to:

aggregate a second subset of the plurality of requests based at least in part on a second time window, the request times of each of the requests in the second subset corresponding to the second time window, the second subset aggregated into the queue;

determine, based at least in part on the second subset, a second received request rate corresponding to the second time window;

update, based at least in part on the second received request rate, the plurality of correction values;

update the throttled request rate based at least in part on the updated plurality of correction values;

identify additional throttled requests from the second subset, the additional throttled requests corresponding to the updated throttled request rate; and

provide the additional throttled requests to the software component.

13. The distributed computing system of claim 12 , wherein computing the plurality of correction values comprises:

computing a proportional correction value based at least in part on a first difference between the received request rate and the request rate limit, the proportional correction value comprising a proportional weight;

computing an integral correction value based at least in part on the first difference and a second difference between the second received request rate and the request rate limit, the integral correction value comprising an integral weight; and

computing a smoothed correction value based at least in part on the first difference and the second difference, the smoothed correction value comprising a smoothed weight.

14. The distributed computing system of claim 11 , wherein executing the computer-executable instructions further causes the distributed computing system to:

determine the new predicted request rate based at least in part on the previous deviation.

15. The distributed computing system of claim 11 , wherein tuning the plurality of weights further comprises using hyperparameter tuning and performing a grid search.

16. The distributed computing system of claim 11 , wherein the predicted request rate is based at least in part on historical request traffic to the software component.

17. The distributed computing system of claim 11 , wherein the previous received request rate is determined based at least in part on previous requests received during a previous time window preceding the time window.

18. A non-transitory computer readable medium storing computer-executable instructions that, when executed by one or more processors, cause a distributed computing system to at least:

receive, at a throttler engine of the distributed computing system, a plurality of requests to use a software component, each request of the plurality of requests associated with a request time;

aggregate, by the throttler engine, a subset of the plurality of requests based at least in part on a time window, wherein the request time of each of the requests in the subset corresponds to the time window, and wherein the subset is aggregated into a queue;

determine, based at least in part on the subset of the plurality of requests, a received request rate;

identify a request rate limit associated with the software component, the request rate limit corresponding to the time window;

tune a plurality of weights;

compute, based at least in part on the received request rate, the request rate limit, and the plurality of weights, a plurality of correction values;

determine a throttled request rate based at least in part on the plurality of correction values;

identify one or more throttled requests from the subset, wherein the one or more throttled requests correspond to the throttled request rate; and

provide the one or more throttled requests to the software component,

wherein tuning the plurality of weights comprises:

detecting (i) a deviation between a predicted request rate and the received request rate and (ii) a previous deviation between the predicted request rate and a previous received request rate, wherein a drift corresponds to a difference between the deviation and the previous deviation; and

responsive to detecting the drift exceeding a threshold, re-tuning the plurality of weights by simulating, by the throttler engine, the throttled request rate using a new predicted request rate.

19. The non-transitory computer readable medium of claim 18 , wherein executing the computer-executable instructions further causes the distributed computing system to:

aggregate a second subset of the plurality of requests based at least in part on a second time window, the request times of each of the requests in the second subset corresponding to the second time window, the second subset aggregated into the queue;

determine, based at least in part on the second subset, a second received request rate corresponding to the second time window;

update, based at least in part on the second received request rate, the plurality of correction values;

update the throttled request rate based at least in part on the updated plurality of correction values;

identify additional throttled requests from the second subset, the additional throttled requests corresponding to the updated throttled request rate; and

provide the additional throttled requests to the software component.

20. The non-transitory computer readable medium of claim 19 , wherein computing the plurality of correction values comprises:

computing a proportional correction value based at least in part on a first difference between the received request rate and the request rate limit, the proportional correction value comprising a proportional weight;

computing an integral correction value based at least in part on the first difference and a second difference between the second received request rate and the request rate limit, the integral correction value comprising an integral weight; and

computing a smoothed correction value based at least in part on the first difference and the second difference, the smoothed correction value comprising a smoothed weight.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2021
From: BHANDARKAR, RAGHUVEER; KUMAR, RAVIJEET
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 057273/0466 →
Continuity (1)
Related Publication 20230057068A1 · Feb 23, 2023
References Cited (17)
US 11032392B1 · Gabrielson · 2021 [cited by examiner]
US 20050147030A1 · Lenzini · 2005 [cited by examiner]
US 20130173803A1 · Pijewski · 2013 [cited by examiner]
US 20170186030A1 · Jiang · 2017 [cited by examiner]
US 20200127911A1 · Gilson · 2020 [cited by examiner]
US 20200162385A1 · Thiagarajan · 2020 [cited by examiner]
US 20200366608A1 · Pan · 2020 [cited by examiner]
US 20210234890A1 · Bansal · 2021 [cited by examiner]
US 20210250299A1 · Liu · 2021 [cited by examiner]
US 20220022066A1 · Anand Pushkala · 2022 [cited by examiner]
US 20220086090A1 · McQuaid · 2022 [cited by examiner]
US 20230305892A1 · Mathew · 2023 [cited by examiner]
US 20240078428A1 · Zhou · 2024 [cited by examiner]
Simple Exponential Smoothing, https://otexts.com/fpp2/ses.html, 8 pages from the book “Forecasting Principles and Practice” by Rob. J. Hyndman. (Year: 2018). [cited by examiner]
7.1 Simple Exponential Smoothing, Available Online at: https://otexts.com/fpp2/ses.html, 8 pages. [cited by applicant]
What is a PID Controller : Working & Its Applications, ELPROCUS, Available Online at: https://www.elprocus.com/the-working-of-a-pid-controller/, 16 pages. [cited by applicant]
Desgats, How We Built Rate Limiting Capable of Scaling to Millions of Domains, The Cloudflare Blog, Available online at: https://blog.cloudflare.com/counting-things-a-lot-of-different-things/, Jun. 7, 2017, 14 pages. [cited by applicant]