IP Library Granted Patent US 12,619,475
Granted Patent B2
US 12,619,475 · App. 17/460,849 · Granted May 5, 2026

Application execution environment selection based on resource usage profiles

Inventors: Pierre-Yves Chibon (Paris la Défense, FR); Leigh Griffin (Waterford, IE)
Assignee: Red Hat, LLC
G06F9/5083G06F9/5044G06F11/3414G06F11/3466
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,619,475
App. No.
17/460,849
Granted
May 5, 2026
Kind
B2
Abstract

A plurality of resource usage profiles is generated, wherein at least two of the resource usage profiles each include a corresponding plurality of resource values that quantify real-time computing resources used by an instance of an application that previously executed under two different corresponding operating conditions. It is determined that a new instance of the application is to be initiated. A particular resource usage profile from the plurality of resource usage profiles is selected. The new instance is initiated using the particular resource usage profile.

Claims (97)

1 . A method comprising:

generating, by a computer system comprising one or more processor devices, a plurality of resource usage profiles comprising a corresponding plurality of resource values that quantify real-time computing resources used by a production instance of an application that previously executed under two different corresponding operating conditions;

determining, by the computer system, that a new instance of the application is to be initiated;

selecting, by the computer system, a particular resource usage profile from the plurality of resource usage profiles;

determining, based on the selected particular resource usage profile, that the new instance of the application requires a particular performance metric or resource usage allocation;

obtaining computing resource metadata for each of a plurality of computing devices;

determining, using the obtained computing resource metadata, that a first computing device of the plurality of computing devices has access to computing resources sufficient to meet the particular performance metric or resource usage allocation; and

initiating the new instance using the particular resource usage profile on the first computing device.

2 . The method of claim 1 , wherein a first operating condition of the two different corresponding operating conditions comprises a light load operating condition, and wherein generating a first resource usage profile of the plurality of resource usage profiles comprises:

initiating a first test instance of the application;

providing data to the first test instance in accordance with a light load test process;

generating the corresponding plurality of resource values based on the real-time computing resources of the first test instance during the light load test process; and

storing the corresponding plurality of resource values in the first resource usage profile.

3 . The method of claim 2 , further comprising:

sending a request to an operating system to obtain information that identifies the real-time computing resources of the first test instance of the application during the light load test process; and

generating the corresponding plurality of resource values based on the real-time computing resources.

4 . The method of claim 3 , wherein a second operating condition of the two different corresponding operating conditions comprises a heavy load operating condition, and wherein generating a second resource usage profile of the plurality of resource usage profiles comprises:

providing data to a second test instance in accordance with a heavy load test process;

generating the corresponding plurality of resource values based on the real-time computing resources of the second test instance during the heavy load test process; and

storing the corresponding plurality of resource values in the second resource usage profile.

5 . The method of claim 4 , wherein generating the plurality of resource usage profiles further comprises generating a balanced resource usage profile based on the first resource usage profile and the second resource usage profile.

6 . The method of claim 1 , wherein the plurality of resource usage profiles comprises a plurality of time-of-day resource usage profiles that correspond to a plurality of different times of a day, and further comprising:

generating the plurality of time-of-day resource usage profiles by:

monitoring the real-time computing resources of the production instance of the application at the plurality of different times of the day; and

generating, for each time of the day of the plurality of different times of the day, a time-of-day resource usage profile comprising a corresponding plurality of resource values that quantify the real-time computing resources used by the production instance at the corresponding time of day.

7 . The method of claim 1 , wherein the plurality of resource values of a first resource usage profile of the plurality of resource usage profiles comprises one or more of a first processor utilization value that quantifies an amount of processor device utilization of a test instance of the application, a second processor utilization value that quantifies an amount of processor device utilization of the test instance of the application over a predetermined period of time, a memory utilization value that quantifies an amount of memory utilization of the test instance of the application, a read value that quantifies a number of storage device reads that the test instance of the application has initiated over a predetermined period of time, and a write value that quantifies a number of storage device writes that the test instance of the application has initiated over a predetermined period of time.

8 . The method of claim 1 , wherein selecting the particular resource usage profile from the plurality of resource usage profiles comprises:

identifying a current time of day;

accessing a plurality of time-of-day resource usage profiles of the plurality of resource usage profiles, each time-of-day resource usage profile corresponding to a particular time of day; and

selecting a particular time-of-day resource usage profile that corresponds to a time of day closest to the current time of day.

9 . The method of claim 1 , wherein obtaining the computing resource metadata for each of the plurality of computing devices comprises:

obtaining real-time execution environment statistics of the plurality of computing devices; and

wherein determining that the first computing device has access to computing resources sufficient to meet the particular performance metric or resource usage allocation comprises:

selecting the first computing device from the plurality of computing devices based on the plurality of resource values identified in the particular resource usage profile and the real-time execution environment statistics of the first computing device.

10 . The method of claim 1 , wherein determining that the new instance of the application requires the particular performance metric or resource usage allocation comprises:

