IP Library › Granted Patent US 12,260,265
Granted Patent B2
US 12,260,265 · App. 17/556,781 · Granted Mar 25, 2025

Cloud-based compute resource configuration recommendation and allocation for database migration

Inventors: Wenjing Wang (Bellevue, WA); Joyce Yu Cahoon (Woodinville, WA); Yiwen Zhu (San Francisco, CA); Ya Lin (Bellevue, WA); Subramaniam Venkatraman Krishnan (San Jose, CA); Neetu Singh (Duvall, WA); Raymond Truong (Seattle, WA); Xingyu Liu (Seattle, WA); Maria Alexandra Ciortea (Bucharest, RO); Sreraman Narasimhan (Sammamish, WA); Pratyush Rawat (Snoqualmie, WA); Haitao Song (Sammamish, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F9/5083G06F9/5011G06F9/5077G06F16/214
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,260,265
App. No.
17/556,781
Granted
Mar 25, 2025
Kind
B2
Abstract

Methods, systems, apparatuses, and computer-readable storage mediums described herein are directed to determining and recommending an optimal compute resource configuration for a cloud-based resource (e.g., a server, a virtual machine, etc.) for migrating a customer to the cloud. The embodiments described herein utilize a statistically robust approach that makes recommendations that are more flexible (elastic) and account for the full distribution of the amount of resource usage. Such an approach is utilized to develop a personalized rank of relevant recommendations to a customer. To determine which compute resource configuration to recommend to the customer, the customer's usage profile is matched to a set of customers that have already migrated to the cloud. The compute resource configuration that reaches the performance most similar to the performance of the configurations utilized by customers in the matched set is recommended to the user.

Claims (88)

1. A system, comprising:

at least one processor circuit; and

at least one memory that stores program code configured to be executed by the at least one processor circuit, the program code comprising:

a configuration recommender configured to:

receive a plurality of time series of data values, each time series of the plurality of time series representative of a behavior of a respective metric, of a plurality of metrics, associated with a respective computing resource of an on-premise computing device during execution of an application on the on-premise computing device, the on-premise computing device associated with a first customer;

determine a group of second customers having a first level of similarity to the first customer;

generate a respective score for each cloud-based compute resource configuration of a plurality of cloud-based compute resource configurations of a cloud-based platform based on the plurality of time series, each score representing a probability that the application does not require throttling when executed on the respective cloud-based compute resource configuration, each of the cloud-based compute resource configurations utilized by a respective second customer of the group of second customers;

select a cloud-based compute resource configuration from the plurality of cloud-based compute resource configurations based at least on the scores; and

deploy the application on the selected cloud-based compute resource configuration.

2. The system of claim 1 , wherein the configuration recommender is further configured to:

for each cloud-based compute resource configuration of the plurality of cloud-based compute resource configurations:

determine, for each metric of the plurality of metrics, a probability that the cloud-based compute resource configuration accommodates the behavior of the metric without throttling the application when executed on the cloud-based compute resource configuration; and

combine the probabilities to generate the score for the cloud-based compute resource configuration.

3. The system of claim 1 , wherein the configuration recommender is further configured to:

for each cloud-based compute resource configuration of the plurality of cloud-based compute resource configurations, receive a respective cost value for utilizing the cloud-based compute resource configuration; and

determine candidate cloud-based compute resource configurations based on the scores generated for the plurality of cloud-based compute resource configurations and the cost values received for the plurality of cloud-based compute resource configurations, the candidate cloud-based compute resource configurations comprising a subset of cloud-based compute resource configurations from the plurality of cloud-based compute resource configurations.

4. The system of claim 3 , wherein the configuration recommender is further configured to:

determine the respective cloud-based compute resource configurations utilized by each of the second customers;

average the scores to generate an average score; and

select a cloud-based compute resource configuration from the candidate cloud-based compute resource configurations that is associated with a score having a second level of similarity to the average score.

5. The system of claim 4 , wherein the configuration recommender is further configured to:

provide a recommendation to the first customer recommending the selected cloud-based compute resource configuration;

receive user input that indicates that the first customer has designated the selected cloud-based compute resource configuration for migration; and

responsive to receiving the user input, deploy the application on the selected cloud-based compute resource configuration.

6. The system of claim 1 , wherein each cloud-based compute resource configuration of the plurality of cloud-based compute resource configuration comprises at least one of:

a number of central processing unit cores maintained by a respective cloud-based compute resource;

an amount of storage maintained by the respective cloud-based compute resource;

an amount to memory maintained by the respective cloud-based compute resource; or

a number of input/output operations per second supported by the respective cloud-based compute resource.

7. The system of claim 6 , wherein the respective cloud-based compute resource comprises at least one of:

a server maintained by the cloud-based platform; or

a virtual machine maintained by the cloud-based platform.

8. A computer-implemented method, comprising:

receiving a plurality of time series of data values, each time series of the plurality of time series representative of a behavior of a respective metric, of a plurality of metrics, associated with a respective computing resource of an on-premise computing device during execution of an application on the on-premise computing device;

for each cloud-based compute resource configuration of a plurality of cloud-based compute resource configurations of a cloud-based platform:

determining, for each metric of the plurality of metrics, a probability that the cloud-based compute resource configuration accommodates the behavior of the metric without throttling the application when executed on the cloud-based compute resource configuration, and

combining the probabilities to generate a score for the cloud-based compute resource configuration, the score representing a probability that the application does not require throttling when executed on the cloud-based compute resource configuration;

selecting a cloud-based compute resource configuration from the plurality of cloud-based compute resource configurations based at least on the scores; and

deploying the application on the selected cloud-based compute resource configuration.

9. The computer-implemented method of claim 8 , wherein said generating comprises:

for each cloud-based compute resource configuration of the plurality of cloud-based compute resource configurations, receiving a respective cost value for utilizing the cloud-based compute resource configuration; and

determining candidate cloud-based compute resource configurations based on the scores generated for the plurality of cloud-based compute resource configurations and the cost values received for the plurality of cloud-based compute resource configurations, the candidate cloud-based compute resource configurations comprising a subset of cloud-based compute resource configurations from the plurality of cloud-based compute resource configurations.

10. The computer-implemented method of claim 9 , wherein said selecting comprises:

associating a customer of a cloud-based platform associated with the on-premise computing device with a group of customers of the cloud-based platform based on a first level of similarity therebetween;

determining a respective cloud-based compute resource configuration of the plurality of cloud-based compute resource configurations utilized by each of the customers, the scores being generated for the determined cloud-based compute resource configurations;

averaging the scores to generate an average score; and

selecting a cloud-based compute resource configuration from the candidate cloud-based compute resource configurations that is associated with a score having a second level of similarity to the average score.

11. The computer-implemented method of claim 10 , wherein said deploying comprises:

providing a recommendation to the customer recommending the selected cloud-based compute resource configuration;

receiving user input that indicates that the customer has designated the selected cloud-based compute resource configuration for migration; and

responsive to receiving the user input, deploying the application on the selected cloud-based compute resource configuration.

12. The computer-implemented method of claim 8 , wherein each cloud-based compute resource configuration of the plurality of cloud-based compute resource configuration comprises at least one of:

a number of central processing unit cores maintained by a respective cloud-based compute resource;

an amount of storage maintained by the respective cloud-based compute resource;

an amount to memory maintained by the respective cloud-based compute resource; or

a number of input/output operations per second supported by the respective cloud-based compute resource.

13. The computer-implemented method of claim 12 , wherein the respective cloud-based compute resource comprises at least one of:

a server maintained by the cloud-based platform; or

a virtual machine maintained by the cloud-based platform.

14. A computer-readable storage medium having program instructions recorded thereon that, when executed by at least one processor, perform a method comprising:

receiving a plurality of time series of data values, each time series of the plurality of time series representative of a behavior of a respective metric, of a plurality of metrics, associated with a respective computing resource of an on-premise computing device during execution of an application on the on-premise computing device, the on-premise computing device associated with a first customer;

determine a group of second customers having a first level of similarity to the first customer;

generating a respective score for each cloud-based compute resource configuration of a plurality of cloud-based compute resource configurations of a cloud-based platform based on the plurality of time series, each score representing a probability that the application does not require throttling when executed on the respective cloud-based compute resource configuration, each of the cloud-based compute resource configurations utilized by a respective second customer of the group of second customers;

selecting a cloud-based compute resource configuration from the plurality of cloud-based compute resource configurations based at least on the scores; and

deploying the application on the selected cloud-based compute resource configuration.

15. The computer-readable storage medium of claim 14 , wherein said generating comprises:

for each cloud-based compute resource configuration of the plurality of cloud-based compute resource configurations:

determining, for each metric of the plurality of metrics, a probability that the cloud-based compute resource configuration accommodates the behavior of the metric without throttling the application when executed on the cloud-based compute resource configuration; and

combining the probabilities to generate the score for the cloud-based compute resource configuration.

16. The computer-readable storage medium of claim 14 , wherein said generating comprises:

for each cloud-based compute resource configuration of the plurality of cloud-based compute resource configurations, receiving a respective cost value for utilizing the cloud-based compute resource configuration; and

determining candidate cloud-based compute resource configurations based on the scores generated for the plurality of cloud-based compute resource configurations and the cost values received for the plurality of cloud-based compute resource configurations, the candidate cloud-based compute resource configurations comprising a subset of cloud-based compute resource configurations from the plurality of cloud-based compute resource configurations.

17. The computer-readable storage medium of claim 16 , wherein the method further comprises:

determining the respective cloud-based compute resource configurations utilized by each of the second customers;

averaging the scores to generate an average score; and

selecting a cloud-based compute resource configuration from the candidate cloud-based compute resource configurations that is associated with a score having a second level of similarity to the average score.

18. The computer-readable storage medium of claim 17 , wherein said deploying comprises:

providing a recommendation to the first customer recommending the selected cloud-based compute resource configuration;

receiving user input that indicates that the first customer has designated the selected cloud-based compute resource configuration for migration; and

responsive to receiving the user input, deploying the application on the selected cloud-based compute resource configuration.

19. The computer-readable storage medium of claim 14 , wherein each cloud-based compute resource configuration of the plurality of cloud-based compute resource configuration comprises at least one of:

a number of central processing unit cores maintained by a respective cloud-based compute resource;

an amount of storage maintained by the respective cloud-based compute resource;

an amount to memory maintained by the respective cloud-based compute resource; or

a number of input/output operations per second supported by the respective cloud-based compute resource.

20. The system of claim 1 , wherein the configuration recommender is further configured to:

average the scores to generate an average score; and

select the cloud-based compute resource configuration from the plurality of cloud-based compute resource configurations based on a second level of similarity between the average score and the respective score of the selected cloud-based compute resource configuration.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 20, 2021
From: WANG, WENJING; CAHOON, JOYCE YU; ZHU, YIWEN; LIN, YA; KRISHNAN, SUBRAMANIAM VENKATRAMAN; SINGH, NEETU; TRUONG, RAYMOND; LIU, XINGYU; CIORTEA, MARIA ALEXANDRA; NARASIMHAN, SRERAMAN; RAWAT, PRATYUSH; SONG, HAITAO
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 058568/0248 →
Continuity (2)
Provisional Application 63228450 · Aug 2, 2021
Related Publication 20230029888A1 · Feb 2, 2023
References Cited (10)
US 11153394B1 · Eberlein · 2021 [cited by examiner]
US 20180124189A1 · Edgington · 2018 [cited by examiner]
US 20190306236A1 · Wiener · 2019 [cited by examiner]
US 20210224298A1 · Singi · 2021 [cited by examiner]
US 20220086241A1 · Sharma · 2022 [cited by examiner]
US 20220103433A1 · Akhilesham · 2022 [cited by examiner]
EP 3547126A1 · 2019 [cited by applicant]
“CPU Benchmarks”, Retrieved from: https://web.archive.org/web/20210716054206/https://www.cpubenchmark.net/, Jul. 16, 2021, 4 Pages. [cited by applicant]
Chowdhury, et al., “A Framework for Automated Monitoring and Orchestration of Cloud-Native applications”, In Proceedings of International Symposium on Networks, Computers and Communications (ISNCC), Oct. 20, 2020, 6 Pag… [cited by applicant]
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US22/032415”, Mailed Date: Aug. 31, 2022, 13 Pages. [cited by applicant]