US20230062604A1 - Application execution environment selection based on resource usage profiles - Google Patents
Application execution environment selection based on resource usage profiles Download PDFInfo
- Publication number
- US20230062604A1 US20230062604A1 US17/460,849 US202117460849A US2023062604A1 US 20230062604 A1 US20230062604 A1 US 20230062604A1 US 202117460849 A US202117460849 A US 202117460849A US 2023062604 A1 US2023062604 A1 US 2023062604A1
- Authority
- US
- United States
- Prior art keywords
- resource usage
- instance
- usage profile
- time
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3442—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Definitions
- 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.
- 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.
- a method in one implementation 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.
- a computer system in another implementation 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.
- a 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.
- 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. 2 A is a block diagram of the environment illustrated in FIG. 1 according to another implementation
- FIG. 2 B is a block diagram of the environment illustrated in FIG. 2 A at a later point in time than that illustrated in FIG. 2 A ;
- FIG. 3 is a flowchart of a method for application execution environment selection based on resource usage profiles according to one implementation
- FIG. 4 A 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. 4 B is a block diagram of the environment illustrated in FIG. 4 A at a later point in time than that illustrated in FIG. 4 A ;
- FIG. 5 is a simplified block diagram of the environment illustrated in FIGS. 4 A and 4 B ;
- FIG. 6 is a block diagram of a computing device suitable for implementing examples disclosed herein.
- 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.
- execution environments may automatically initiate a copy, or instance, of an application in response to some event, such as a schedule, a programmatic or operator request, or to increase a number of instances of the application during times of heavy demand.
- Such environments may automatically select a particular computing device from a set of computing devices, and initiate the instance of the application.
- the instance may be initiated on a computing device that does not have sufficient computing resources for the instance of the application. This may negatively impact not only the instance of the application, but any other applications already running on the computing device as each application is competing for a finite amount of computing resources.
- the instance of the application may not be able to provide acceptable service, and each other application executing on the computing device may experience reduced performance.
- Some computing environments initiate instances of applications in virtual machines (VMs) to isolate the applications of one tenant, such as a customer of a cloud computing environment provider, that are executing on a same physical computing device as another tenant.
- Virtual machines may be allocated certain resources, such as virtual central processing units (VCPUs), memory, network transceivers, and/or disk storage, that are hopefully sufficient for the VM and any instances of applications executing in the VM to execute.
- VCPUs virtual central processing units
- a VM may be allocated more computing resources than are needed for an instance of an application to properly execute.
- Such an overallocation of computing resources may reduce the amount of computing resources that may be used by other VMs on the same computing device, resulting in an inefficient use of computing resources.
- the VM may not be allocated sufficient computing resources for the instance of the application to properly execute.
- 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.
- An application initiator that operates to initiate instances of applications determines that an instance of the application is to be initiated.
- the application initiator accesses the resource usage profile to select a particular computing device from a set of computing devices to ensure the selected computing device has sufficient resources to execute the instance based on the resource usage profile.
- the application initiator may use the resource usage profile to set appropriate computing resource parameters for a VM that is initiated to execute an instance of the application so that the VM is allocated an appropriate amount of resources to execute the instance.
- FIG. 1 is a block diagram of an environment 10 suitable for generating one or more resource usage profiles according to one implementation.
- the environment 10 includes a computing device 12 and a computing device 14 .
- the computing device 12 has one or more processor devices 16 and a memory 18 .
- the computing device 12 includes, or is communicatively coupled to, a storage device 20 .
- the storage device 20 may include one or more applications 22 - 1 - 22 -N(generally, applications 22 ).
- An application 22 comprises one or more files of programmable instructions and data that, when initiated on a computing device, provide some desired functionality, such as an online web store, a scientific calculator, an investment service, an online banking service, or the like.
- the memory 18 includes a resource usage profile generator 24 that is configured to generate a plurality of resource usage profiles for the applications 22 - 1 - 22 -N.
- a light load test mechanism 28 is generated for the application 22 - 1 .
- the light load test mechanism 28 may include input data 30 and parameters 32 .
- the input data 30 may comprise input transactions expected by an instance of the application 22 - 1 , depending on the functionality implemented by the application 22 . For example, if the application 22 - 1 is a search engine, the input data 30 may comprise search transactions. If the application 22 - 1 is an online web store, the input data 30 may include product purchase transactions.
- the parameters 32 may comprise instructions regarding how the input data 30 is provided to an instance of the application 22 - 1 . For example, the parameters 32 may indicate that transactions are to be provided at a rate of 1 per second or 2 per second, or the parameters may indicate that multiple transactions are to be submitted concurrently to the instance of the application 22 - 1 at a particular rate.
- a heavy load test mechanism 34 is also generated for the application 22 - 1 .
- the heavy load test mechanism 34 may include input data 36 and parameters 38 .
- the input data 36 comprises input transactions expected by the instance of the application 22 - 1 , depending on the functionality implemented by the application 22 .
- the parameters 38 comprise instructions regarding how the input data 36 is provided to an instance of the application 22 - 1 .
- the heavy load test mechanism 34 is designed to require greater computer resource utilization by the instance of the application 22 - 1 than that of the light load test mechanism 28 .
- the input data 36 may be more complex and require more processing than the input data 30 , and/or the parameters 38 may require a greater number of transactions be provided to the instance of the application 22 - 1 at a greater rate than that of the parameters 32 .
- test instance 40 of the application 22 - 1 is initiated on the computing device 14 .
- the term “instance” refers to an executing instantiation of an application 22 .
- the term “test” in this context means that the instance 40 is not for use by end users; the instance 40 is initiated for the purposes of generating resource usage profiles that will be used to initiate subsequent instances of the application 22 - 1 .
- the test instance 40 may be initiated by an operator (not illustrated), the resource usage profile generator 24 , or by any other initiation mechanism.
- the resource usage profile generator 24 initiates a light load test process to generate a resource usage profile that corresponds to a light load operating condition of the test instance 40 .
- the resource usage profile generator 24 provides the input data 30 to the test instance 40 in accordance with the parameters 32 .
- the resource usage profile generator 24 concurrently obtains real-time computing resources from the computing device 14 over a period of time as the input data 30 is being provided to the test instance 40 in accordance with the parameters 32 .
- the real-time computing resources may be obtained, for example, by iteratively sending requests to an operating system of the computing device 14 for information that identifies computing resources used by the test instance 40 .
- the real-time computing resources may include, by way of non-limiting example, processor utilization, memory utilization, reads and writes to storage devices, transmit and receive networking activity, and the like.
- rates of computing resource utilization can be determined, such as reads or writes per unit of time, average processor utilization per unit of time, average memory utilization per unit of time, and the like.
- the resource usage profile generator 24 Based on the real-time computing resources, the resource usage profile generator 24 generates a light load resource usage profile 42 that includes a plurality of resource values 44-1-44-8 that quantify the real-time computing resources used by the test instance 40 during the light load test process.
- the light load resource usage profile 42 includes a resource value 44-1 that quantifies a real-time amount of memory usage of the test instance 40 .
- the resource value 44-2 quantifies a real-time average amount of memory usage of the test instance 40 over a predetermined period of time, such as one second, five seconds, ten seconds, one minute, or over the entire duration of the light load test process.
- the resource value 44-3 quantifies an amount of processor device usage of the test instance 40 over a predetermined period of time.
- the resource value 44-4 quantifies an instantaneous amount of processor device usage of the test instance 40 .
- the resource value 44-5 quantifies a number of storage device reads that the test instance 40 initiated over a predetermined period of time, in this example, 1 second.
- the resource value 44-6 quantifies a number of storage device writes that the test instance 40 initiated over a one-second period of time.
- the resource value 44-7 quantifies an amount, in megabytes, of data that was transmitted onto a network by the test instance 40 over a period of time.
- the resource value 44-8 quantifies an amount, in megabytes, of data that was received by the test instance 40 over the network over a period of time.
- the resource usage profile generator 24 initiates a heavy load test process to generate a resource usage profile that corresponds to a heavy load operating condition of the test instance 40 .
- the resource usage profile generator 24 may first terminate the test instance 40 and initiate another test instance, or initiate the heavy load test process with the test instance 40 .
- the resource usage profile generator 24 provides the input data 36 to the test instance 40 in accordance with the parameters 38 .
- the resource usage profile generator 24 concurrently obtains real-time computing resources from the computing device 14 over a period of time as the input data 36 is being provided to the test instance 40 in accordance with the parameters 38 .
- the resource usage profile generator 24 Based on the real-time computing resources, the resource usage profile generator 24 generates a heavy load resource usage profile 46 that includes a plurality of resource values 48-1-48-8 that quantify the real-time computing resources used by the test instance 40 during the heavy load test process.
- the resource values 48-1-48-8 correspond to the same computing resources as the resource values 44-1-44-8, but may have greater values due to the heavier load provided to the test instance 40 during the heavy load test process.
- the resource usage profile generator 24 may generate a balanced load resource usage profile 50 based on the light load resource usage profile 42 and the heavy load resource usage profile 46 .
- the resource usage profile generator 24 generates a plurality of resource values 52-1-52-8 by averaging the resource values 44-1-44-8 and the resource values 48-1-48-8, however, any suitable formula may be used to generate the balanced load resource usage profile 50 from the light load resource usage profile 42 and the heavy load resource usage profile 46 .
- the resource values 52-1-52-8 correspond to the same computing resources as the resource values 44-1-44-8 and the resource values 48-1-48-8.
- the resource usage profile generator 24 may similarly generate a plurality of resource usage profiles for the application 22 -N.
- resource usage profile generator 24 is a component of the computing device 12 , functionality implemented by the resource usage profile generator 24 may be attributed to the computing device 12 . Moreover, in examples where the resource usage profile generator 24 comprises software instructions that program the processor device 16 to carry out functionality discussed herein, functionality implemented by the resource usage profile generator 24 may be attributed herein to the processor device 16 .
- FIG. 2 A is a block diagram of the environment 10 according to another implementation. It is noted that certain elements illustrated in FIG. 1 not necessary for the discussion of FIGS. 2 A and 2 B have been omitted due to space limitations.
- the computing device 12 includes an application controller 54 that is configured to initiate, or cause the initiation of, an instance of the application 22 onto one or more computing devices 56 - 1 - 56 -N upon request or in response to a condition or criteria.
- the environment 10 is a cloud computing environment that provides cloud computing services to multiple customers, referred to herein as tenants. To ensure isolation between applications of different tenants, the application controller 54 initiates, or causes the initiation of a VM, and then initiates, or causes the initiation of, an instance of the application 22 in the VM.
- the application controller 54 determines that an instance of the application 22 - 1 is to be initiated on a computing device 56 . This determination could be in response to an operator or programmatic command, a schedule, or some other condition.
- the application controller 54 selects the computing device 56 - 1 , which already has a VM 58 executing an application 22 -X.
- the selection of the computing device 56 - 1 may be the result of an analysis of the current loads of the computing devices 56 - 1 - 56 -N, or based on any other criterion or algorithm.
- the application controller 54 may select the balanced load resource usage profile 50 .
- the application controller 54 analyzes the resource values in the balanced load resource usage profile 50 .
- the application controller 54 may utilize predetermined VM allocation thresholds 60 or any other suitable criteria to determine the computing resources that should be allocated to a VM for the purpose of executing an instance of the application 22 - 1 .
- the VM allocation thresholds 60 may indicate that an amount of virtual memory equal to the average memory utilization multiplied by a factor of 1.5 should be allocated to the VM.
- the VM allocation thresholds 60 may indicate that a single VCPU should be allocated to the VM if the average processor utilization is less than 70%, and two VCPUs should be allocated to the VM if the average processor utilization is 70% or greater.
- the application controller 54 determines that 1 GB of virtual memory is to be allocated to the VM (0.65 GB * 1.5) and, based on the resource value 52-3, that one VCPU is to be allocated to the VM.
- the application controller 54 initiates, or causes to be initiated, a VM 62 on the computing device 56 - 1 with an allocation of 1 GB of memory and 1 VCPU 64 .
- the application controller 54 then initiates, or causes to be initiated, an instance 66 of the application 22 - 1 in the VM 62.
- the application controller 54 may store information that indicates the balanced load resource usage profile 50 was used to initiate the instance 66 .
- the application controller 54 or the resource usage profile generator 24 may monitor a production instance of the application 22 - 1 , such as the instance 66 , to generate additional resource usage profiles based on a time-of-day operational condition.
- the resource usage profile generator 24 is configured to generate three time-of-day resource usage profiles 68 - 1 - 68 - 3 (generally, time-of-day resource usage profiles 68 ).
- the resource usage profile generator 24 obtains real-time computing resources of the instance 66 from the computing device 56 - 1 over a period of time that spans 1:00 PM.
- the period of time for example, may be from 12:55 PM to 1:05 PM, or any other suitable or desirable timeframe associated with 1:00 PM.
- the real-time computing resources may be obtained, for example, by iteratively sending requests to an operating system of the computing device 56 - 1 , or to the operating system of the VM 62, for information that identifies computing resources used by the instance 66 .
- the resource usage profile generator 24 Based on the information that identifies the computing resources used by the instance 66 , the resource usage profile generator 24 generates the time-of-day resource usage profile 68 - 1 , which may quantify the same real-time computing resources quantified by the resource values in the resource usage profiles 42 , 46 , and 50 .
- the resource usage profile generator 24 generates the time-of-day resource usage profiles 68 - 2 and 68 - 3 in a similar manner at the appropriate respective times.
- Each of the time-of-day resource usage profiles 68 has associated information that identifies the time of day to which the respective time-of-day resource usage profile 68 corresponds. Such information may, for example, be maintained in metadata, may be stored as part of the file names of the time-of-day resource usage profiles 68 , or may be maintained in a header of the time-of-day resource usage profiles 68 .
- the application controller 54 determines that another instance of the application 22 - 1 is to be initiated on a computing device 56 .
- the application controller 54 accesses the storage device 20 and determines that the plurality of time-of-day resource usage profiles 68 exist.
- the application controller 54 identifies the current time and selects the particular time-of-day resource usage profile 68 that corresponds to a time of day closest to the current time of day.
- the application controller 54 may then use the selected time-of-day resource usage profile 68 and the VM allocation thresholds 60 to determine the computer resources that should be allocated to a new VM in which to initiate the additional instance of the application 22 - 1 , in the manner discussed above with regard to the instance 66 .
- the application controller 54 monitors the instance 66 by iteratively obtaining real-time computing resources used by the instance 66 from the computing device 56 - 1 .
- the application controller 54 determines that the instance 66 is exceeding certain predetermined memory and processor utilization thresholds. For example, the application controller 54 determines that the instance 66 has been utilizing more than 95% of the memory allocated to the VM 62 for longer than 3 minutes, resulting in substantial memory page swaps based on the real-time computing resources.
- the application controller 54 also determines that the instance 66 has been utilizing more than 90% of the VCPU 64 for one minute.
- the application controller 54 determines that the instance 66 may be experiencing a heavier load than suitable for the balanced load resource usage profile 50 .
- the application controller 54 accesses the heavy load resource usage profile 46 .
- the application controller 54 modifies the allocation of memory and VCPUs of the VM 62 based on the heavy load resource usage profile 46 and the VM allocation thresholds 60 .
- the application controller 54 determines that the new memory allocation should be 1.35 GB (0.9 GB * 1.5) and that the VM 62 should have two VCPUs 64 .
- the application controller 54 causes the computing device 56 - 1 to increase the memory allocation of the VM 62 to 1.35 GB, and to allocate an additional VCPU 64 to the VM 62.
- the application controller 54 may continue to monitor the instance 66 over time and make similar computer resource adjustments to the VM 62 as appropriate. If the application controller 54 subsequently determines that the instance 66 is utilizing substantially less computer resources according to predetermined usage thresholds, the application controller 54 may repeat the process of determining appropriate memory and processor utilization allocations based on the light load resource usage profile 42 , for example, and reduce the memory and VCPU allocation of the VM 62.
- the application controller 54 implements this process for all VMs executing on the computing devices 56 - 1 - 56 -N. In this manner, the application controller 54 ensures that the VMs executing on the computing devices 56 have computer resource allocations that are suitable for the instances executing in the VMs, and thus ensures that the VMs are neither overallocated computer resources nor underallocated computer resources.
- the application controller 54 is a component of the computing device 12 , functionality implemented by the application controller 54 may be attributed to the computing device 12 . Moreover, in examples where the application controller 54 comprises software instructions that program the processor device 16 to carry out functionality discussed herein, functionality implemented by the application controller 54 may be attributed herein to the processor device 16 .
- resource usage profile generator 24 and the application controller 54 are shown as separate components, in other implementations, the resource usage profile generator 24 and the application controller 54 could be implemented in a single component or could be implemented in a greater number of components than two.
- the examples are illustrated as being implemented by a single computing device 12 having a single processor device 16 , in other environments, such as a distributed and/or clustered environment, the examples may be implemented on a computer system that includes a plurality of processor devices of a plurality of different computing devices, and functionality of the examples may be implemented on different processor devices of different computing devices. Thus, irrespective of the implementation, the examples may be implemented on a computer system that includes one or more processor devices of one or more computing devices.
- FIG. 3 is a flowchart of a method for application execution environment selection based on resource usage profiles according to one implementation.
- the computing device 12 generates the plurality of resource usage profiles 42 , 46 , and 50 , at least two of the resource usage profiles 42 and 46 each comprising a corresponding plurality of resource values 44 and 48 that quantify real-time computing resources used by the instance 40 of the application 22 - 1 that previously executed under two different corresponding operating conditions ( FIG. 3 , block 1000 ).
- the computing device 12 determines that a new instance of the application 22 - 1 is to be initiated ( FIG. 3 , block 1002 ).
- the computing device 12 selects the resource usage profile 50 from the from the plurality of resource usage profiles 42 , 46 , and 50 ( FIG. 3 , block 1004 ). The computing device 12 initiates the new instance 66 using the resource usage profile 50 ( FIG. 3 , block 1006 ).
- FIG. 4 A is a block diagram of an environment 10 - 1 according to another implementation.
- the environment 10 - 1 is substantially similar to the environment 10 , except as otherwise discussed herein.
- the application controller 54 uses the resource usage profiles 42 , 46 , 50 , and 68 and real-time execution statistics of the computing devices 56 - 1 - 56 -N to select a particular computing device 56 on which to initiate an instance of an application 22 .
- the computing device 56 - 1 currently executes an instance 70 of an application X, an instance 72 of an application Y, and an instance 74 of an application Z.
- the computing device 56 - 2 currently executes an instance 76 of an application L, and an instance 78 of an application F.
- the computing device 56 -N currently executes an instance 80 of an application A, and an instance 82 of an application B.
- the application controller 54 determines that an instance of the application 22 - 1 is to be initiated on a computing device. Again, this determination could be in response to an operator or programmatic command, a schedule, or some other condition.
- the application controller 54 may select the balanced load resource usage profile 50 or a time-of-day resource usage profile 68 based on the current time of day. In this example, assume that the application controller 54 selects the balanced load resource usage profile 50 .
- the application controller 54 obtains real-time execution statistics of the computing devices 56 - 1 - 56 -N.
- the real-time execution statistics may include, for example, an amount of available memory, a number of processor cores, an amount of available processor capacity, and any other useful operational characteristics of the computing devices 56 - 1 - 56 -N.
- the application controller 54 accesses the resource values 52-1-52-8 of the balanced load resource usage profile 50 and, based on the resource values 52-1-52-8 and the real-time execution statistics, selects a particular computing device 56 - 1 .
- the computing device 56 - 1 may have current processor utilization and memory available to provide an instance of the application 22 - 1 with the memory and processor utilization identified in the balanced load resource usage profile 50 .
- the application controller 54 initiates, or causes to be initiated, an instance 84 on the computing device 56 - 1 .
- the application controller 54 may also obtain computing device characteristic information about the computing devices 56 - 1 - 56 -N that identifies characteristics of the computing devices 56 - 1 - 56 -N.
- the computing device characteristic information may include computing device metadata that identifies, by way of non-limiting example, a total amount of memory installed on each computing device 56 , the total number of processor cores of each computing device 56 , and the types of processor devices each computing device 56 .
- the computing device characteristic information may include storage device metadata that identifies, by way of non-limiting example, the types of storage device types to which the computing devices 56 are connected, such as solid state or conventional electro-mechanical storage devices, the amount of storage space available on such storage devices, and the like.
- the computing device characteristic information may include network metadata that identifies, by way of non-limiting example, the number of transceivers installed on the computing devices 56 , the types of transceivers, the speeds of the transceivers and the like.
- the application controller 54 may select a particular computing device 56 based on the computing device characteristic information. For example, for an application that a resource usage profile indicates performs a substantial number of reads and/or writes, the application controller 54 may use the computing device characteristic information to select a computing device 56 that is connected to a solid state storage device rather than a conventional electro-mechanical storage device. For an application that a resource usage profile indicates performs a large number and amount of network transmits and/or receives, the application controller 54 may use the computing device characteristic information to select a computing device 56 that has a 1 Gbps transceiver rather than a 100 Mbps transceiver.
- the application controller 54 monitors the instance 84 by iteratively obtaining real-time computing resources used by the instance 84 from the computing device 56 - 1 .
- the application controller 54 determines that the instance 66 is exceeding certain predetermined memory and processor utilization thresholds. For example, the application controller 54 determines that the instance 66 has been utilizing more than 95% of the memory of the computing device 56 - 1 , resulting in substantial memory page swaps based on the real-time computing resources.
- the application controller 54 also determines that the instance 84 has been utilizing more than 90% of the capacity of the processor device of the computing device 56 - 1 .
- the application controller 54 determines that the instance 84 may be experiencing a heavier load than suitable for the balanced load resource usage profile 50 .
- the application controller 54 accesses the heavy load resource usage profile 46 .
- the application controller 54 determines that the instance 84 should have at least 1.35 GB (0.9 GB * 1.5) of memory available to execute.
- the application controller 54 determines that the instance 84 should have access to a processor device or a processor core the capacity of which the instance 84 can utilize 60% on average.
- the application controller 54 queries the computing devices 56 - 2 - 56 -N to obtain real-time execution statistics of the computing devices 56 - 2 - 56 -N.
- the application controller 54 determines that the computing device 56 - 2 has 1.5 GB of memory available, and has six processor cores, two of which are at a 10% utilization.
- the application controller 54 determines that the application 22 - 1 should be migrated from the computing device 56 - 1 to the computing device 56 - 2 .
- the application controller 54 initiates, or causes the initiation of an instance 86 on the computing device 56 - 2 .
- the application controller 54 then terminates, or causes the termination of the instance 84 on the computing device 56 - 1 .
- the application controller 54 continuously monitors all instances of applications executing on the computing devices 56 - 1 - 56 -N and implements migrations of such instances as needed in accordance with the respective resource usage profiles. In this manner, the application controller 54 ensures that the computing devices 56 are utilized in a most efficient manner and that the instances of the applications are being provided with sufficient computing resources.
- FIG. 5 is a simplified block diagram of the environment 10 - 1 according to another implementation.
- the environment 10 - 1 includes a computer system 88 that includes one or more processor devices 16 (only one illustrated) of one or more computing devices 12 (only one illustrated).
- the one or more processor devices 16 are to generate the plurality of resource usage profiles 42 , 46 , and 50 .
- At least two of the resource usage profiles 42 and 46 each comprise a corresponding plurality of resource values 44, 48, respectively, that quantify real-time computing resources used by an instance of the application 22 - 1 that previously executed under two different corresponding operating conditions.
- the one or more processor devices 16 determine that a new instance of the application 22 - 1 is to be initiated.
- the one or more processor devices 16 select the particular resource usage profile 50 from the plurality of resource usage profiles 42 , 46 , and 50 , and initiate the new instance 84 using the particular resource usage profile 50 .
- FIG. 6 is a block diagram of the computing device 12 suitable for implementing examples according to one example.
- the computing device 12 may comprise any computing or electronic device capable of including firmware, hardware, and/or executing software instructions to implement the functionality described herein, such as a computer server, a desktop computing device, a laptop computing device, or the like.
- the computing device 12 includes the processor device 16 , the system memory 18 , and a system bus 90 .
- the system bus 90 provides an interface for system components including, but not limited to, the system memory 18 and the processor device 16 .
- the processor device 16 can be any commercially available or proprietary processor.
- the system bus 90 may be any of several types of bus structures that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and/or a local bus using any of a variety of commercially available bus architectures.
- the system memory 18 may include non-volatile memory 92 (e.g., read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), etc.), and volatile memory 94 (e.g., random-access memory (RAM)).
- a basic input/output system (BIOS) 96 may be stored in the non-volatile memory 92 and can include the basic routines that help to transfer information between elements within the computing device 12 .
- the volatile memory 94 may also include a high-speed RAM, such as static RAM, for caching data.
- the computing device 12 may further include or be coupled to a non-transitory computer-readable storage medium such as the storage device 20 , which may comprise, for example, an internal or external hard disk drive (HDD) (e.g., enhanced integrated drive electronics (EIDE) or serial advanced technology attachment (SATA)), HDD (e.g., EIDE or SATA) for storage, flash memory, or the like.
- HDD enhanced integrated drive electronics
- SATA serial advanced technology attachment
- the storage device 20 and other drives associated with computer-readable media and computer-usable media may provide non-volatile storage of data, data structures, computer-executable instructions, and the like.
- a number of modules can be stored in the storage device 20 and in the volatile memory 94 , including an operating system and one or more program modules, such as the resource usage profile generator 24 and the application controller 54 , which may implement the functionality described herein in whole or in part. All or a portion of the examples may be implemented as a computer program product 98 stored on a transitory or non-transitory computer-usable or computer-readable storage medium, such as the storage device 20 , which includes complex programming instructions, such as complex computer-readable program code, to cause the processor device 16 to carry out the steps described herein.
- the computer-readable program code can comprise software instructions for implementing the functionality of the examples described herein when executed on the processor device 16 .
- An operator may also be able to enter one or more configuration commands through a keyboard (not illustrated), a pointing device such as a mouse (not illustrated), or a touch-sensitive surface such as a display device.
- Such input devices may be connected to the processor device 16 through an input device interface 100 that is coupled to the system bus 90 but can be connected by other interfaces such as a parallel port, an Institute of Electrical and Electronic Engineers (IEEE) 1394 serial port, a Universal Serial Bus (USB) port, an IR interface, and the like.
- the computing device 12 may also include a communications interface 102 , such as an Ethernet transceiver, suitable for communicating with a network as appropriate or desired.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
- 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.
- 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.
- 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 inFIG. 1 according to another implementation; -
FIG. 2B is a block diagram of the environment illustrated inFIG. 2A at a later point in time than that illustrated inFIG. 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 inFIG. 4A at a later point in time than that illustrated inFIG. 4A ; -
FIG. 5 is a simplified block diagram of the environment illustrated inFIGS. 4A and 4B ; and -
FIG. 6 is a block diagram of a computing device suitable for implementing examples disclosed herein. - The examples set forth below represent the information to enable individuals to practice the examples and illustrate the best mode of practicing the examples. Upon reading the following description in light of the accompanying drawing figures, individuals will understand the concepts of the disclosure and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
- Any flowcharts discussed herein are necessarily discussed in some sequence for purposes of illustration, but unless otherwise explicitly indicated, the examples are not limited to any particular sequence of steps. The use herein of ordinals in conjunction with an element is solely for distinguishing what might otherwise be similar or identical labels, such as “first message” and “second message,” and does not imply a priority, a type, an importance, or other attribute, unless otherwise stated herein. The term “about” used herein in conjunction with a numeric value means any value that is within a range of ten percent greater than or ten percent less than the numeric value. As used herein and in the claims, the articles “a” and “an” in reference to an element refers to “one or more” of the element unless otherwise explicitly specified. The word “or” as used herein and in the claims is inclusive unless contextually impossible. As an example, the recitation of A or B means A, or B, or both A and B.
- 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.
- Many execution environments, such as some cloud computing environments, may automatically initiate a copy, or instance, of an application in response to some event, such as a schedule, a programmatic or operator request, or to increase a number of instances of the application during times of heavy demand. Such environments may automatically select a particular computing device from a set of computing devices, and initiate the instance of the application. In the absence of any knowledge of the computing resources that the instance of the application is likely to use, the instance may be initiated on a computing device that does not have sufficient computing resources for the instance of the application. This may negatively impact not only the instance of the application, but any other applications already running on the computing device as each application is competing for a finite amount of computing resources. The instance of the application may not be able to provide acceptable service, and each other application executing on the computing device may experience reduced performance.
- Some computing environments initiate instances of applications in virtual machines (VMs) to isolate the applications of one tenant, such as a customer of a cloud computing environment provider, that are executing on a same physical computing device as another tenant. Virtual machines may be allocated certain resources, such as virtual central processing units (VCPUs), memory, network transceivers, and/or disk storage, that are hopefully sufficient for the VM and any instances of applications executing in the VM to execute. However, in the absence of any knowledge of the computing resources that an instance of the application is likely to use, a VM may be allocated more computing resources than are needed for an instance of an application to properly execute. Such an overallocation of computing resources may reduce the amount of computing resources that may be used by other VMs on the same computing device, resulting in an inefficient use of computing resources. Alternatively, the VM may not be allocated sufficient computing resources for the instance of the application to properly execute.
- 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. An application initiator that operates to initiate instances of applications determines that an instance of the application is to be initiated. The application initiator accesses the resource usage profile to select a particular computing device from a set of computing devices to ensure the selected computing device has sufficient resources to execute the instance based on the resource usage profile. In other implementations, the application initiator may use the resource usage profile to set appropriate computing resource parameters for a VM that is initiated to execute an instance of the application so that the VM is allocated an appropriate amount of resources to execute the instance.
-
FIG. 1 is a block diagram of anenvironment 10 suitable for generating one or more resource usage profiles according to one implementation. Theenvironment 10 includes acomputing device 12 and acomputing device 14. Thecomputing device 12 has one ormore processor devices 16 and amemory 18. Thecomputing device 12 includes, or is communicatively coupled to, astorage device 20. Thestorage device 20 may include one or more applications 22-1-22-N(generally, applications 22). Anapplication 22 comprises one or more files of programmable instructions and data that, when initiated on a computing device, provide some desired functionality, such as an online web store, a scientific calculator, an investment service, an online banking service, or the like. - The
memory 18 includes a resourceusage profile generator 24 that is configured to generate a plurality of resource usage profiles for the applications 22-1-22-N. A lightload test mechanism 28 is generated for the application 22-1. The lightload test mechanism 28 may includeinput data 30 andparameters 32. Theinput data 30 may comprise input transactions expected by an instance of the application 22-1, depending on the functionality implemented by theapplication 22. For example, if the application 22-1 is a search engine, theinput data 30 may comprise search transactions. If the application 22-1 is an online web store, theinput data 30 may include product purchase transactions. Theparameters 32 may comprise instructions regarding how theinput data 30 is provided to an instance of the application 22-1. For example, theparameters 32 may indicate that transactions are to be provided at a rate of 1 per second or 2 per second, or the parameters may indicate that multiple transactions are to be submitted concurrently to the instance of the application 22-1 at a particular rate. - A heavy
load test mechanism 34 is also generated for the application 22-1. The heavyload test mechanism 34 may includeinput data 36 andparameters 38. Theinput data 36 comprises input transactions expected by the instance of the application 22-1, depending on the functionality implemented by theapplication 22. Theparameters 38 comprise instructions regarding how theinput data 36 is provided to an instance of the application 22-1. The heavyload test mechanism 34 is designed to require greater computer resource utilization by the instance of the application 22-1 than that of the lightload test mechanism 28. For example, theinput data 36 may be more complex and require more processing than theinput data 30, and/or theparameters 38 may require a greater number of transactions be provided to the instance of the application 22-1 at a greater rate than that of theparameters 32. - A
test instance 40 of the application 22-1 is initiated on thecomputing device 14. As used herein, the term “instance” refers to an executing instantiation of anapplication 22. The term “test” in this context means that theinstance 40 is not for use by end users; theinstance 40 is initiated for the purposes of generating resource usage profiles that will be used to initiate subsequent instances of the application 22-1. Thetest instance 40 may be initiated by an operator (not illustrated), the resourceusage profile generator 24, or by any other initiation mechanism. - The resource
usage profile generator 24 initiates a light load test process to generate a resource usage profile that corresponds to a light load operating condition of thetest instance 40. The resourceusage profile generator 24 provides theinput data 30 to thetest instance 40 in accordance with theparameters 32. The resourceusage profile generator 24 concurrently obtains real-time computing resources from thecomputing device 14 over a period of time as theinput data 30 is being provided to thetest instance 40 in accordance with theparameters 32. The real-time computing resources may be obtained, for example, by iteratively sending requests to an operating system of thecomputing device 14 for information that identifies computing resources used by thetest instance 40. The real-time computing resources may include, by way of non-limiting example, processor utilization, memory utilization, reads and writes to storage devices, transmit and receive networking activity, and the like. By iteratively requesting the information that identifies computing resources used by thetest instance 40, rates of computing resource utilization can be determined, such as reads or writes per unit of time, average processor utilization per unit of time, average memory utilization per unit of time, and the like. - Based on the real-time computing resources, the resource
usage profile generator 24 generates a light loadresource usage profile 42 that includes a plurality of resource values 44-1-44-8 that quantify the real-time computing resources used by thetest instance 40 during the light load test process. In this example, the light loadresource usage profile 42 includes a resource value 44-1 that quantifies a real-time amount of memory usage of thetest instance 40. The resource value 44-2 quantifies a real-time average amount of memory usage of thetest instance 40 over a predetermined period of time, such as one second, five seconds, ten seconds, one minute, or over the entire duration of the light load test process. - The resource value 44-3 quantifies an amount of processor device usage of the
test instance 40 over a predetermined period of time. The resource value 44-4 quantifies an instantaneous amount of processor device usage of thetest instance 40. The resource value 44-5 quantifies a number of storage device reads that thetest instance 40 initiated over a predetermined period of time, in this example, 1 second. The resource value 44-6 quantifies a number of storage device writes that thetest instance 40 initiated over a one-second period of time. The resource value 44-7 quantifies an amount, in megabytes, of data that was transmitted onto a network by thetest instance 40 over a period of time. The resource value 44-8 quantifies an amount, in megabytes, of data that was received by thetest instance 40 over the network over a period of time. - The resource
usage profile generator 24 initiates a heavy load test process to generate a resource usage profile that corresponds to a heavy load operating condition of thetest instance 40. The resourceusage profile generator 24 may first terminate thetest instance 40 and initiate another test instance, or initiate the heavy load test process with thetest instance 40. In this example, the resourceusage profile generator 24 provides theinput data 36 to thetest instance 40 in accordance with theparameters 38. The resourceusage profile generator 24 concurrently obtains real-time computing resources from thecomputing device 14 over a period of time as theinput data 36 is being provided to thetest instance 40 in accordance with theparameters 38. Based on the real-time computing resources, the resourceusage profile generator 24 generates a heavy loadresource usage profile 46 that includes a plurality of resource values 48-1-48-8 that quantify the real-time computing resources used by thetest instance 40 during the heavy load test process. The resource values 48-1-48-8 correspond to the same computing resources as the resource values 44-1-44-8, but may have greater values due to the heavier load provided to thetest instance 40 during the heavy load test process. - The resource
usage profile generator 24 may generate a balanced loadresource usage profile 50 based on the light loadresource usage profile 42 and the heavy loadresource usage profile 46. In this example, the resourceusage profile generator 24 generates a plurality of resource values 52-1-52-8 by averaging the resource values 44-1-44-8 and the resource values 48-1-48-8, however, any suitable formula may be used to generate the balanced loadresource usage profile 50 from the light loadresource usage profile 42 and the heavy loadresource usage profile 46. The resource values 52-1-52-8 correspond to the same computing resources as the resource values 44-1-44-8 and the resource values 48-1-48-8. - The resource
usage profile generator 24 may similarly generate a plurality of resource usage profiles for the application 22-N. - It is noted that because the resource
usage profile generator 24 is a component of thecomputing device 12, functionality implemented by the resourceusage profile generator 24 may be attributed to thecomputing device 12. Moreover, in examples where the resourceusage profile generator 24 comprises software instructions that program theprocessor device 16 to carry out functionality discussed herein, functionality implemented by the resourceusage profile generator 24 may be attributed herein to theprocessor device 16. -
FIG. 2A is a block diagram of theenvironment 10 according to another implementation. It is noted that certain elements illustrated inFIG. 1 not necessary for the discussion ofFIGS. 2A and 2B have been omitted due to space limitations. In this implementation, thecomputing device 12 includes anapplication controller 54 that is configured to initiate, or cause the initiation of, an instance of theapplication 22 onto one or more computing devices 56-1-56-N upon request or in response to a condition or criteria. In this example, theenvironment 10 is a cloud computing environment that provides cloud computing services to multiple customers, referred to herein as tenants. To ensure isolation between applications of different tenants, theapplication controller 54 initiates, or causes the initiation of a VM, and then initiates, or causes the initiation of, an instance of theapplication 22 in the VM. - In this example, assume that the
application controller 54 determines that an instance of the application 22-1 is to be initiated on acomputing device 56. This determination could be in response to an operator or programmatic command, a schedule, or some other condition. Theapplication controller 54 selects the computing device 56-1, which already has aVM 58 executing an application 22-X. The selection of the computing device 56-1 may be the result of an analysis of the current loads of the computing devices 56-1-56-N, or based on any other criterion or algorithm. - The
application controller 54 may select the balanced loadresource usage profile 50. Theapplication controller 54 analyzes the resource values in the balanced loadresource usage profile 50. Theapplication controller 54 may utilize predeterminedVM allocation thresholds 60 or any other suitable criteria to determine the computing resources that should be allocated to a VM for the purpose of executing an instance of the application 22-1. As an example, theVM allocation thresholds 60 may indicate that an amount of virtual memory equal to the average memory utilization multiplied by a factor of 1.5 should be allocated to the VM. TheVM allocation thresholds 60 may indicate that a single VCPU should be allocated to the VM if the average processor utilization is less than 70%, and two VCPUs should be allocated to the VM if the average processor utilization is 70% or greater. Based on the resource value 52-2 and theVM allocation thresholds 60, theapplication controller 54 determines that 1 GB of virtual memory is to be allocated to the VM (0.65 GB * 1.5) and, based on the resource value 52-3, that one VCPU is to be allocated to the VM. - The
application controller 54 initiates, or causes to be initiated, aVM 62 on the computing device 56-1 with an allocation of 1 GB of memory and 1VCPU 64. Theapplication controller 54 then initiates, or causes to be initiated, aninstance 66 of the application 22-1 in theVM 62. Theapplication controller 54 may store information that indicates the balanced loadresource usage profile 50 was used to initiate theinstance 66. - In some implementations, the
application controller 54 or the resourceusage profile generator 24 may monitor a production instance of the application 22-1, such as theinstance 66, to generate additional resource usage profiles based on a time-of-day operational condition. In this example, the resourceusage profile generator 24 is configured to generate three time-of-day resource usage profiles 68-1-68-3 (generally, time-of-day resource usage profiles 68). The time-of-day resource usage profile 68-1 will identify resource values that quantify real-time computing resources used by theinstance 66 at 1:00 PM; the time-of-day resource usage profile 68-2 will identify resource values that quantify real-time computing resources used by theinstance 66 at 5:00 PM; and the time-of-day resource usage profile 68-3 will identify resource values that quantify real-time computing resources used by theinstance 66 at 8:00 PM. - To generate, for example, the time-of-day resource usage profile 68-1, the resource
usage profile generator 24 obtains real-time computing resources of theinstance 66 from the computing device 56-1 over a period of time that spans 1:00 PM. The period of time, for example, may be from 12:55 PM to 1:05 PM, or any other suitable or desirable timeframe associated with 1:00 PM. The real-time computing resources may be obtained, for example, by iteratively sending requests to an operating system of the computing device 56-1, or to the operating system of theVM 62, for information that identifies computing resources used by theinstance 66. Based on the information that identifies the computing resources used by theinstance 66, the resourceusage profile generator 24 generates the time-of-day resource usage profile 68-1, which may quantify the same real-time computing resources quantified by the resource values in the resource usage profiles 42, 46, and 50. The resourceusage profile generator 24 generates the time-of-day resource usage profiles 68-2 and 68-3 in a similar manner at the appropriate respective times. Each of the time-of-day resource usage profiles 68 has associated information that identifies the time of day to which the respective time-of-day resource usage profile 68 corresponds. Such information may, for example, be maintained in metadata, may be stored as part of the file names of the time-of-day resource usage profiles 68, or may be maintained in a header of the time-of-day resource usage profiles 68. - Subsequently, assume that the
application controller 54 determines that another instance of the application 22-1 is to be initiated on acomputing device 56. Theapplication controller 54 accesses thestorage device 20 and determines that the plurality of time-of-day resource usage profiles 68 exist. Theapplication controller 54 identifies the current time and selects the particular time-of-day resource usage profile 68 that corresponds to a time of day closest to the current time of day. Theapplication controller 54 may then use the selected time-of-day resource usage profile 68 and theVM allocation thresholds 60 to determine the computer resources that should be allocated to a new VM in which to initiate the additional instance of the application 22-1, in the manner discussed above with regard to theinstance 66. - Referring now to
FIG. 2B , theapplication controller 54 monitors theinstance 66 by iteratively obtaining real-time computing resources used by theinstance 66 from the computing device 56-1. At some point in time, theapplication controller 54 determines that theinstance 66 is exceeding certain predetermined memory and processor utilization thresholds. For example, theapplication controller 54 determines that theinstance 66 has been utilizing more than 95% of the memory allocated to theVM 62 for longer than 3 minutes, resulting in substantial memory page swaps based on the real-time computing resources. Theapplication controller 54 also determines that theinstance 66 has been utilizing more than 90% of theVCPU 64 for one minute. Theapplication controller 54 determines that theinstance 66 may be experiencing a heavier load than suitable for the balanced loadresource usage profile 50. Theapplication controller 54 accesses the heavy loadresource usage profile 46. Theapplication controller 54 modifies the allocation of memory and VCPUs of theVM 62 based on the heavy loadresource usage profile 46 and theVM allocation thresholds 60. In particular, theapplication controller 54 determines that the new memory allocation should be 1.35 GB (0.9 GB * 1.5) and that theVM 62 should have twoVCPUs 64. Theapplication controller 54 causes the computing device 56-1 to increase the memory allocation of theVM 62 to 1.35 GB, and to allocate anadditional VCPU 64 to theVM 62. - The
application controller 54 may continue to monitor theinstance 66 over time and make similar computer resource adjustments to theVM 62 as appropriate. If theapplication controller 54 subsequently determines that theinstance 66 is utilizing substantially less computer resources according to predetermined usage thresholds, theapplication controller 54 may repeat the process of determining appropriate memory and processor utilization allocations based on the light loadresource usage profile 42, for example, and reduce the memory and VCPU allocation of theVM 62. - The
application controller 54 implements this process for all VMs executing on the computing devices 56-1-56-N. In this manner, theapplication controller 54 ensures that the VMs executing on thecomputing devices 56 have computer resource allocations that are suitable for the instances executing in the VMs, and thus ensures that the VMs are neither overallocated computer resources nor underallocated computer resources. - It is noted that, because the
application controller 54 is a component of thecomputing device 12, functionality implemented by theapplication controller 54 may be attributed to thecomputing device 12. Moreover, in examples where theapplication controller 54 comprises software instructions that program theprocessor device 16 to carry out functionality discussed herein, functionality implemented by theapplication controller 54 may be attributed herein to theprocessor device 16. - It is further noted that while the resource
usage profile generator 24 and theapplication controller 54 are shown as separate components, in other implementations, the resourceusage profile generator 24 and theapplication controller 54 could be implemented in a single component or could be implemented in a greater number of components than two. Finally, it is noted that while, for purposes of illustration and simplicity, the examples are illustrated as being implemented by asingle computing device 12 having asingle processor device 16, in other environments, such as a distributed and/or clustered environment, the examples may be implemented on a computer system that includes a plurality of processor devices of a plurality of different computing devices, and functionality of the examples may be implemented on different processor devices of different computing devices. Thus, irrespective of the implementation, the examples may be implemented on a computer system that includes one or more processor devices of one or more computing devices. -
FIG. 3 is a flowchart of a method for application execution environment selection based on resource usage profiles according to one implementation.FIG. 3 will be discussed in conjunction withFIGS. 1 and 2A-2B . Thecomputing device 12 generates the plurality of resource usage profiles 42, 46, and 50, at least two of the resource usage profiles 42 and 46 each comprising a corresponding plurality of resource values 44 and 48 that quantify real-time computing resources used by theinstance 40 of the application 22-1 that previously executed under two different corresponding operating conditions (FIG. 3 , block 1000). Thecomputing device 12 determines that a new instance of the application 22-1 is to be initiated (FIG. 3 , block 1002). Thecomputing device 12 selects theresource usage profile 50 from the from the plurality of resource usage profiles 42, 46, and 50 (FIG. 3 , block 1004). Thecomputing device 12 initiates thenew instance 66 using the resource usage profile 50 (FIG. 3 , block 1006). -
FIG. 4A is a block diagram of an environment 10-1 according to another implementation. The environment 10-1 is substantially similar to theenvironment 10, except as otherwise discussed herein. In this example, theapplication controller 54 uses the resource usage profiles 42, 46, 50, and 68 and real-time execution statistics of the computing devices 56-1-56-N to select aparticular computing device 56 on which to initiate an instance of anapplication 22. The computing device 56-1 currently executes aninstance 70 of an application X, aninstance 72 of an application Y, and an instance 74 of an application Z. The computing device 56-2 currently executes an instance 76 of an application L, and aninstance 78 of an application F. The computing device 56-N currently executes aninstance 80 of an application A, and aninstance 82 of an application B. - Assume, again, that the
application controller 54 determines that an instance of the application 22-1 is to be initiated on a computing device. Again, this determination could be in response to an operator or programmatic command, a schedule, or some other condition. Theapplication controller 54 may select the balanced loadresource usage profile 50 or a time-of-day resource usage profile 68 based on the current time of day. In this example, assume that theapplication controller 54 selects the balanced loadresource usage profile 50. Theapplication controller 54 obtains real-time execution statistics of the computing devices 56-1-56-N. The real-time execution statistics may include, for example, an amount of available memory, a number of processor cores, an amount of available processor capacity, and any other useful operational characteristics of the computing devices 56-1-56-N. - The
application controller 54 accesses the resource values 52-1-52-8 of the balanced loadresource usage profile 50 and, based on the resource values 52-1-52-8 and the real-time execution statistics, selects a particular computing device 56-1. For example, the computing device 56-1 may have current processor utilization and memory available to provide an instance of the application 22-1 with the memory and processor utilization identified in the balanced loadresource usage profile 50. Theapplication controller 54 initiates, or causes to be initiated, an instance 84 on the computing device 56-1. - The
application controller 54 may also obtain computing device characteristic information about the computing devices 56-1-56-N that identifies characteristics of the computing devices 56-1-56-N. The computing device characteristic information may include computing device metadata that identifies, by way of non-limiting example, a total amount of memory installed on eachcomputing device 56, the total number of processor cores of eachcomputing device 56, and the types of processor devices eachcomputing device 56. The computing device characteristic information may include storage device metadata that identifies, by way of non-limiting example, the types of storage device types to which thecomputing devices 56 are connected, such as solid state or conventional electro-mechanical storage devices, the amount of storage space available on such storage devices, and the like. The computing device characteristic information may include network metadata that identifies, by way of non-limiting example, the number of transceivers installed on thecomputing devices 56, the types of transceivers, the speeds of the transceivers and the like. - In some situations, the
application controller 54 may select aparticular computing device 56 based on the computing device characteristic information. For example, for an application that a resource usage profile indicates performs a substantial number of reads and/or writes, theapplication controller 54 may use the computing device characteristic information to select acomputing device 56 that is connected to a solid state storage device rather than a conventional electro-mechanical storage device. For an application that a resource usage profile indicates performs a large number and amount of network transmits and/or receives, theapplication controller 54 may use the computing device characteristic information to select acomputing device 56 that has a 1 Gbps transceiver rather than a 100 Mbps transceiver. - Referring now to
FIG. 4B , theapplication controller 54 monitors the instance 84 by iteratively obtaining real-time computing resources used by the instance 84 from the computing device 56-1. At some point in time, theapplication controller 54 determines that theinstance 66 is exceeding certain predetermined memory and processor utilization thresholds. For example, theapplication controller 54 determines that theinstance 66 has been utilizing more than 95% of the memory of the computing device 56-1, resulting in substantial memory page swaps based on the real-time computing resources. Theapplication controller 54 also determines that the instance 84 has been utilizing more than 90% of the capacity of the processor device of the computing device 56-1. Theapplication controller 54 thus determines that the instance 84 may be experiencing a heavier load than suitable for the balanced loadresource usage profile 50. Theapplication controller 54 accesses the heavy loadresource usage profile 46. Based on the resource value 48-2, theapplication controller 54 determines that the instance 84 should have at least 1.35 GB (0.9 GB * 1.5) of memory available to execute. Based on the resource value 48-3, theapplication controller 54 determines that the instance 84 should have access to a processor device or a processor core the capacity of which the instance 84 can utilize 60% on average. - The
application controller 54 queries the computing devices 56-2-56-N to obtain real-time execution statistics of the computing devices 56-2-56-N. Theapplication controller 54 determines that the computing device 56-2 has 1.5 GB of memory available, and has six processor cores, two of which are at a 10% utilization. Theapplication controller 54 determines that the application 22-1 should be migrated from the computing device 56-1 to the computing device 56-2. Theapplication controller 54 initiates, or causes the initiation of aninstance 86 on the computing device 56-2. Theapplication controller 54 then terminates, or causes the termination of the instance 84 on the computing device 56-1. - The
application controller 54 continuously monitors all instances of applications executing on the computing devices 56-1-56-N and implements migrations of such instances as needed in accordance with the respective resource usage profiles. In this manner, theapplication controller 54 ensures that thecomputing devices 56 are utilized in a most efficient manner and that the instances of the applications are being provided with sufficient computing resources. -
FIG. 5 is a simplified block diagram of the environment 10-1 according to another implementation. The environment 10-1 includes acomputer system 88 that includes one or more processor devices 16 (only one illustrated) of one or more computing devices 12 (only one illustrated). The one ormore processor devices 16 are to generate the plurality of resource usage profiles 42, 46, and 50. At least two of the resource usage profiles 42 and 46 each comprise a corresponding plurality of resource values 44, 48, respectively, that quantify real-time computing resources used by an instance of the application 22-1 that previously executed under two different corresponding operating conditions. The one ormore processor devices 16 determine that a new instance of the application 22-1 is to be initiated. The one ormore processor devices 16 select the particularresource usage profile 50 from the plurality of resource usage profiles 42, 46, and 50, and initiate the new instance 84 using the particularresource usage profile 50. -
FIG. 6 is a block diagram of thecomputing device 12 suitable for implementing examples according to one example. Thecomputing device 12 may comprise any computing or electronic device capable of including firmware, hardware, and/or executing software instructions to implement the functionality described herein, such as a computer server, a desktop computing device, a laptop computing device, or the like. Thecomputing device 12 includes theprocessor device 16, thesystem memory 18, and asystem bus 90. Thesystem bus 90 provides an interface for system components including, but not limited to, thesystem memory 18 and theprocessor device 16. Theprocessor device 16 can be any commercially available or proprietary processor. - The
system bus 90 may be any of several types of bus structures that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and/or a local bus using any of a variety of commercially available bus architectures. Thesystem memory 18 may include non-volatile memory 92 (e.g., read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), etc.), and volatile memory 94 (e.g., random-access memory (RAM)). A basic input/output system (BIOS) 96 may be stored in thenon-volatile memory 92 and can include the basic routines that help to transfer information between elements within thecomputing device 12. Thevolatile memory 94 may also include a high-speed RAM, such as static RAM, for caching data. - The
computing device 12 may further include or be coupled to a non-transitory computer-readable storage medium such as thestorage device 20, which may comprise, for example, an internal or external hard disk drive (HDD) (e.g., enhanced integrated drive electronics (EIDE) or serial advanced technology attachment (SATA)), HDD (e.g., EIDE or SATA) for storage, flash memory, or the like. Thestorage device 20 and other drives associated with computer-readable media and computer-usable media may provide non-volatile storage of data, data structures, computer-executable instructions, and the like. - A number of modules can be stored in the
storage device 20 and in thevolatile memory 94, including an operating system and one or more program modules, such as the resourceusage profile generator 24 and theapplication controller 54, which may implement the functionality described herein in whole or in part. All or a portion of the examples may be implemented as acomputer program product 98 stored on a transitory or non-transitory computer-usable or computer-readable storage medium, such as thestorage device 20, which includes complex programming instructions, such as complex computer-readable program code, to cause theprocessor device 16 to carry out the steps described herein. Thus, the computer-readable program code can comprise software instructions for implementing the functionality of the examples described herein when executed on theprocessor device 16. - An operator may also be able to enter one or more configuration commands through a keyboard (not illustrated), a pointing device such as a mouse (not illustrated), or a touch-sensitive surface such as a display device. Such input devices may be connected to the
processor device 16 through aninput device interface 100 that is coupled to thesystem bus 90 but can be connected by other interfaces such as a parallel port, an Institute of Electrical and Electronic Engineers (IEEE) 1394 serial port, a Universal Serial Bus (USB) port, an IR interface, and the like. Thecomputing device 12 may also include acommunications interface 102, such as an Ethernet transceiver, suitable for communicating with a network as appropriate or desired. - Individuals will recognize improvements and modifications to the preferred examples of the disclosure. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.
Claims (20)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/460,849 US20230062604A1 (en) | 2021-08-30 | 2021-08-30 | Application execution environment selection based on resource usage profiles |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/460,849 US20230062604A1 (en) | 2021-08-30 | 2021-08-30 | Application execution environment selection based on resource usage profiles |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20230062604A1 true US20230062604A1 (en) | 2023-03-02 |
Family
ID=85286277
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/460,849 Pending US20230062604A1 (en) | 2021-08-30 | 2021-08-30 | Application execution environment selection based on resource usage profiles |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US20230062604A1 (en) |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8087025B1 (en) * | 2004-06-30 | 2011-12-27 | Hewlett-Packard Development Company, L.P. | Workload placement among resource-on-demand systems |
| US20120079497A1 (en) * | 2010-09-29 | 2012-03-29 | International Business Machines Corporation | Predicting Resource Requirements for a Computer Application |
| US20200110691A1 (en) * | 2018-10-03 | 2020-04-09 | Capital One Services, Llc | Cloud infrastructure optimization |
| US20210067406A1 (en) * | 2019-08-28 | 2021-03-04 | Microstrategy Incorporated | Self-optimization of computing environments |
| US11138049B1 (en) * | 2019-06-24 | 2021-10-05 | Amazon Technologies, Inc. | Generating narratives for optimized compute platforms |
| US11868802B2 (en) * | 2021-07-09 | 2024-01-09 | Red Hat, Inc. | Application lifecycle management based on real-time resource usage |
-
2021
- 2021-08-30 US US17/460,849 patent/US20230062604A1/en active Pending
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8087025B1 (en) * | 2004-06-30 | 2011-12-27 | Hewlett-Packard Development Company, L.P. | Workload placement among resource-on-demand systems |
| US20120079497A1 (en) * | 2010-09-29 | 2012-03-29 | International Business Machines Corporation | Predicting Resource Requirements for a Computer Application |
| US20200110691A1 (en) * | 2018-10-03 | 2020-04-09 | Capital One Services, Llc | Cloud infrastructure optimization |
| US11138049B1 (en) * | 2019-06-24 | 2021-10-05 | Amazon Technologies, Inc. | Generating narratives for optimized compute platforms |
| US20210067406A1 (en) * | 2019-08-28 | 2021-03-04 | Microstrategy Incorporated | Self-optimization of computing environments |
| US11868802B2 (en) * | 2021-07-09 | 2024-01-09 | Red Hat, Inc. | Application lifecycle management based on real-time resource usage |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10459657B2 (en) | Storage system with read cache-on-write buffer | |
| US9396026B2 (en) | Allocating a task to a computer based on determined resources | |
| EP3507692B1 (en) | Resource oversubscription based on utilization patterns in computing systems | |
| US11016956B2 (en) | Database management system with database hibernation and bursting | |
| US12056360B2 (en) | Optimized I/O performance regulation for non-volatile storage | |
| US10318197B2 (en) | Native storage quality of service for virtual machines | |
| CN109478147B (en) | Adaptive Resource Management in Distributed Computing Systems | |
| US10133775B1 (en) | Run time prediction for data queries | |
| US20140282540A1 (en) | Performant host selection for virtualization centers | |
| EP3537281B1 (en) | Storage controller and io request processing method | |
| US20210224131A1 (en) | Dynamic container-based application resource tuning and resizing | |
| US10754368B1 (en) | Method and system for load balancing backup resources | |
| US20210065082A1 (en) | Resource configuration change planning system and resource configuration change planning method | |
| US20230062604A1 (en) | Application execution environment selection based on resource usage profiles | |
| US11467779B2 (en) | Dynamic storage provisioning for nested clusters | |
| US10489189B2 (en) | Selection of maintenance tasks | |
| US11868802B2 (en) | Application lifecycle management based on real-time resource usage | |
| US12277033B2 (en) | System and method to automatically modify backup schedules based on data change rates | |
| US20160373523A1 (en) | Profile management method and apparatus for running of virtual desktop in heterogeneous server | |
| US10965739B2 (en) | Time-based congestion discounting for I/O fairness control | |
| US20220066823A1 (en) | System and method for appraising resource configuration | |
| US10481801B1 (en) | Optimizing storage quality of service (SQOS) by dynamically determining and managing optimal queue depth and system capacity | |
| US12367185B1 (en) | Replication system for data migration | |
| US20250272201A1 (en) | Modifying restore schedules to mitigate spike activity during data restores | |
| US10585614B2 (en) | Subtier-level data assignment in a tiered storage system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: RED HAT, INC., NORTH CAROLINA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHIBON, PIERRE-YVES;GRIFFIN, LEIGH;REEL/FRAME:057327/0905 Effective date: 20210824 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION COUNTED, NOT YET MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |