Search

US-12619475-B2 - Application execution environment selection based on resource usage profiles

US12619475B2US 12619475 B2US12619475 B2US 12619475B2US-12619475-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.

Inventors

  • Pierre-Yves Chibon
  • Leigh Griffin

Assignees

  • RED HAT, INC.

Dates

Publication Date
20260505
Application Date
20210830

Claims (20)

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.

Description

BACKGROUND Different applications executing on a computing device may use different amounts of computing resources, such as memory resources, processor resources, network resources, and storage device resources. The same application may even use different amounts of computing resources under different operating conditions, such as during a very heavy load time versus a light load time, or at different times of the day. SUMMARY The examples disclosed herein monitor computing resource utilization of an instance of an application executing under a particular operating condition. A resource usage profile is generated that includes resource values that quantify the real-time computing resources used by the instance under the particular operating condition. The resource usage profile is subsequently used to initiate additional instances of the application to ensure the instance has sufficient computing resources. In one implementation a method is provided. The method includes generating, by a computer system comprising one or more processor devices, a plurality of resource usage profiles, at least two of the resource usage profiles each comprising 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. The method further includes determining, by the computer system, that a new instance of the application is to be initiated. The method further includes selecting, by the computer system, a particular resource usage profile from the plurality of resource usage profiles, and initiating the new instance using the particular resource usage profile. In another implementation a computer system is provided. The computer system includes one or more processor devices of one or more computing devices. The one or more processor devices are to generate a plurality of resource usage profiles, at least two of the resource usage profiles each comprising 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. The one or more processor devices are further to determine that a new instance of the application is to be initiated. The one or more processor devices are further to select a particular resource usage profile from the plurality of resource usage profiles, and initiate the new instance using the particular resource usage profile. In one implementation a non-transitory computer-readable storage medium is provided. The non-transitory computer-readable storage medium includes executable instructions to cause one or more processor devices to generate a plurality of resource usage profiles, at least two of the resource usage profiles each comprising 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. The instructions are further to cause the one or more processor devices to determine that a new instance of the application is to be initiated. The instructions are further to cause the one or more processor devices to select a particular resource usage profile from the plurality of resource usage profiles, and initiate the new instance using the particular resource usage profile. Individuals will appreciate the scope of the disclosure and realize additional aspects thereof after reading the following detailed description of the examples in association with the accompanying drawing figures. BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure and, together with the description, serve to explain the principles of the disclosure. FIG. 1 is a block diagram of an environment suitable for generating one or more resource usage profiles that can subsequently be used for application execution environment selection according to one implementation; FIG. 2A is a block diagram of the environment illustrated in FIG. 1 according to another implementation; FIG. 2B is a block diagram of the environment illustrated in FIG. 2A at a later point in time than that illustrated in FIG. 2A; FIG. 3 is a flowchart of a method for application execution environment selection based on resource usage profiles according to one implementation; FIG. 4A is a block diagram of another environment suitable for generating one or more resource usage profiles that can subsequently be used for application execution environment selection; FIG. 4B is a block diagram of the environment illustrated in FIG. 4A at a later point in time than that illustrated in FIG. 4A; FIG. 5 is a simplified block diagram of the environment illustrated in FIGS. 4A and 4B; and FIG. 6 is a block diagram of a computing device suitable