IP Library Granted Patent US 10,387,810
Granted Patent B1
US 10,387,810 · App. 14/153,218 · Granted Aug 20, 2019

System and method for proactively provisioning resources to an application

Inventors: Israel Kalush (Kiriat Ono, IL); Oren Tibi Solomon (Modi'in, IL)
Assignee: Quest Software Inc.
G06Q10/06311
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 10,387,810
App. No.
14/153,218
Granted
Aug 20, 2019
Kind
B1
Abstract

In one embodiment, a method includes executing at least one application. The method further includes collecting, at periodic intervals as the least one application executes, an application load of each of the at least one application. In addition, the method includes generating, based at least in part on the collecting, an application-behavior baseline for each of the at least one application. The application-behavior baseline includes a plurality of projected application loads over a future period of time. The application-behavior baseline has a configurable time resolution. The method also includes automatically determining, for a subperiod of the future period, a quantity of compute resources required to manage the at least one application in satisfaction of at least one performance criterion. Moreover, the method includes causing the determined quantity of compute resources to be proactively provisioned to the at least one application in advance of a start of the subperiod.

Claims (91)

1. A method comprising:

executing at least one application on a computer system;

the computer system collecting, at periodic intervals as the at least one application executes, values of an application load of each of the at least one application;

retrieving, by the computer system, a prediction configuration previously associated with the application load of the at least one application, the prediction configuration comprising a selected period-combination data structure from among a plurality of alternative period combination data structures, wherein each period-combination data structure of the plurality of alternative period-combination data structures represents a same set of the collected values of the at least one application over the same historical period of time;

wherein, for each period-combination data structure of the plurality of alternative period combination data structures:

the period-combination data structure comprises a different selection of two or more time periods of a plurality of time periods;

each time period of the two or more time periods comprises segments corresponding to divisions of said same historical period of time;

the two or more time periods each span said same historical period of time at a different sampling rate, such that each of the two or more time periods includes a different number of segments; and

for each collected value of the collected values, the collected value has been incrementally inserted into corresponding segments of the two or more time periods, the incremental insertion comprising, for each time period of the two or more time periods, iterating from highest-frequency time period to lowest-frequency time period:

identifying a corresponding segment of the time period for the collected value;

computing a predicted value for the corresponding segment;

adapting the collected value based on any higher-frequency time periods of the period-combination data structure;

wherein, if the time period is the highest-frequency time period of the two or more time periods, the adapted collected value comprises the collected value;

wherein, if the time period is not the highest-frequency time period of the two or more time periods, the adapted collected value comprises a difference between the adapted collected value and the predicted value for the corresponding segment of the immediately higher-frequency time period; and

inserting the adapted collected value for the time period into the corresponding segment of the time period;

the computer system generating, using the adapted historical collected values of the selected period-combination data structure, an application-behavior baseline for each of the at least one application, the application-behavior baseline comprising a plurality of projected application loads over a future period of time;

the computer system automatically determining, for each subperiod of a plurality of subperiods of the future period, using the application-behavior baseline, a quantity of compute resources required to manage the at least one application in satisfaction of at least one performance criterion; and

for each subperiod of the plurality of subperiods, the computer system causing the determined quantity of compute resources to be proactively provisioned to the at least one application in advance of a start of the subperiod.

2. The method of claim 1 , wherein, for each subperiod of the plurality of subperiods:

the automatically determining comprises automatically determining a number of machine instances required to manage the at least one application over the subperiod; and

the causing comprises causing the determined number of machine instances to be proactively provisioned to the at least one application in advance of the start of the subperiod.

3. The method of claim 2 , wherein the machine instances comprise virtual machine instances.

4. The method of claim 1 , wherein the plurality of subperiods cover an entirety of the future period.

5. The method of claim 1 , wherein the plurality of projected application loads are measured using one or more application-performance metrics selected from the group consisting of: memory utilization, processor utilization, operation completion rate, storage utilization, network bandwidth, and end-user experience management metrics.

6. The method of claim 1 , comprising:

prior to the causing, sending a notification to an authorized user, the notification comprising the determined quantity of compute resources;

receiving authorization from the authorized user; and

wherein the causing is performed responsive to the received authorization.

7. The method of claim 1 , wherein the at least one application comprises a plurality of applications.

8. The method of claim 7 , comprising performing the method for each of the at least one application.

9. The method of claim 1 , comprising:

based at least in part on the collecting, identifying at least one statistical deviation from the application-behavior baseline;

responsive to the identifying, reactively determining a modified quantity of compute resources; and

causing the modified quantity of compute resources to be provisioned to the at least one application.

10. The method of claim 1 , wherein the causing comprises causing the at least one application to be at least of one scaled up and scaled out.

11. The method of claim 1 , wherein the causing comprises causing the at least one application to be at least one of scaled down and scaled in.

12. The method of claim 1 , wherein:

the collecting comprises collecting, at periodic intervals as the at least one application executes, an application load of at least one subunit of the at least one application;

the generating comprises generating the application-behavior baseline for the at least one subunit;

the automatically determining comprises automatically determining, for each subperiod of the plurality of subperiods, a quantity of compute resources required to manage the at least one subunit in satisfaction of at least one performance criterion; and

the causing comprises, for each subperiod of the plurality of subperiods, causing the determined quantity of compute resources to be proactively provisioned to the at least one subunit in advance of the start of the subperiod.

13. The method of claim 12 , wherein the at least one subunit comprises a role instance of the at least one application.

14. The method of claim 12 , comprising:

wherein the at least one subunit comprises a plurality of subunits of the at least one application; and

performing the method for each subunit of the plurality of subunits.

15. The method of claim 1 , wherein the automatically determining comprises:

testing a correlation between a user-centric metric and a resource-utilization metric; and

responsive to a determination that the correlation between the user-centric metric and the resource-utilization metric is sufficient, computing the quantity of compute resources based, at least in part, on the user-centric metric.

16. The method of claim 15 , wherein the automatically determining comprises:

responsive to a determination that the correlation between the user-centric metric and the resource-utilization metric is not sufficient, computing the quantity of compute resources independently of the user-centric metric.

17. An information handling system comprising at least one server computer and memory, wherein the at least one server computer and memory in combination are operable to implement a method comprising:

executing at least one application;

collecting, at periodic intervals as the at least one application executes, values of an application load of each of the at least one application;

retrieving a prediction configuration previously associated with the application load of the at least one application, the prediction configuration comprising a selected period-combination data structure from among a plurality of alternative period-combination data structures, wherein each period-combination data structure of the plurality of alternative period-combination data structures represents a same set of the collected values of the at least one application over the same historical period of time;

wherein, for each period-combination data structure of the plurality of alternative period-combination data structures:

the period-combination data structure comprises a different selection of two or more time periods of a plurality of time periods;

each time period of the two or more time periods comprises segments corresponding to divisions of said same historical period of time;

the two or more time periods each span said same historical period of time at a different sampling rate, such that each of the two or more time periods includes a different number of segments; and

for each collected value of the collected values, the collected value has been incrementally inserted into corresponding segments of the two or more time periods, the incremental insertion comprising, for each time period of the two or more time periods, iterating from highest-frequency time period to lowest-frequency time period:

identifying a corresponding segment of the time period for the collected value;

computing a predicted value for the corresponding segment;

adapting the collected value based on any higher-frequency time periods of the period-combination data structure;

wherein, if the time period is the highest-frequency time period of the two or more time periods, the adapted collected value comprises the collected value;

wherein, if the time period is not the highest-frequency time period of the two or more time periods, the adapted collected value comprises a difference between the adapted collected value and the predicted value for the corresponding segment of the immediately higher-frequency time period; and

inserting the adapted collected value for the time period into the corresponding segment of the time period;

generating, using the adapted historical values of the selected period-combination data structure, an application-behavior baseline for each of the at least one application, the application-behavior baseline comprising a plurality of projected application loads over a future period of time;

automatically determining, for each subperiod of a plurality of subperiods of the future period, using the application-behavior baseline, a quantity of compute resources required to manage the at least one application in satisfaction of at least one performance criterion; and

for each subperiod of the plurality of subperiods, causing the determined quantity of compute resources to be proactively provisioned to the at least one application in advance of a start of the subperiod.

18. The information handling system of claim 17 , wherein, for each subperiod of the plurality of subperiods:

the automatically determining comprises automatically determining a number of machine instances required to manage the at least one application over the subperiod; and

the causing comprises causing the determined number of machine instances to be proactively provisioned to the at least one application in advance of the start of the subperiod.

19. A computer-program product comprising a non-transitory computer-usable medium having computer-readable program code embodied therein, the computer-readable program code adapted to be executed to implement a method comprising:

executing at least one application;

collecting, at periodic intervals as the at least one application executes, values of an application load of each of the at least one application;

retrieving a prediction configuration previously associated with the application load of the at least one application, the prediction configuration comprising a selected period-combination

data structure from among a plurality of alternative period-combination data structures, wherein each period-combination data structure of the plurality of alternative period-combination

data structures represents a same set of the collected values of the at least one application over the same historical period of time;

wherein, for each period-combination data structure of the plurality of alternative period-combination data structures:

the period-combination data structure comprises a different selection of two or more time periods of a plurality of time periods;

each time period of the two or more time periods comprises segments corresponding to divisions of said same historical period of time;

the two or more time periods each span said same historical period of time at a different sampling rate, such that each of the two or more time periods includes a different number of segments; and

for each collected value of the collected values, the collected value has been incrementally inserted into corresponding segments of the two or more time periods, the incremental insertion comprising, for each time period of the two or more time periods, iterating from highest-frequency time period to lowest-frequency time period:

identifying a corresponding segment of the time period for the collected value;

computing a predicted value for the corresponding segment;

adapting the collected value based on any higher-frequency time periods of the period-combination data structure;

wherein, if the time period is the highest-frequency time period of the two or more time periods, the adapted collected value comprises the collected value;

wherein, if the time period is not the highest-frequency time period of the two or more time periods, the adapted collected value comprises a difference between the adapted collected value and the predicted value for the corresponding segment of the immediately higher-frequency time period; and

inserting the adapted collected value for the time period into the corresponding segment of the time period;

generating, using the adapted historical values of the selected period-combination data structure, an application-behavior baseline for each of the at least one application, the application-behavior baseline comprising a plurality of projected application loads over a future period of time;

automatically determining, for each subperiod of a plurality of subperiods of the future period, using the application-behavior baseline, a quantity of compute resources required to manage the at least one application in satisfaction of at least one performance criterion; and

for each subperiod of the plurality of subperiods, causing the determined quantity of compute resources to be proactively provisioned to the at least one application in advance of a start of the subperiod.

Assignments (26)
RELEASE OF SECURITY INTEREST Recorded Nov 19, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073606/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 18, 2025
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073613/0326 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0649 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0001 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059105/0479 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: GOLDMAN SACHS BANK USA
Reel/Frame 058945/0778 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 058952/0279 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059096/0683 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0347 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0486 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Dec 6, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 044719/0565 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
RELEASE OF REEL 032810 FRAME 0206 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; CREDANT TECHNOLOGIES, INC.; COMPELLENT TECHNOLOGIES, INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
Reel/Frame 040027/0204 →
RELEASE OF SECURITY INTEREST OF REEL 032809 FRAME 0930 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; CREDANT TECHNOLOGIES, INC.; COMPELLENT TECHNOLOGIES, INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
Reel/Frame 040045/0255 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
RELEASE OF REEL 032809 FRAME 0887 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; CREDANT TECHNOLOGIES, INC.; COMPELLENT TECHNOLOGIES, INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
Reel/Frame 040017/0314 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded May 1, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 032810/0206 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded May 1, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 032809/0930 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded May 1, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032809/0887 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2014
From: KALUSH, ISRAEL; SOLOMON, OREN TIBI
To: DELL SOFTWARE INC.
Reel/Frame 031991/0806 →
Continuity (3)
Continuation In Part 14014637 · Aug 30, 2013
Continuation In Part 14014707 · Aug 30, 2013
Provisional Application 61707602 · Sep 28, 2012
Cited By (13)
US 12,222,903 US 12,292,853 US 12,306,996 US 12,346,290 US 12,417,294 US 12,443,559 US 12,443,568 US 12,481,625 US 12,499,263 US 12,541,617 US 12,585,563 US 12,619,582 US 12,670,081