determining a number of virtual central processing units (VCPUs) based on the plurality of resource values in the particular resource usage profile;

determining an amount of virtual memory based on the plurality of resource values in the particular resource usage profile;

wherein initiating the new instance using the particular resource usage profile on the first computing device comprises:

causing an initiation of a virtual machine with the number of VCPUs and the amount of virtual memory on the first computing device; and

causing the initiation of the new instance in the virtual machine.

11 . The method of claim 1 , wherein determining that the new instance of the application requires the particular performance metric or resource usage allocation comprises:

determining, based on the particular resource usage profile, that the production instance of the application performs an amount of input/output operations beyond a threshold number of input/output operations;

wherein obtaining the computing resource metadata for each of the plurality of computing devices comprises:

obtaining storage device metadata for each of the plurality of computing devices, the storage device metadata identifying storage device types of storage devices connected to the plurality of computing devices; and

wherein determining that the first computing device has access to computing resources sufficient to meet the particular performance metric or resource usage allocation comprises:

determining that the first computing device is connected to a storage device having a storage device type sufficient to perform the amount of input/output operations beyond the threshold number of input/output operations.

12 . The method of claim 1 , further comprising:

monitoring the new instance by iteratively obtaining the real-time computing resources used by the new instance;

determining that the new instance is utilizing a greater amount of the real-time computing resources than identified in the particular resource usage profile;

accessing a different resource usage profile that comprises a plurality of resource values that have greater values than the plurality of resource values in the particular resource usage profile;

selecting a second computing device of the plurality of computing devices based on the different resource usage profile;

initiating another instance of the application on the second computing device; and

terminating the new instance of the application on the first computing device.

13 . The method of claim 1 , wherein initiating the new instance using the particular resource usage profile on the first computing device comprises initiating the new instance in a first virtual machine of the first computing device that has an allocated amount of memory based on the particular resource usage profile, and further comprising:

monitoring the new instance by iteratively obtaining the real-time computing resources used by the new instance;

determining that the new instance is utilizing a greater amount of memory than identified in the particular resource usage profile;

accessing a different resource usage profile that comprises a plurality of resource values that have greater values than the plurality of resource values in the particular resource usage profile; and

modifying the virtual machine to provide the virtual machine a greater amount of memory than the allocated amount of memory.

14 . The method of claim 1 , wherein the production instance of the application is executed under differing conditions, wherein the differing conditions comprise:

load conditions determined using a first test instance of the application; and

time-of-day conditions determined using a second test instance of the application.

15 . A computer system comprising:

one or more processor devices of one or more computing devices, the one or more processor devices to:

generate a plurality of resource usage profiles comprising a corresponding plurality of resource values that quantify real-time computing resources used by a production instance of an application that previously executed under two different corresponding operating conditions;

determine that a new instance of the application is to be initiated;

select a particular resource usage profile from the plurality of resource usage profiles;

determine, based on the selected particular resource usage profile, that the new instance of the application requires a particular performance metric or resource usage allocation;

obtain computing resource metadata for each of a plurality of computing devices;

determine, using the obtained computing resource metadata, that a first computing device of the plurality of computing devices has access to computing resources sufficient to meet the particular performance metric or resource usage allocation; and

initiate the new instance using the particular resource usage profile on the first computing device.

16 . The computer system of claim 15 , wherein a first operating condition of the two different corresponding operating conditions comprises a light load operating condition, and wherein to generate a first resource usage profile of the plurality of resource usage profiles, the one or more processor devices are further to:

initiate a test instance of the application;

provide data to the test instance in accordance with a light load test process;

generate the corresponding plurality of resource values based on the real-time computing resources of the test instance during the light load test process; and

store the corresponding plurality of resource values in the first resource usage profile.

17 . The computer system of claim 15 , wherein to obtain the computing resource metadata for each of the plurality of computing devices, the one or more processor devices are further to:

obtain real-time execution environment statistics of the plurality of computing devices; and

wherein to determine that the first computing device has access to computing resources sufficient to meet the particular performance metric or resource usage allocation, the one or more processor devices are further to:

select the first computing device from the plurality of computing devices based on the plurality of resource values identified in the particular resource usage profile and the real-time execution environment statistics of the first computing device.

18 . The computer system of claim 15 , wherein to determine that the new instance of the application requires the particular performance metric or resource usage allocation, the one or more processor devices are further to:

determine a number of virtual central processing units (VCPUs) based on the plurality of resource values in the particular resource usage profile;

determine an amount of virtual memory based on the plurality of resource values in the particular resource usage profile; and

wherein to initiate the new instance using the particular resource usage profile on the first computing device, the one or more processor devices are further to:

cause an initiation of a virtual machine with the number of VCPUs and the amount of virtual memory on the first computing device; and

cause the initiation of the new instance in the virtual machine.

19 . A non-transitory computer-readable storage medium that includes executable instructions to cause one or more processor devices to:

generate a plurality of resource usage profiles comprising a corresponding plurality of resource values that quantify real-time computing resources used by a production instance of an application that previously executed under two different corresponding operating conditions;

determine that a new instance of the application is to be initiated;

select a particular resource usage profile from the plurality of resource usage profiles;

determine, based on the selected particular resource usage profile, that the new instance of the application requires a particular performance metric or resource usage allocation;

obtain computing resource metadata for each of a plurality of computing devices;

determine, using the obtained computing resource metadata, that a first computing device of the plurality of computing devices has access to computing resources sufficient to meet the particular performance metric or resource usage allocation; and

initiate the new instance using the particular resource usage profile on the first computing device.

20 . The non-transitory computer-readable storage medium of claim 19 , wherein to obtain the computing resource metadata for each of the plurality of computing devices, the instructions further cause the one or more processor devices to:

obtain real-time execution environment statistics of the plurality of computing devices; and

wherein to determine that the first computing device has access to computing resources sufficient to meet the particular performance metric or resource usage allocation, the instructions further cause the one or more processor devices to:

select the first computing device from the plurality of computing devices based on the plurality of resource values identified in the particular resource usage profile and the real-time execution environment statistics of the first computing device.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Apr 6, 2026
From: RED HAT, INC.; RED HAT, LLC
To: RED HAT, LLC
Reel/Frame 075358/0766 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2021
From: CHIBON, PIERRE-YVES; GRIFFIN, LEIGH
To: RED HAT, INC.
Reel/Frame 057327/0905 →
Continuity (1)
Related Publication 20230062604A1 · Mar 2, 2023
References Cited (37)
US 6086618A · Al-Hilali · 2000 [cited by examiner]
US 8087025B1 · Graupner · 2011 [cited by examiner]
US 9722945B2 · Siciliano et al. · 2017 [cited by applicant]
US 10511481B1 · Castellanos · 2019 [cited by examiner]
US 11138049B1 · Featonby · 2021 [cited by examiner]
US 11868802B2 · Griffin · 2024 [cited by examiner]
US 20100082319A1 · Cherkasova · 2010 [cited by examiner]
US 20100082321A1 · Cherkasova · 2010 [cited by examiner]
US 20120079497A1 · Gangemi · 2012 [cited by examiner]
US 20120185867A1 · Archer · 2012 [cited by examiner]
US 20120284408A1 · Dutta · 2012 [cited by examiner]
US 20130036208A1 · Dochez · 2013 [cited by examiner]
US 20160191617A1 · Hintermeister et al. · 2016 [cited by applicant]
US 20170199752A1 · Cao · 2017 [cited by examiner]
US 20190018671A1 · Zhu · 2019 [cited by examiner]
US 20200110691A1 · Bryant · 2020 [cited by examiner]
US 20210064433A1 · Nakfour · 2021 [cited by applicant]
US 20210067406A1 · Myers · 2021 [cited by examiner]
US 20210096913A1 · Nadeau et al. · 2021 [cited by applicant]
US 20210103499A1 · Alluboyina et al. · 2021 [cited by applicant]
US 20210109732A1 · Mitra · 2021 [cited by applicant]
US 20210109789A1 · McWeeney · 2021 [cited by applicant]
US 20220276953A1 · Padala · 2022 [cited by examiner]
US 20230062604A1 · Chibon · 2023 [cited by examiner]
US 20230078091A1 · Iyer · 2023 [cited by examiner]
US 20250086087A1 · Mo · 2025 [cited by examiner]
US 20250094307A1 · Lebdeh · 2025 [cited by examiner]
CN 111427668A · 2020 [cited by applicant]
CN 112214303A · 2021 [cited by applicant]
CN 112306634A · 2021 [cited by applicant]
CN 112527349A · 2021 [cited by applicant]
Notice of Allowance and Notice of Allowability for U.S. Appl. No. 17/371,651 mailed Sep. 5, 2023, 17 pages. [cited by applicant]
Author Unknown, “Autoscale a load-balanced web application,” Oracle, Dec. 4, 2020, 5 pages. [cited by applicant]
Author Unknown, “AWS Auto Scaling,” Amazon, available as early as Jul. 7, 2021, https://aws.amazon.com/autoscaling/, 7 pages. [cited by applicant]
Hillier, A., “Cloud Autoscaling Explained,” Densify, available as early as Apr. 1, 2021, https://www.densify.com/articles/autoscaling, 6 pages. [cited by applicant]
Campbell, P., “Strategic Monitoring for Hybrid Cloud Infrastructure Provisioning,” CloudBolt Software, Inc., accessed Apr. 9, 2021 from https://www.cloudbolt.io/blog/strategic-monitoring-for-hybrid-cloud-infrastructure-… [cited by applicant]
Sivakumar, S., “New full stack monitoring capabilities inAzure Monitor,” Azure Monitoring & Diagnostics, Sep. 24, 2018, https://azure.microsoft.com/en-US/blog/new-full-stack-monitoring-capabilities-in-azure-monitor, 8 p… [cited by applicant]