US20140165061A1 - Statistical packing of resource requirements in data centers - Google Patents

Statistical packing of resource requirements in data centers Download PDF

Info

Publication number
US20140165061A1
US20140165061A1 US14/182,933 US201414182933A US2014165061A1 US 20140165061 A1 US20140165061 A1 US 20140165061A1 US 201414182933 A US201414182933 A US 201414182933A US 2014165061 A1 US2014165061 A1 US 2014165061A1
Authority
US
United States
Prior art keywords
resource
jobs
computer
implemented method
determining
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.)
Abandoned
Application number
US14/182,933
Inventor
Daniel H. Greene
Maurice Chu
Haitham Hindi
Bryan T. Preas
Nitin Parekh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Palo Alto Research Center Inc
Original Assignee
Palo Alto Research Center Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Palo Alto Research Center Inc filed Critical Palo Alto Research Center Inc
Priority to US14/182,933 priority Critical patent/US20140165061A1/en
Publication of US20140165061A1 publication Critical patent/US20140165061A1/en
Assigned to PALO ALTO RESEARCH CENTER INCORPORATED reassignment PALO ALTO RESEARCH CENTER INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHU, MAURICE, GREENE, DANIEL H., HINDI, HAITHAM, PAREKH, NITIN
Assigned to PALO ALTO RESEARCH CENTER INCORPORATED reassignment PALO ALTO RESEARCH CENTER INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PREAS, BRYAN
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the disclosed technology relates to the field of virtual machines (VMs) in data centers and, more particularly, to various techniques pertaining to the statistical packing of virtual machine resource requirements in data centers.
  • VMs virtual machines
  • Data centers are frequently used by various types of entities for a wide variety of purposes.
  • Service providers such as phone companies, cable networks, power companies, retailers, etc., commonly store and access their customers' data in ‘server farms,’ or data centers.
  • ‘data center’ refers to a facility used to house computer systems and associated components, such as telecommunications and storage systems.
  • a data center generally includes not only the computer systems, but also back-up power supplies, redundant data communications connections, environmental controls such as air conditioning and fire suppression, security systems and devices, etc.
  • Data center operations generally revolve around customer service levels. For example, a particular customer may desire to have a defined quality of service for that customer's computations or data communications.
  • the quality of service may have different requirements for different customers. For example, for one customer, the key measure of the quality of service may involve how fast an application responds when accessed remotely. For another customer, the quality of service may involve the speed or bandwidth of connections provided to that customer's subscriber.
  • a data center may commit to provide a particular service level for a given customer in the form of a formally negotiated service level agreement (SLA).
  • SLA typically specifies levels of availability, serviceability, performance, operation, billing, etc., and may even specify penalties in the event of violations of the SLA.
  • SLAs commonly address performance measurement, problem management, customer duties, warranties, disaster recovery, and termination of agreement. For example, an SLA may demand that a particular job get a certain amount of resources with a specified probability. The SLA may also specify a limit on the amount of resources to be assigned to a certain job or group of jobs.
  • Virtualization generally refers to a technique for hiding physical characteristics of computing resources from the way in which other systems, applications, or end users interact with those resources. This typically includes making a single physical resource (e.g., a server, operating system, application, storage device, etc.) appear to function as multiple logical resources. Virtualization may also include making multiple physical resources appear as a single logical resource. In addition, it may include making one physical resource appear, with somewhat different characteristics, as one logical resource.
  • a single physical resource e.g., a server, operating system, application, storage device, etc.
  • Virtualization may also include making multiple physical resources appear as a single logical resource. In addition, it may include making one physical resource appear, with somewhat different characteristics, as one logical resource.
  • VMWare, Inc. is an example of a publicly-listed company that offers virtualization software products, such as VMWare's ESX Server.
  • Virtualization can essentially let one computer do the job of multiple computers, by sharing the resources of a single computer across multiple environments.
  • Virtual machines e.g., virtual servers and virtual desktops
  • Virtual machines can provide users with the ability to host multiple operating systems and multiple applications both locally and in remote locations, freeing users from physical and geographical limitations.
  • users can get a high availability of resources, better desktop management, increased security, and improved disaster recovery processes.
  • Virtual machines serve a wide variety of purposes in a given computer system. For example, virtual machines may be used to provide multiple users with simultaneous access to the computer system. Each user may execute applications in a different virtual machine, and the virtual machines may be scheduled for execution on the computer system hardware. Virtual machines may be used to consolidate tasks that were previously running on separate computer systems, for example, by assigning each task to a virtual machine and running the virtual machines on fewer computer systems. Virtual machines may also be used to provide increased availability. If the computer system fails, for example, tasks that were executing in virtual machines on the computer system may be transferred to similar virtual machines on another computer system.
  • Using virtual servers enables the migration of processing tasks to other physical servers or resources transparently to the consumers of the services provided by the virtual server, where the consumer may be a user, a process, another computer, etc.
  • a ‘consumer’ is typically any entity that uses a process or service within the power control system. This is contrasted with a ‘customer’ which is an identified entity to which the data center provides services according to a service level agreement. Performance levels are generally tracked by customers.
  • a virtual server differs greatly from a physical server.
  • a virtual server typically appears to be a single server to entities accessing it, while it may actually be a partition or subset of a physical server. It may also appear as a single server but actually be comprised of several physical servers.
  • a virtual server is created through a virtualization process, as discussed above.
  • virtualization allows multiple virtual machines (e.g., virtual servers) to share the physical resources (e.g., CPU, memory, disk, and networking resources) of the same physical machine(s) in the data center.
  • virtual machines e.g., virtual servers
  • the physical resources e.g., CPU, memory, disk, and networking resources
  • Each virtual machine typically has a corresponding specification of resource requirements that determines how much of the physical resources should be reserved for the given virtual machine.
  • FIG. 1 shows an exemplary embodiment of a data center.
  • FIG. 2 is a flowchart of a first exemplary computer-implemented method of managing resources in a virtual machine environment.
  • FIG. 3 is a flowchart of a second exemplary computer-implemented method of managing resources in a virtual machine environment.
  • FIG. 4 is a flowchart of a third exemplary computer-implemented method of managing resources in a virtual machine environment.
  • FIG. 1 shows an exemplary architecture 10 for a data center.
  • the data center includes multiple physical devices 14 (e.g., servers).
  • a physical device 14 is an actual machine, such as a quad-, dual- or single-core computing system that provides a particular service. Examples include communications servers, database servers, applications servers, etc.
  • each physical device 14 is depicted as being having at least one virtual machine 17 (e.g., virtual server) operating on it.
  • a virtual machine 17 may include an application running on top of an operating system, for example.
  • the virtual machine 17 allows a low-level module 18 (e.g., a service/power controller) to task the physical devices 14 with processing tasks in virtual machines based in part on the resource needs of the virtual machines and the resource of the physical devices 14 .
  • the low-level module 18 may be referred to as a controller or scheduler.
  • the controller 18 can schedule the processing of virtual machines, or the controller 18 can schedule individual tasks to be performed within virtual machines.
  • job generally refers to the virtual machine or task being scheduled.
  • the controller 18 is shown as being a single controller, while it may actually be distributed across several computers, processing cores, etc.
  • the controller 18 can migrate jobs between physical machines and adjust the power consumption of physical machines.
  • one or more of the individual physical devices 14 may have local controllers such as 16 .
  • the only devices depicted in the example are servers, other types of devices may be included, such as power supplies, storage arrays or other types of storage, tape decks, etc.
  • the centralized controller 18 may be coupled to data lines 20 .
  • the functions of the data center generally revolves around data processing of some sort, and the controller may merely exist in the same power distribution structure as the data lines, or the power controller may monitor or affect the operation of the data lines.
  • the power controller may merely exist in the same power structure as the power lines 22 , or the controller 18 may take a more active role with the power lines 22 .
  • the power lines 22 come in from ‘the grid,’ or the local power infrastructure that generally includes transmission lines, converters, transformers, power switches, etc.
  • the resources requirements for each virtual machine in a given virtual machine environment can be predicted statistically and potentially described by a histogram. Predictions of resource requirements can be performed by various techniques, such as “time-of-day conditioning” (i.e., conditioning based on the time of day certain resources are used) and Markov modeling (i.e., reaching future states through a probabilistic rather than deterministic process). However, one of skill in the art will recognize that any of a number of known modeling techniques can be used to generate such histograms.
  • Time-of-day conditioning and Markov modeling are typically based on observations of historic resource usage data. Each technique is capable of capturing resource needs that may be extreme at certain times of day and extreme for brief periods of time, and that may occur at unpredictable times. Such behavior typically results in the wasting of resources, because resource requirements are usually set unnecessarily high all of the time.
  • Predicted resource needs may take into account various types of information, such as resource usage based on time of day, day of week, what amount of resources a given job needed in a preceding time interval (e.g., within the last ten minutes), and any other information that can be used to improve the predictability of resource usage by the job.
  • information such as resource usage based on time of day, day of week, what amount of resources a given job needed in a preceding time interval (e.g., within the last ten minutes), and any other information that can be used to improve the predictability of resource usage by the job.
  • the predicted resource needs are provided in the form of histograms, which allow for considerable flexibility in the kind of modeling used to predict resource requirements. Prediction and packing can be performed at different frequencies.
  • packing (or “packing together”) generally refers to a technique intended to reduce a total amount of resources required by a group of jobs in a virtual machine environment by considering the resource needs of the group of jobs as a whole as well as the resource needs of each of the jobs individually.
  • Convolving histograms provides a distribution of the sum of the resource requirements of several virtual machines, assuming that their resource needs are statistically independent.
  • virtual machines can be scheduled together in a pool, with their total resource needs represented as a single histogram that captures their correlated behavior. This pool can then participate in the packing techniques described herein.
  • Dependent virtual machines can also be segregated into several different pools, where the members of the pool are not highly correlated. In these instances, the packing techniques described herein are applied separately to each pool.
  • the packing techniques can include using a specification of required provisioning success as input.
  • a provided service level agreement (SLA) for a customer requires a certain probability p that resource needs are met for a given virtual machine.
  • the probability p can be specified directly in the SLA or derived from other information in the SLA.
  • an SLA may specify that resource needs for a virtual machine are to be met all the time (with a penalty for failing to do so), in which situation the probability p would typically be assigned a small value so that failure (and penalties) would be infrequent, at most.
  • a value for p can be determined that might be higher but would still meet a customer's expectations.
  • SLAs may include caps on certain criteria such as maximum resource needs.
  • Embodiments of the disclosed technology can take as input various types of parameters.
  • input parameters include a prediction of resource needs for at least one virtual machine (e.g., presented as a histogram), and a required provisioning success (e.g., a probability p corresponding to a maximum rate of failure required to provide full resource needs).
  • FIG. 2 is a flowchart of an exemplary computer-implemented method 200 of managing resources in a virtual machine environment.
  • a required provisioning success is determined for each of multiple jobs to be scheduled in a given virtual machine environment.
  • the required provisioning success can be derived from a corresponding service level agreement (SLA), which can explicitly or implicitly provide information pertaining to the probability requirement.
  • SLA service level agreement
  • a prediction of resource needs is determined for each of the jobs.
  • the prediction can indicate an amount of resources needed by a particular job for it to properly execute, for example. Determining the prediction 204 can include using one or more techniques such as time of day conditioning and Markov modeling.
  • Steps 202 and 204 can be performed at different times or they can be performed at least partially or fully concurrently with each other.
  • a resource specification for each job can be determined based on the required provisioning success determined at 202 and the prediction determined at 204 .
  • the resource specification can be in a form suitable for virtual machine scheduling systems.
  • the resource specification can, for example, include minimum and maximum resource requirements for the virtual machines. The resource specification can thus result in a reduction of the total resources reserved by the virtual machines in a cluster.
  • the resource specification determined for each job can be provided to a lower-level scheduling module.
  • the lower-level scheduling module can perform various types of scheduling-related operations with respect to the given jobs, such as scheduling jobs that have not been scheduled yet, consolidating jobs on fewer physical servers, and adjusting the schedule for jobs on the same physical server.
  • the step of determining a prediction of resource needs 204 can be repeated (e.g., at 210 ). Responsive to the repeated determination of the prediction of resource needs, as well as the previously determined required provisioning success, the previously determined resource specification can be adjusted. For example, the techniques used at 206 can be re-applied here.
  • an optimization algorithm e.g., a greedy packing algorithm
  • a greedy packing algorithm can be used to find a packing that, while desirable, may not represent the best-case scenario (e.g., maximum packing).
  • Such embodiments are generally preferable in situations where approximation speed is prioritized higher than maximum packing ability.
  • these embodiments provide fast approximation that still achieves some or most of the benefit of statistical packing while potentially erring in reserving more resources than are actually required. Such erring, however, is typically only very slight in inconsequential, particularly in light of the advantageous packing.
  • an action list can be formed.
  • jobs having the most severe requirements can be placed at the beginning.
  • the action list can then be processed in order, and a resource specification can be chosen for each virtual machine.
  • a virtual machine can be given a resource specification consisting of a minimum resource reservation that will insure that the virtual machine will have all the resources it needs with a failure probability less than p.
  • the algorithm may discover that it has already made enough individual minimum resource reservations such that it can ensure that the total allocation for a resource pool (e.g., an amount of resources intended for use by a group of jobs rather than a single job) is large enough that the combined requirements of the virtual machines sharing the pool have a failure probability that is not greater than the failure probability p for the individual virtual machine being processed, in which case no individual reservation may need to be made for the virtual machine being processed or for subsequent virtual machines on the action list.
  • a resource pool e.g., an amount of resources intended for use by a group of jobs rather than a single job
  • the algorithm can allocate a large amount of resources to premium jobs until the total allocation reaches a level that is sufficient to satisfy a low failure probability for the pool, for example. Additional jobs can be deemed to require no separate allocation because they effectively share the reservation of the premium jobs.
  • FIG. 3 is a flowchart of an exemplary computer-implemented method 300 of managing resources for virtual machines in a virtual machine environment.
  • a required provisioning success corresponding to each of several jobs in the virtual machine environment can be determined.
  • the required provisioning success can be derived from a corresponding service level agreement (SLA).
  • a predicted resource need corresponding to each of the jobs can be determined.
  • the predicted resource need can be based on a-priori information given by the user in configuring the job, and can also be based on historical data from previous processing of the job.
  • a prioritized listing of the jobs can be formed.
  • the jobs can be ranked according to a level of importance assigned to each of them.
  • the level of importance can be determined for each job based at least in part on the required provisioning success determined at 302 as well as other pertinent information provided by the customer (e.g., in an SLA) such as a severity level, for example.
  • a resource specification can be assigned to each of the jobs based on the prioritized listing, the job's previously determined required provisioning success, and the job's predicted resource need.
  • the jobs are processed in order (e.g., according to level of importance) to determine an individual resource specification based on each job's individual needs as well as any resources that have been specified for the group of higher priority jobs earlier in the list and will be available to the job if they are not fully utilized by the higher priority group.
  • the following exemplary procedure (“ReserveIndividual”) describes how a reservation can be determined for a single virtual machine.
  • the input includes the virtual machine's predicted resource need described by a histogram (“hist”) (e.g., an array of frequencies of resource needs where hist[i] is the probability that the virtual machine will need a resource amount between i*histStep and (i+1)*histStep).
  • hist e.g., an array of frequencies of resource needs where hist[i] is the probability that the virtual machine will need a resource amount between i*histStep and (i+1)*histStep).
  • the input also includes a required provisioning success that is specified with an allowed failure probability (“prob”):
  • a smaller total reservation can be achieved if the reservations are computed for a group of virtual machines together, as described in the following exemplary procedure (“ReserveGroup”).
  • the histograms for all the virtual machines are given in a two dimensional array (“histograms[ . , . ]”).
  • the exemplary “ReserveGroup” procedure forms an action list where the jobs with the most severe requirements are placed at the beginning of the list.
  • the action list is processed in order, and an allocation is chosen for each virtual machine according to one of the following two strategies: either the virtual machine is given its individual requirement necessary to meet its allowed failure probability (e.g., prob[j] from the previous procedure), or the total allocation for the pool is ensured to be large enough that the combined virtual machine requirements will not fail with a probability greater than the probability prob[j] for the individual virtual machine being processed.
  • an exact optimal solution can be determined.
  • a binary search can be performed to find an optimal “total” reservation for the pool. For example, the feasibility of each postulated value for the “total” can be tested by computing individual reservations. If the individual reservations sum to less than the postulated “total,” then the “total” can be deemed to be feasible. The binary search can be used to find the smallest possible “total” that is feasible. Individual reservations for virtual machines can be computed by considering the joint distribution of each individual virtual machine's histogram and a combined histogram for all of the other virtual machines in the environment.
  • individual reservations can be computed with a function (see, e.g., the “Required” function below) that, when considering a single virtual machine in a given environment, can consider the resource needs of all of the other virtual machines in the environment represented by a (cumulative) convolution (see, e.g., “accumulatedOther” below) and then find the smallest reservation i such that the probability that the virtual machine needs more than its resource reservation (and cannot obtain extra resources from the resource pool) is less than a specified failure probability.
  • a function see, e.g., the “Required” function below
  • the reservation i represents the substantially smallest value such that the probability that the virtual machine requires j (which is more than i) and that the “accumulatedOther” requires more than the “total” minus j, is less than the specified failure probability.
  • FIG. 4 is a flowchart of an exemplary computer-implemented method 400 of managing resources for virtual machines in a virtual machine environment.
  • a required provisioning success corresponding to each of several jobs in the virtual machine environment can be determined.
  • the required provisioning success can be derived from a corresponding SLA.
  • a predicted resource need corresponding to each of the jobs can be determined.
  • the predicted resource need can be based on a-priori information given by the user in configuring the job, and can also be based on historical data from previous processing of the job.
  • a total resource specification can be postulated. Once the total resource specification has been postulated, individual resource specifications for the virtual machines can be determined based on the postulated total, as shown at 408 .
  • a comparison can be made between the total of the individual resource specifications (determined at 408 ) and the total resource specification (postulated at 406 ). If an improvement can be made, then a new total resource specification can be postulated (as shown at 412 ) and processing can return to 408 . Otherwise, if there does not seem to be any indication of further improvement resulting from continued processing, the process can finish, as shown at 414 .
  • the techniques described herein can achieve a reduced total resource specification by considering the resource needs of a group of jobs when the resource needs of individual jobs are determined.
  • the group of jobs often has more predictable needs, which typically means that there is less need for excess individual resource specification.
  • the group is a collection of higher priority jobs that were already specified.
  • the group is the entire collection of jobs, whose specification is postulated.
  • two or more of the techniques described above can be flexibly implemented in combination with one another.
  • an approximation-type implementation can be utilized and, if certain parameters are met (e.g., if there is still enough processing time left), an exact-optimal-solution-type implementation can also be utilized (e.g., to refine the solution).
  • the techniques described herein can provide an output representing a minimum reservation that can be made for each applicable virtual machine.
  • This minimum reservation can be a typical parameter in a virtual machine specification language (e.g., in VMWare and other virtualization products). These reservations can be computed such that the virtual machines can be combined in a single pool on a cluster of physical machines.
  • a scheduler typically part of virtualization products
  • Exemplary embodiments of the disclosed technology can assume that minimum resources will be met first but make no assumption about how resources in excess of minimums are to be shared among virtual machines.
  • Application of the techniques described herein can desirably allow data center operators and users (e.g., customers) rely on more accurate and more compact physical resource reservations in a data center, which provides various advantages. For example, the freeing of physical resources for more customers will typically result in improved business performance for the data center, and the reduction of the number of running physical servers will reduce energy costs for data center operators and reduce costs for users.
  • the various advantageous techniques described herein may be implemented as computer-implemented methods. Additionally, they may be implemented as instructions stored on a tangible computer-readable medium that, when executed, cause a computer to perform the associated methods.
  • tangible computer-readable media include, but are not limited, to disks (such as floppy disks, rigid magnetic disks, optical disks, etc.), drives (e.g., hard disk drives), semiconductor or solid state memory (e.g., RAM and ROM), and various other types of recordable media such as CD-ROM, DVD-ROM, and magnetic tape devices.

Abstract

A computer-implemented method of managing resources in a virtual machine environment can include determining a specification of provisioning success corresponding to each of a plurality of jobs in the virtual machine environment, forming a prioritized listing of the plurality of jobs and, responsive to the specification of provisioning success and the prioritized listing, providing a resource specification for each of the plurality of jobs. The providing can include determining a first prediction of resource needs corresponding to each of a first subset of the plurality of jobs and determining a second prediction of resource needs corresponding to a second subset of the plurality of jobs.

Description

    CROSS-REFERENCE TO RELATED APPLICATION
  • This application is a divisional of U.S. patent application Ser. No. 12/253,111, titled “STATISTICAL PACKING OF RESOURCE REQUIREMENTS IN DATA CENTERS,” which was filed on Oct. 16, 2008 and issued on Feb. 18, 2014 as U.S. Pat. No. 8,656,404, the content of which is hereby fully incorporated by reference herein.
  • TECHNICAL FIELD
  • The disclosed technology relates to the field of virtual machines (VMs) in data centers and, more particularly, to various techniques pertaining to the statistical packing of virtual machine resource requirements in data centers.
  • BACKGROUND
  • Data centers are frequently used by various types of entities for a wide variety of purposes. Service providers such as phone companies, cable networks, power companies, retailers, etc., commonly store and access their customers' data in ‘server farms,’ or data centers. For purposes of the present specification, ‘data center’ refers to a facility used to house computer systems and associated components, such as telecommunications and storage systems. A data center generally includes not only the computer systems, but also back-up power supplies, redundant data communications connections, environmental controls such as air conditioning and fire suppression, security systems and devices, etc.
  • Data center operations generally revolve around customer service levels. For example, a particular customer may desire to have a defined quality of service for that customer's computations or data communications. The quality of service may have different requirements for different customers. For example, for one customer, the key measure of the quality of service may involve how fast an application responds when accessed remotely. For another customer, the quality of service may involve the speed or bandwidth of connections provided to that customer's subscriber.
  • A data center may commit to provide a particular service level for a given customer in the form of a formally negotiated service level agreement (SLA). An SLA typically specifies levels of availability, serviceability, performance, operation, billing, etc., and may even specify penalties in the event of violations of the SLA. SLAs commonly address performance measurement, problem management, customer duties, warranties, disaster recovery, and termination of agreement. For example, an SLA may demand that a particular job get a certain amount of resources with a specified probability. The SLA may also specify a limit on the amount of resources to be assigned to a certain job or group of jobs.
  • ‘Virtualization’ generally refers to a technique for hiding physical characteristics of computing resources from the way in which other systems, applications, or end users interact with those resources. This typically includes making a single physical resource (e.g., a server, operating system, application, storage device, etc.) appear to function as multiple logical resources. Virtualization may also include making multiple physical resources appear as a single logical resource. In addition, it may include making one physical resource appear, with somewhat different characteristics, as one logical resource.
  • VMWare, Inc., is an example of a publicly-listed company that offers virtualization software products, such as VMWare's ESX Server.
  • Virtualization can essentially let one computer do the job of multiple computers, by sharing the resources of a single computer across multiple environments. Virtual machines (e.g., virtual servers and virtual desktops) can provide users with the ability to host multiple operating systems and multiple applications both locally and in remote locations, freeing users from physical and geographical limitations. In addition to energy savings and lower capital expenses due to more efficient use of hardware resources, users can get a high availability of resources, better desktop management, increased security, and improved disaster recovery processes.
  • Virtual machines serve a wide variety of purposes in a given computer system. For example, virtual machines may be used to provide multiple users with simultaneous access to the computer system. Each user may execute applications in a different virtual machine, and the virtual machines may be scheduled for execution on the computer system hardware. Virtual machines may be used to consolidate tasks that were previously running on separate computer systems, for example, by assigning each task to a virtual machine and running the virtual machines on fewer computer systems. Virtual machines may also be used to provide increased availability. If the computer system fails, for example, tasks that were executing in virtual machines on the computer system may be transferred to similar virtual machines on another computer system.
  • Using virtual servers enables the migration of processing tasks to other physical servers or resources transparently to the consumers of the services provided by the virtual server, where the consumer may be a user, a process, another computer, etc. A ‘consumer’ is typically any entity that uses a process or service within the power control system. This is contrasted with a ‘customer’ which is an identified entity to which the data center provides services according to a service level agreement. Performance levels are generally tracked by customers.
  • A virtual server differs greatly from a physical server. A virtual server typically appears to be a single server to entities accessing it, while it may actually be a partition or subset of a physical server. It may also appear as a single server but actually be comprised of several physical servers. A virtual server is created through a virtualization process, as discussed above.
  • Thus, in a given data center, virtualization allows multiple virtual machines (e.g., virtual servers) to share the physical resources (e.g., CPU, memory, disk, and networking resources) of the same physical machine(s) in the data center. Each virtual machine typically has a corresponding specification of resource requirements that determines how much of the physical resources should be reserved for the given virtual machine.
  • However, a typical specification of resource requirements for a virtual machine undesirably overbooks or reserves more physical resources than are actually needed most of the time by the virtual machine, which results in the unnecessary wasting of physical resources. Thus, there exists a need for greater reductions in cost and power consumption by virtual machines in data centers.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 shows an exemplary embodiment of a data center.
  • FIG. 2 is a flowchart of a first exemplary computer-implemented method of managing resources in a virtual machine environment.
  • FIG. 3 is a flowchart of a second exemplary computer-implemented method of managing resources in a virtual machine environment.
  • FIG. 4 is a flowchart of a third exemplary computer-implemented method of managing resources in a virtual machine environment.
  • DETAILED DESCRIPTION OF THE EMBODIMENTS
  • FIG. 1 shows an exemplary architecture 10 for a data center. In this embodiment, the data center includes multiple physical devices 14 (e.g., servers). A physical device 14 is an actual machine, such as a quad-, dual- or single-core computing system that provides a particular service. Examples include communications servers, database servers, applications servers, etc.
  • As such, each physical device 14 is depicted as being having at least one virtual machine 17 (e.g., virtual server) operating on it. A virtual machine 17 may include an application running on top of an operating system, for example. This discussion is provided merely for demonstrative purposes and no limitation of location or logical hierarchy is intended, nor should one be implied.
  • In the example, the virtual machine 17 allows a low-level module 18 (e.g., a service/power controller) to task the physical devices 14 with processing tasks in virtual machines based in part on the resource needs of the virtual machines and the resource of the physical devices 14. The low-level module 18 may be referred to as a controller or scheduler. The controller 18 can schedule the processing of virtual machines, or the controller 18 can schedule individual tasks to be performed within virtual machines. As used herein, the term “job” generally refers to the virtual machine or task being scheduled.
  • In the example, the controller 18 is shown as being a single controller, while it may actually be distributed across several computers, processing cores, etc. The controller 18 can migrate jobs between physical machines and adjust the power consumption of physical machines. In addition to the central controller 18, one or more of the individual physical devices 14 may have local controllers such as 16. Further, while the only devices depicted in the example are servers, other types of devices may be included, such as power supplies, storage arrays or other types of storage, tape decks, etc.
  • The centralized controller 18 may be coupled to data lines 20. The functions of the data center generally revolves around data processing of some sort, and the controller may merely exist in the same power distribution structure as the data lines, or the power controller may monitor or affect the operation of the data lines.
  • Similarly, the power controller may merely exist in the same power structure as the power lines 22, or the controller 18 may take a more active role with the power lines 22. The power lines 22 come in from ‘the grid,’ or the local power infrastructure that generally includes transmission lines, converters, transformers, power switches, etc.
  • In certain embodiments, the resources requirements for each virtual machine in a given virtual machine environment can be predicted statistically and potentially described by a histogram. Predictions of resource requirements can be performed by various techniques, such as “time-of-day conditioning” (i.e., conditioning based on the time of day certain resources are used) and Markov modeling (i.e., reaching future states through a probabilistic rather than deterministic process). However, one of skill in the art will recognize that any of a number of known modeling techniques can be used to generate such histograms.
  • “Time-of-day conditioning” and Markov modeling are typically based on observations of historic resource usage data. Each technique is capable of capturing resource needs that may be extreme at certain times of day and extreme for brief periods of time, and that may occur at unpredictable times. Such behavior typically results in the wasting of resources, because resource requirements are usually set unnecessarily high all of the time.
  • Predicted resource needs may take into account various types of information, such as resource usage based on time of day, day of week, what amount of resources a given job needed in a preceding time interval (e.g., within the last ten minutes), and any other information that can be used to improve the predictability of resource usage by the job.
  • In certain embodiments, the predicted resource needs are provided in the form of histograms, which allow for considerable flexibility in the kind of modeling used to predict resource requirements. Prediction and packing can be performed at different frequencies. As used herein, “packing” (or “packing together”) generally refers to a technique intended to reduce a total amount of resources required by a group of jobs in a virtual machine environment by considering the resource needs of the group of jobs as a whole as well as the resource needs of each of the jobs individually.
  • Since virtual machine resource needs are typically well predicted over short periods of time, re-computing of the packing and adjusting resource requirements every 5-10 minutes can be very beneficial. The techniques described herein, however, can desirably be used to pack at a variety of frequencies.
  • Convolving histograms provides a distribution of the sum of the resource requirements of several virtual machines, assuming that their resource needs are statistically independent. When virtual machines are dependent, there are several options. For example, the virtual machines can be scheduled together in a pool, with their total resource needs represented as a single histogram that captures their correlated behavior. This pool can then participate in the packing techniques described herein. Dependent virtual machines can also be segregated into several different pools, where the members of the pool are not highly correlated. In these instances, the packing techniques described herein are applied separately to each pool.
  • The packing techniques can include using a specification of required provisioning success as input. In an exemplary embodiment of the disclosed technology, it is assumed that a provided service level agreement (SLA) for a customer requires a certain probability p that resource needs are met for a given virtual machine. The probability p can be specified directly in the SLA or derived from other information in the SLA. For example, an SLA may specify that resource needs for a virtual machine are to be met all the time (with a penalty for failing to do so), in which situation the probability p would typically be assigned a small value so that failure (and penalties) would be infrequent, at most. For SLAs that specify a less well-defined resource requirement, a value for p can be determined that might be higher but would still meet a customer's expectations. Additionally, SLAs may include caps on certain criteria such as maximum resource needs.
  • Embodiments of the disclosed technology can take as input various types of parameters. In exemplary embodiments, input parameters include a prediction of resource needs for at least one virtual machine (e.g., presented as a histogram), and a required provisioning success (e.g., a probability p corresponding to a maximum rate of failure required to provide full resource needs).
  • FIG. 2 is a flowchart of an exemplary computer-implemented method 200 of managing resources in a virtual machine environment.
  • At 202, a required provisioning success is determined for each of multiple jobs to be scheduled in a given virtual machine environment. For example, the required provisioning success can be derived from a corresponding service level agreement (SLA), which can explicitly or implicitly provide information pertaining to the probability requirement.
  • At 204, a prediction of resource needs is determined for each of the jobs. The prediction can indicate an amount of resources needed by a particular job for it to properly execute, for example. Determining the prediction 204 can include using one or more techniques such as time of day conditioning and Markov modeling.
  • Steps 202 and 204 can be performed at different times or they can be performed at least partially or fully concurrently with each other.
  • At 206, a resource specification for each job can be determined based on the required provisioning success determined at 202 and the prediction determined at 204. The resource specification can be in a form suitable for virtual machine scheduling systems. The resource specification can, for example, include minimum and maximum resource requirements for the virtual machines. The resource specification can thus result in a reduction of the total resources reserved by the virtual machines in a cluster.
  • At 208, the resource specification determined for each job can be provided to a lower-level scheduling module. For example, the lower-level scheduling module can perform various types of scheduling-related operations with respect to the given jobs, such as scheduling jobs that have not been scheduled yet, consolidating jobs on fewer physical servers, and adjusting the schedule for jobs on the same physical server.
  • In certain embodiments, the step of determining a prediction of resource needs 204 can be repeated (e.g., at 210). Responsive to the repeated determination of the prediction of resource needs, as well as the previously determined required provisioning success, the previously determined resource specification can be adjusted. For example, the techniques used at 206 can be re-applied here.
  • In certain embodiments, an optimization algorithm (e.g., a greedy packing algorithm) can be used to find a packing that, while desirable, may not represent the best-case scenario (e.g., maximum packing). Such embodiments are generally preferable in situations where approximation speed is prioritized higher than maximum packing ability. In other words, these embodiments provide fast approximation that still achieves some or most of the benefit of statistical packing while potentially erring in reserving more resources than are actually required. Such erring, however, is typically only very slight in inconsequential, particularly in light of the advantageous packing.
  • In certain embodiments, an action list can be formed. In the action list, jobs having the most severe requirements can be placed at the beginning. The action list can then be processed in order, and a resource specification can be chosen for each virtual machine. For example, a virtual machine can be given a resource specification consisting of a minimum resource reservation that will insure that the virtual machine will have all the resources it needs with a failure probability less than p.
  • While processing the action list, the algorithm may discover that it has already made enough individual minimum resource reservations such that it can ensure that the total allocation for a resource pool (e.g., an amount of resources intended for use by a group of jobs rather than a single job) is large enough that the combined requirements of the virtual machines sharing the pool have a failure probability that is not greater than the failure probability p for the individual virtual machine being processed, in which case no individual reservation may need to be made for the virtual machine being processed or for subsequent virtual machines on the action list.
  • In this way, the algorithm can allocate a large amount of resources to premium jobs until the total allocation reaches a level that is sufficient to satisfy a low failure probability for the pool, for example. Additional jobs can be deemed to require no separate allocation because they effectively share the reservation of the premium jobs.
  • FIG. 3 is a flowchart of an exemplary computer-implemented method 300 of managing resources for virtual machines in a virtual machine environment.
  • At 302, a required provisioning success corresponding to each of several jobs in the virtual machine environment can be determined. For example, the required provisioning success can be derived from a corresponding service level agreement (SLA).
  • At 304, a predicted resource need corresponding to each of the jobs can be determined. For example, the predicted resource need can be based on a-priori information given by the user in configuring the job, and can also be based on historical data from previous processing of the job.
  • At 306, a prioritized listing of the jobs can be formed. For example, the jobs can be ranked according to a level of importance assigned to each of them. The level of importance can be determined for each job based at least in part on the required provisioning success determined at 302 as well as other pertinent information provided by the customer (e.g., in an SLA) such as a severity level, for example.
  • Once the prioritized listing has been created, a resource specification can be assigned to each of the jobs based on the prioritized listing, the job's previously determined required provisioning success, and the job's predicted resource need. At 308, the jobs are processed in order (e.g., according to level of importance) to determine an individual resource specification based on each job's individual needs as well as any resources that have been specified for the group of higher priority jobs earlier in the list and will be available to the job if they are not fully utilized by the higher priority group.
  • The following exemplary procedure (“ReserveIndividual”) describes how a reservation can be determined for a single virtual machine. In the example, the input includes the virtual machine's predicted resource need described by a histogram (“hist”) (e.g., an array of frequencies of resource needs where hist[i] is the probability that the virtual machine will need a resource amount between i*histStep and (i+1)*histStep). The input also includes a required provisioning success that is specified with an allowed failure probability (“prob”):
  • procedure ReserveIndividual(hist[.], prob)
    acc <− 0;
    i <− length of hist[.];
    while acc < prob do
    acc <− acc + hist[i];
    i <− i−1;
    return (i + 1) * histStep
  • A smaller total reservation can be achieved if the reservations are computed for a group of virtual machines together, as described in the following exemplary procedure (“ReserveGroup”). In the example, the histograms for all the virtual machines are given in a two dimensional array (“histograms[ . , . ]”).
  • procedure ReserveGroup(histgrams[.,.], probs[.])
    combined <− Convolve all histograms;
    for each individual virtual machine j do
    intercept <− ReserveIndividual(hist[j,.], prob[j]);
    otherIntercept <− ReserveIndividual(combined[.], prob[j]);
    actionList[j] <− {j, intercept, otherIntercept}
    solution[j] <− 0;
    sort actionList in descending order of its third component
     “otherIntercept”
    acc <− 0
    while actionList has elements do
    front <− remove first element from actionList
    if front[3] > acc then
    allocation <− Min[front[2], front[3] − acc];
    solution[front[1]] <− allocation;
    acc <− acc + allocation;
    else
    return solution
  • The exemplary “ReserveGroup” procedure forms an action list where the jobs with the most severe requirements are placed at the beginning of the list. The action list is processed in order, and an allocation is chosen for each virtual machine according to one of the following two strategies: either the virtual machine is given its individual requirement necessary to meet its allowed failure probability (e.g., prob[j] from the previous procedure), or the total allocation for the pool is ensured to be large enough that the combined virtual machine requirements will not fail with a probability greater than the probability prob[j] for the individual virtual machine being processed.
  • In certain embodiments, an exact optimal solution can be determined. In these embodiments, a binary search can be performed to find an optimal “total” reservation for the pool. For example, the feasibility of each postulated value for the “total” can be tested by computing individual reservations. If the individual reservations sum to less than the postulated “total,” then the “total” can be deemed to be feasible. The binary search can be used to find the smallest possible “total” that is feasible. Individual reservations for virtual machines can be computed by considering the joint distribution of each individual virtual machine's histogram and a combined histogram for all of the other virtual machines in the environment.
  • For an exemplary postulated value of a “total” allocation, individual reservations can be computed with a function (see, e.g., the “Required” function below) that, when considering a single virtual machine in a given environment, can consider the resource needs of all of the other virtual machines in the environment represented by a (cumulative) convolution (see, e.g., “accumulatedOther” below) and then find the smallest reservation i such that the probability that the virtual machine needs more than its resource reservation (and cannot obtain extra resources from the resource pool) is less than a specified failure probability. In certain embodiments, the reservation i represents the substantially smallest value such that the probability that the virtual machine requires j (which is more than i) and that the “accumulatedOther” requires more than the “total” minus j, is less than the specified failure probability.
  • procedure BuildAccumulatedOther(histograms[.,.], j)
    combinedOther <− convolve all histograms except for j
    acc <− 0;
    i <− length of combinedOther;
    while i > 0 do
     acc <− acc + combinedOther[i];
     accumulatedOther[i] <− acc;
     i <− i − 1;
    return accumulatedOther[.];
    procedure Required(accumulatedOther[.], hist[.], total, prob)
    accFailure <− 0,
    i <− length of hist[.]
    while accFailure < prob do
    if i < total then
    otherFailure <− accumulatedOther[total − i];
    else
    otherFailure <− 1.0;
    accFailure <− hist[i] * otherFailure;
    i <− i − 1;
    return i+ 1;
  • FIG. 4 is a flowchart of an exemplary computer-implemented method 400 of managing resources for virtual machines in a virtual machine environment.
  • At 402, a required provisioning success corresponding to each of several jobs in the virtual machine environment can be determined. For example, the required provisioning success can be derived from a corresponding SLA.
  • At 404, a predicted resource need corresponding to each of the jobs can be determined. For example, the predicted resource need can be based on a-priori information given by the user in configuring the job, and can also be based on historical data from previous processing of the job.
  • At 406, a total resource specification can be postulated. Once the total resource specification has been postulated, individual resource specifications for the virtual machines can be determined based on the postulated total, as shown at 408.
  • At 410, a comparison can be made between the total of the individual resource specifications (determined at 408) and the total resource specification (postulated at 406). If an improvement can be made, then a new total resource specification can be postulated (as shown at 412) and processing can return to 408. Otherwise, if there does not seem to be any indication of further improvement resulting from continued processing, the process can finish, as shown at 414.
  • Below is an exemplary procedure (“ReserveGroupExact”) that can be used in conjunction with certain embodiments of the disclosed technology:
  • procedure ReserveGroupExact(histograms[.,.], probs[.])
    combined <− convolve all histograms
    for each VM j do
    accumulateOther[j] <− BuildAccumulateOther[histograms[.,.],
    j];
    maxTotal <− ReserveIndividual[combined, min of probs];
    minTotal <− 0;
    solution <− TestSolution[maxTotal,...];
    while maxTotal > minTotal + 1 do
    middle <− Floor[ (maxTotal + minTotal)/2 ];
    temp <− TestSolution[middle,...];
    if temp is not feasible
    minTotal <− middle;
    else
    maxTotal <− middle;
    solution <− temp;
     ];
    solutionTotal <− sum of solution;
    extra = maxTotal − solutionTotal;
    distribute extra evenly among solution;
    procedure TestSolution(total,accumulateOther[.],histograms[.,.],
    probs[.]])
    for each VM i do
    required[i] <− Required[accumulateOther[i], histograms[i],
    total, probs[i]];
    if sum of required does not exceed total
    return required (indicating it is feasible)
    else
    return infeasible
  • The techniques described herein can achieve a reduced total resource specification by considering the resource needs of a group of jobs when the resource needs of individual jobs are determined. The group of jobs often has more predictable needs, which typically means that there is less need for excess individual resource specification. In the example of FIG. 3, the group is a collection of higher priority jobs that were already specified. In the example of FIG. 4, the group is the entire collection of jobs, whose specification is postulated. One having ordinary skill in the art will understand that a number of possible choices exist to reduce uncertainty and reduce the resource specifications.
  • The techniques described herein typically assume that the given jobs are independent, although such techniques may be modified to handle a virtual environment having multiple jobs, some of which may be dependent upon other jobs in the environment.
  • Additionally, two or more of the techniques described above can be flexibly implemented in combination with one another. For example, in some embodiments, an approximation-type implementation can be utilized and, if certain parameters are met (e.g., if there is still enough processing time left), an exact-optimal-solution-type implementation can also be utilized (e.g., to refine the solution).
  • The techniques described herein can provide an output representing a minimum reservation that can be made for each applicable virtual machine. This minimum reservation can be a typical parameter in a virtual machine specification language (e.g., in VMWare and other virtualization products). These reservations can be computed such that the virtual machines can be combined in a single pool on a cluster of physical machines. A scheduler (typically part of virtualization products) can allocate resources and locate jobs on physical machines to meet the minimum reservations first, before allocating excess resource to other jobs. Exemplary embodiments of the disclosed technology can assume that minimum resources will be met first but make no assumption about how resources in excess of minimums are to be shared among virtual machines.
  • Application of the techniques described herein can desirably allow data center operators and users (e.g., customers) rely on more accurate and more compact physical resource reservations in a data center, which provides various advantages. For example, the freeing of physical resources for more customers will typically result in improved business performance for the data center, and the reduction of the number of running physical servers will reduce energy costs for data center operators and reduce costs for users.
  • The various advantageous techniques described herein may be implemented as computer-implemented methods. Additionally, they may be implemented as instructions stored on a tangible computer-readable medium that, when executed, cause a computer to perform the associated methods. Examples of tangible computer-readable media include, but are not limited, to disks (such as floppy disks, rigid magnetic disks, optical disks, etc.), drives (e.g., hard disk drives), semiconductor or solid state memory (e.g., RAM and ROM), and various other types of recordable media such as CD-ROM, DVD-ROM, and magnetic tape devices.
  • It will be appreciated that several of the above-disclosed and other features and functions, or alternatives thereof, may be desirably combined into many other different systems or applications. Also that various presently unforeseen or unanticipated alternatives, modifications, variations, or improvements therein may be subsequently made by those skilled in the art which are also intended to be encompassed by the following claims.

Claims (14)

What is claimed is:
1. A computer-implemented method of managing resources for at least one virtual machine in a virtual machine environment, comprising:
determining a specification of provisioning success corresponding to each of a plurality of jobs in the virtual machine environment;
forming a prioritized listing of the plurality of jobs; and
responsive to the specification of provisioning success and the prioritized listing, providing a resource specification for each of the plurality of jobs, wherein the providing comprises:
determining a first prediction of resource needs corresponding to each of a first subset of the plurality of jobs; and
determining a second prediction of resource needs corresponding to a second subset of the plurality of jobs.
2. The computer-implemented method of claim 1, wherein the first subset of the plurality of jobs comprises jobs having a resource specification that meets or exceeds a specified severity level.
3. The computer-implemented method of claim 1, further comprising providing a first resource specification corresponding to each of the first subset of the plurality of jobs.
4. The computer-implemented method of claim 3, further comprising providing a second resource specification corresponding to a resource pool corresponding to the second subset of the plurality of jobs.
5. The computer-implemented method of claim 4, wherein the resource pool comprises an amount of resources remaining after the first resource specification corresponding to each of the first subset of the plurality of jobs has been provided.
6. The computer-implemented method of claim 1, wherein the second prediction of resource needs meets or exceeds a specified probability threshold.
7. A computer-implemented method of managing resources for at least one virtual machine, comprising:
determining a failure probability for a plurality of jobs corresponding to the at least one virtual machine;
determining a prediction of resource needs corresponding to each of the plurality of jobs;
generating a total prediction of resource needs representing a sum of each prediction of resource needs; and
determining whether the total prediction of resource needs is below a specified threshold.
8. The computer-implemented method of claim 7, wherein, responsive to determining that the total prediction of resource needs is below the specified threshold, generating a resource specification corresponding to each of the plurality of jobs.
9. The computer-implemented method of claim 7, wherein, responsive to determining that the total prediction of resource needs meets or exceeds the specified threshold, adjusting the specified threshold.
10. The computer-implemented method of claim 9, further comprising repeating determining whether the total prediction of resource needs is below the adjusted specified threshold.
11. The computer-implemented method of claim 10, wherein, responsive to determining that the total prediction of resource needs is below the adjusted specified threshold, generating a resource specification corresponding to each of the plurality of jobs.
12. The computer-implemented method of claim 10, wherein, responsive to determining that the total prediction of resource needs meets or exceeds the adjusted specified threshold, adjusting the specified threshold.
13. The computer-implemented method of claim 7, further comprising determining an initial resource test interval, wherein the specified threshold is at about a halfway point within the initial resource test interval.
14. The computer-implemented method of claim 12, further comprising determining an initial resource test interval, wherein adjusting the specified threshold comprises adjusting the initial resource test interval.
US14/182,933 2008-10-16 2014-02-18 Statistical packing of resource requirements in data centers Abandoned US20140165061A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/182,933 US20140165061A1 (en) 2008-10-16 2014-02-18 Statistical packing of resource requirements in data centers

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/253,111 US8656404B2 (en) 2008-10-16 2008-10-16 Statistical packing of resource requirements in data centers
US14/182,933 US20140165061A1 (en) 2008-10-16 2014-02-18 Statistical packing of resource requirements in data centers

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/253,111 Division US8656404B2 (en) 2008-10-16 2008-10-16 Statistical packing of resource requirements in data centers

Publications (1)

Publication Number Publication Date
US20140165061A1 true US20140165061A1 (en) 2014-06-12

Family

ID=42109636

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/253,111 Expired - Fee Related US8656404B2 (en) 2008-10-16 2008-10-16 Statistical packing of resource requirements in data centers
US14/182,933 Abandoned US20140165061A1 (en) 2008-10-16 2014-02-18 Statistical packing of resource requirements in data centers

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US12/253,111 Expired - Fee Related US8656404B2 (en) 2008-10-16 2008-10-16 Statistical packing of resource requirements in data centers

Country Status (1)

Country Link
US (2) US8656404B2 (en)

Cited By (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140082614A1 (en) * 2012-09-20 2014-03-20 Matthew D. Klein Automated profiling of resource usage
US9191458B2 (en) 2009-03-27 2015-11-17 Amazon Technologies, Inc. Request routing using a popularity identifier at a DNS nameserver
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US9332078B2 (en) 2008-03-31 2016-05-03 Amazon Technologies, Inc. Locality based content distribution
US9391949B1 (en) 2010-12-03 2016-07-12 Amazon Technologies, Inc. Request routing processing
US9407699B2 (en) 2008-03-31 2016-08-02 Amazon Technologies, Inc. Content management
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US9444759B2 (en) 2008-11-17 2016-09-13 Amazon Technologies, Inc. Service provider registration by a content broker
US9451046B2 (en) 2008-11-17 2016-09-20 Amazon Technologies, Inc. Managing CDN registration by a storage provider
US9479476B2 (en) 2008-03-31 2016-10-25 Amazon Technologies, Inc. Processing of DNS queries
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US9497259B1 (en) 2010-09-28 2016-11-15 Amazon Technologies, Inc. Point of presence management in request routing
US9515949B2 (en) 2008-11-17 2016-12-06 Amazon Technologies, Inc. Managing content delivery network service providers
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US9544394B2 (en) 2008-03-31 2017-01-10 Amazon Technologies, Inc. Network resource identification
US9571389B2 (en) 2008-03-31 2017-02-14 Amazon Technologies, Inc. Request routing based on class
US9590946B2 (en) 2008-11-17 2017-03-07 Amazon Technologies, Inc. Managing content delivery network service providers
US9608957B2 (en) 2008-06-30 2017-03-28 Amazon Technologies, Inc. Request routing using network computing components
US9628554B2 (en) 2012-02-10 2017-04-18 Amazon Technologies, Inc. Dynamic content delivery
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US9712325B2 (en) 2009-09-04 2017-07-18 Amazon Technologies, Inc. Managing secure content in a content delivery network
US9734472B2 (en) 2008-11-17 2017-08-15 Amazon Technologies, Inc. Request routing utilizing cost information
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US9787775B1 (en) 2010-09-28 2017-10-10 Amazon Technologies, Inc. Point of presence management in request routing
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9794216B2 (en) 2010-09-28 2017-10-17 Amazon Technologies, Inc. Request routing in a networked environment
US9800539B2 (en) 2010-09-28 2017-10-24 Amazon Technologies, Inc. Request routing management based on network components
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US9888089B2 (en) 2008-03-31 2018-02-06 Amazon Technologies, Inc. Client side cache management
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9893957B2 (en) 2009-10-02 2018-02-13 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US9930131B2 (en) 2010-11-22 2018-03-27 Amazon Technologies, Inc. Request routing processing
US9954934B2 (en) 2008-03-31 2018-04-24 Amazon Technologies, Inc. Content delivery reconciliation
US9985927B2 (en) 2008-11-17 2018-05-29 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US9992303B2 (en) 2007-06-29 2018-06-05 Amazon Technologies, Inc. Request routing utilizing client location information
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10015237B2 (en) 2010-09-28 2018-07-03 Amazon Technologies, Inc. Point of presence management in request routing
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US10027582B2 (en) 2007-06-29 2018-07-17 Amazon Technologies, Inc. Updating routing information based on client location
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US10157135B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Cache optimization
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US10225362B2 (en) 2012-06-11 2019-03-05 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US10230819B2 (en) 2009-03-27 2019-03-12 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US10491534B2 (en) 2009-03-27 2019-11-26 Amazon Technologies, Inc. Managing resources and entries in tracking information in resource cache components
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US10521348B2 (en) 2009-06-16 2019-12-31 Amazon Technologies, Inc. Managing resources using resource expiration data
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US10601767B2 (en) 2009-03-27 2020-03-24 Amazon Technologies, Inc. DNS query processing based on application information
US10616179B1 (en) 2015-06-25 2020-04-07 Amazon Technologies, Inc. Selective routing of domain name system (DNS) requests
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US11290418B2 (en) 2017-09-25 2022-03-29 Amazon Technologies, Inc. Hybrid content request routing system
US11604667B2 (en) 2011-04-27 2023-03-14 Amazon Technologies, Inc. Optimized deployment based upon customer locality

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8447993B2 (en) * 2008-01-23 2013-05-21 Palo Alto Research Center Incorporated Integrated energy savings and business operations in data centers
US7975165B2 (en) * 2009-06-25 2011-07-05 Vmware, Inc. Management of information technology risk using virtual infrastructures
US8631411B1 (en) 2009-07-21 2014-01-14 The Research Foundation For The State University Of New York Energy aware processing load distribution system and method
US9740533B2 (en) 2009-08-03 2017-08-22 Oracle International Corporation Altruistic dependable memory overcommit for virtual machines
US8245234B2 (en) * 2009-08-10 2012-08-14 Avaya Inc. Credit scheduler for ordering the execution of tasks
US20110040417A1 (en) * 2009-08-13 2011-02-17 Andrew Wolfe Task Scheduling Based on Financial Impact
US9098335B2 (en) 2009-12-23 2015-08-04 Citrix Systems, Inc. Systems and methods for managing spillover limits in a multi-core system
WO2011079182A2 (en) 2009-12-23 2011-06-30 Citrix Systems, Inc. Systems and methods for managing ports for rtsp across cores in a multi-core system
US8825859B2 (en) * 2009-12-23 2014-09-02 Citrix Systems, Inc. System and methods for mixed mode of IPv6 and IPv4 DNS of global server load balancing
DE102010029209B4 (en) 2010-05-21 2014-06-18 Offis E.V. A method for dynamically distributing one or more services in a network of a plurality of computers
US8423998B2 (en) * 2010-06-04 2013-04-16 International Business Machines Corporation System and method for virtual machine multiplexing for resource provisioning in compute clouds
US8626902B2 (en) 2010-12-03 2014-01-07 International Business Machines Corporation Modeling and reducing power consumption in large IT systems
US8695009B2 (en) 2011-04-18 2014-04-08 Microsoft Corporation Allocating tasks to machines in computing clusters
US9524179B2 (en) * 2011-05-05 2016-12-20 Microsoft Technology Licensing, Llc Virtual-machine-deployment-action analysis
US8856784B2 (en) 2011-06-14 2014-10-07 Vmware, Inc. Decentralized management of virtualized hosts
US9026630B2 (en) 2011-06-14 2015-05-05 Vmware, Inc. Managing resources in a distributed system using dynamic clusters
US8701107B2 (en) 2011-06-14 2014-04-15 Vmware, Inc. Decentralized management of virtualized hosts
US8997107B2 (en) * 2011-06-28 2015-03-31 Microsoft Technology Licensing, Llc Elastic scaling for cloud-hosted batch applications
US8826277B2 (en) * 2011-11-29 2014-09-02 International Business Machines Corporation Cloud provisioning accelerator
US9092265B2 (en) * 2012-02-26 2015-07-28 Palo Alto Research Center Incorporated Long-term resource provisioning with cascading allocations
US9374314B2 (en) 2012-02-26 2016-06-21 Palo Alto Research Center Incorporated QoS aware balancing in data centers
US9411619B2 (en) * 2012-03-08 2016-08-09 Vmware, Inc. Performance management of system objects based on consequence probabilities
US9952909B2 (en) * 2012-06-20 2018-04-24 Paypal, Inc. Multiple service classes in a shared cloud
US8924547B1 (en) * 2012-06-22 2014-12-30 Adtran, Inc. Systems and methods for managing network devices based on server capacity
US8972990B2 (en) 2012-08-29 2015-03-03 International Business Machines Corporation Providing a seamless transition for resizing virtual machines from a development environment to a production environment
US9292353B2 (en) * 2013-02-27 2016-03-22 Vmware, Inc. Resource allocation using capacity distribution
US20150026094A1 (en) * 2013-07-18 2015-01-22 Cisco Technology, Inc. Reliability target system
US20150106820A1 (en) * 2013-10-15 2015-04-16 Alcatel-Lucent Usa-Inc. Method and apparatus for providing allocating resources
US9552611B2 (en) * 2013-12-02 2017-01-24 State Farm Mutual Automobile Insurance Company Systems and methods for modifying resources to manage loss events
US11159402B1 (en) * 2014-06-26 2021-10-26 Amazon Technologies, Inc. Virtual machine import/export risk assessment
US10200261B2 (en) 2015-04-30 2019-02-05 Microsoft Technology Licensing, Llc Multiple-computing-node system job node selection
US20160344597A1 (en) * 2015-05-22 2016-11-24 Microsoft Technology Licensing, Llc Effectively operating and adjusting an infrastructure for supporting distributed applications
US10452442B2 (en) * 2015-11-27 2019-10-22 Huawei Technologies Co., Ltd. System and method for resource management
US10146563B2 (en) * 2016-08-03 2018-12-04 International Business Machines Corporation Predictive layer pre-provisioning in container-based virtualization
SG10202104185UA (en) * 2016-10-21 2021-06-29 Datarobot Inc Systems for predictive data analytics, and related methods and apparatus
US10331479B2 (en) 2017-01-13 2019-06-25 Microsoft Technology Licensing, Llc Computing on transient resources
US10469616B2 (en) 2017-06-09 2019-11-05 Red Hat, Inc. Data driven bin packing implementation for data centers with variable node capabilities
CN108279968B (en) * 2017-12-29 2021-05-11 中国联合网络通信集团有限公司 Virtual machine resource scheduling method and device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020002578A1 (en) * 2000-06-22 2002-01-03 Fujitsu Limited Scheduling apparatus performing job scheduling of a parallel computer system
US20040054998A1 (en) * 2002-07-26 2004-03-18 Matsushita Electric Industrial Co., Ltd. Program execution apparatus
US20050198636A1 (en) * 2004-02-26 2005-09-08 International Business Machines Corporation Dynamic optimization of batch processing
US20090199192A1 (en) * 2008-02-05 2009-08-06 Robert Laithwaite Resource scheduling apparatus and method
US7594016B1 (en) * 2003-11-12 2009-09-22 Hewlett-Packard Development Company, L.P. Calculating numbers of servers for tiers of a multi-tiered system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307478A (en) * 1990-06-11 1994-04-26 Supercomputer Systems Limited Partnership Method for inserting a path instruction during compliation of computer programs for processors having multiple functional units
US5202975A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership Method for optimizing instruction scheduling for a processor having multiple functional resources
US5394547A (en) * 1991-12-24 1995-02-28 International Business Machines Corporation Data processing system and method having selectable scheduler
JP2779736B2 (en) * 1992-08-03 1998-07-23 株式会社日立製作所 Optimization device and process plan creation device using the same
US7003475B1 (en) * 1999-05-07 2006-02-21 Medcohealth Solutions, Inc. Computer implemented resource allocation model and process to dynamically and optimally schedule an arbitrary number of resources subject to an arbitrary number of constraints in the managed care, health care and/or pharmacy industry
US6987729B1 (en) * 2000-05-11 2006-01-17 Lucent Technologies Inc. Method and apparatus for admission management in wireless communication systems
JP3612294B2 (en) * 2001-08-06 2005-01-19 松下電器産業株式会社 Debugging method and debugging device
US20050192937A1 (en) * 2004-02-26 2005-09-01 International Business Machines Corporation Dynamic query optimization
US8782654B2 (en) * 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
KR101096000B1 (en) * 2004-10-28 2011-12-19 텔레콤 이탈리아 소시에떼 퍼 아찌오니 Method For Managing Resources In A Platform For Telecommunication Service And/Or Network Management, Corresponding Platform And Computer Program Product Therefor
US7743378B1 (en) * 2005-05-13 2010-06-22 Oracle America, Inc. Method and apparatus for multi-dimensional priority determination for job scheduling
US7844968B1 (en) * 2005-05-13 2010-11-30 Oracle America, Inc. System for predicting earliest completion time and using static priority having initial priority and static urgency for job scheduling
US7752622B1 (en) * 2005-05-13 2010-07-06 Oracle America, Inc. Method and apparatus for flexible job pre-emption
US7984447B1 (en) * 2005-05-13 2011-07-19 Oracle America, Inc. Method and apparatus for balancing project shares within job assignment and scheduling
US8156500B2 (en) * 2005-07-01 2012-04-10 Microsoft Corporation Real-time self tuning of planned actions in a distributed environment
US20090037242A1 (en) * 2007-07-30 2009-02-05 Siemens Medical Solutions Usa, Inc. System for Monitoring Periodic Processing of Business Related Data
US20090138683A1 (en) * 2007-11-28 2009-05-28 Capps Jr Louis B Dynamic instruction execution using distributed transaction priority registers
US8886918B2 (en) * 2007-11-28 2014-11-11 International Business Machines Corporation Dynamic instruction execution based on transaction priority tagging

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020002578A1 (en) * 2000-06-22 2002-01-03 Fujitsu Limited Scheduling apparatus performing job scheduling of a parallel computer system
US20040054998A1 (en) * 2002-07-26 2004-03-18 Matsushita Electric Industrial Co., Ltd. Program execution apparatus
US7594016B1 (en) * 2003-11-12 2009-09-22 Hewlett-Packard Development Company, L.P. Calculating numbers of servers for tiers of a multi-tiered system
US20050198636A1 (en) * 2004-02-26 2005-09-08 International Business Machines Corporation Dynamic optimization of batch processing
US20090199192A1 (en) * 2008-02-05 2009-08-06 Robert Laithwaite Resource scheduling apparatus and method

Cited By (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10027582B2 (en) 2007-06-29 2018-07-17 Amazon Technologies, Inc. Updating routing information based on client location
US9992303B2 (en) 2007-06-29 2018-06-05 Amazon Technologies, Inc. Request routing utilizing client location information
US9954934B2 (en) 2008-03-31 2018-04-24 Amazon Technologies, Inc. Content delivery reconciliation
US10554748B2 (en) 2008-03-31 2020-02-04 Amazon Technologies, Inc. Content management
US9894168B2 (en) 2008-03-31 2018-02-13 Amazon Technologies, Inc. Locality based content distribution
US9332078B2 (en) 2008-03-31 2016-05-03 Amazon Technologies, Inc. Locality based content distribution
US11451472B2 (en) 2008-03-31 2022-09-20 Amazon Technologies, Inc. Request routing based on class
US9407699B2 (en) 2008-03-31 2016-08-02 Amazon Technologies, Inc. Content management
US10530874B2 (en) 2008-03-31 2020-01-07 Amazon Technologies, Inc. Locality based content distribution
US9544394B2 (en) 2008-03-31 2017-01-10 Amazon Technologies, Inc. Network resource identification
US10645149B2 (en) 2008-03-31 2020-05-05 Amazon Technologies, Inc. Content delivery reconciliation
US9479476B2 (en) 2008-03-31 2016-10-25 Amazon Technologies, Inc. Processing of DNS queries
US10771552B2 (en) 2008-03-31 2020-09-08 Amazon Technologies, Inc. Content management
US11245770B2 (en) 2008-03-31 2022-02-08 Amazon Technologies, Inc. Locality based content distribution
US10157135B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Cache optimization
US10158729B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Locality based content distribution
US11194719B2 (en) 2008-03-31 2021-12-07 Amazon Technologies, Inc. Cache optimization
US9571389B2 (en) 2008-03-31 2017-02-14 Amazon Technologies, Inc. Request routing based on class
US9887915B2 (en) 2008-03-31 2018-02-06 Amazon Technologies, Inc. Request routing based on class
US11909639B2 (en) 2008-03-31 2024-02-20 Amazon Technologies, Inc. Request routing based on class
US9621660B2 (en) 2008-03-31 2017-04-11 Amazon Technologies, Inc. Locality based content distribution
US10511567B2 (en) 2008-03-31 2019-12-17 Amazon Technologies, Inc. Network resource identification
US10305797B2 (en) 2008-03-31 2019-05-28 Amazon Technologies, Inc. Request routing based on class
US9888089B2 (en) 2008-03-31 2018-02-06 Amazon Technologies, Inc. Client side cache management
US10797995B2 (en) 2008-03-31 2020-10-06 Amazon Technologies, Inc. Request routing based on class
US9608957B2 (en) 2008-06-30 2017-03-28 Amazon Technologies, Inc. Request routing using network computing components
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US9787599B2 (en) 2008-11-17 2017-10-10 Amazon Technologies, Inc. Managing content delivery network service providers
US10523783B2 (en) 2008-11-17 2019-12-31 Amazon Technologies, Inc. Request routing utilizing client location information
US11811657B2 (en) 2008-11-17 2023-11-07 Amazon Technologies, Inc. Updating routing information based on client location
US11283715B2 (en) 2008-11-17 2022-03-22 Amazon Technologies, Inc. Updating routing information based on client location
US10116584B2 (en) 2008-11-17 2018-10-30 Amazon Technologies, Inc. Managing content delivery network service providers
US9444759B2 (en) 2008-11-17 2016-09-13 Amazon Technologies, Inc. Service provider registration by a content broker
US9734472B2 (en) 2008-11-17 2017-08-15 Amazon Technologies, Inc. Request routing utilizing cost information
US11115500B2 (en) 2008-11-17 2021-09-07 Amazon Technologies, Inc. Request routing utilizing client location information
US10742550B2 (en) 2008-11-17 2020-08-11 Amazon Technologies, Inc. Updating routing information based on client location
US9590946B2 (en) 2008-11-17 2017-03-07 Amazon Technologies, Inc. Managing content delivery network service providers
US9451046B2 (en) 2008-11-17 2016-09-20 Amazon Technologies, Inc. Managing CDN registration by a storage provider
US9985927B2 (en) 2008-11-17 2018-05-29 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US9515949B2 (en) 2008-11-17 2016-12-06 Amazon Technologies, Inc. Managing content delivery network service providers
US10230819B2 (en) 2009-03-27 2019-03-12 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10574787B2 (en) 2009-03-27 2020-02-25 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10491534B2 (en) 2009-03-27 2019-11-26 Amazon Technologies, Inc. Managing resources and entries in tracking information in resource cache components
US9191458B2 (en) 2009-03-27 2015-11-17 Amazon Technologies, Inc. Request routing using a popularity identifier at a DNS nameserver
US10601767B2 (en) 2009-03-27 2020-03-24 Amazon Technologies, Inc. DNS query processing based on application information
US10264062B2 (en) 2009-03-27 2019-04-16 Amazon Technologies, Inc. Request routing using a popularity identifier to identify a cache component
US10783077B2 (en) 2009-06-16 2020-09-22 Amazon Technologies, Inc. Managing resources using resource expiration data
US10521348B2 (en) 2009-06-16 2019-12-31 Amazon Technologies, Inc. Managing resources using resource expiration data
US9712325B2 (en) 2009-09-04 2017-07-18 Amazon Technologies, Inc. Managing secure content in a content delivery network
US10785037B2 (en) 2009-09-04 2020-09-22 Amazon Technologies, Inc. Managing secure content in a content delivery network
US10135620B2 (en) 2009-09-04 2018-11-20 Amazon Technologis, Inc. Managing secure content in a content delivery network
US10218584B2 (en) 2009-10-02 2019-02-26 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US9893957B2 (en) 2009-10-02 2018-02-13 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US10506029B2 (en) 2010-01-28 2019-12-10 Amazon Technologies, Inc. Content distribution network
US11205037B2 (en) 2010-01-28 2021-12-21 Amazon Technologies, Inc. Content distribution network
US11108729B2 (en) 2010-09-28 2021-08-31 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US9497259B1 (en) 2010-09-28 2016-11-15 Amazon Technologies, Inc. Point of presence management in request routing
US10079742B1 (en) 2010-09-28 2018-09-18 Amazon Technologies, Inc. Latency measurement in resource requests
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US9787775B1 (en) 2010-09-28 2017-10-10 Amazon Technologies, Inc. Point of presence management in request routing
US11336712B2 (en) 2010-09-28 2022-05-17 Amazon Technologies, Inc. Point of presence management in request routing
US9794216B2 (en) 2010-09-28 2017-10-17 Amazon Technologies, Inc. Request routing in a networked environment
US10015237B2 (en) 2010-09-28 2018-07-03 Amazon Technologies, Inc. Point of presence management in request routing
US10778554B2 (en) 2010-09-28 2020-09-15 Amazon Technologies, Inc. Latency measurement in resource requests
US9800539B2 (en) 2010-09-28 2017-10-24 Amazon Technologies, Inc. Request routing management based on network components
US11632420B2 (en) 2010-09-28 2023-04-18 Amazon Technologies, Inc. Point of presence management in request routing
US10225322B2 (en) 2010-09-28 2019-03-05 Amazon Technologies, Inc. Point of presence management in request routing
US10931738B2 (en) 2010-09-28 2021-02-23 Amazon Technologies, Inc. Point of presence management in request routing
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US10951725B2 (en) 2010-11-22 2021-03-16 Amazon Technologies, Inc. Request routing processing
US9930131B2 (en) 2010-11-22 2018-03-27 Amazon Technologies, Inc. Request routing processing
US9391949B1 (en) 2010-12-03 2016-07-12 Amazon Technologies, Inc. Request routing processing
US11604667B2 (en) 2011-04-27 2023-03-14 Amazon Technologies, Inc. Optimized deployment based upon customer locality
US9628554B2 (en) 2012-02-10 2017-04-18 Amazon Technologies, Inc. Dynamic content delivery
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US10225362B2 (en) 2012-06-11 2019-03-05 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US11729294B2 (en) 2012-06-11 2023-08-15 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US11303717B2 (en) 2012-06-11 2022-04-12 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US20140082614A1 (en) * 2012-09-20 2014-03-20 Matthew D. Klein Automated profiling of resource usage
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US10015241B2 (en) 2012-09-20 2018-07-03 Amazon Technologies, Inc. Automated profiling of resource usage
US10542079B2 (en) 2012-09-20 2020-01-21 Amazon Technologies, Inc. Automated profiling of resource usage
US9135048B2 (en) * 2012-09-20 2015-09-15 Amazon Technologies, Inc. Automated profiling of resource usage
US10645056B2 (en) 2012-12-19 2020-05-05 Amazon Technologies, Inc. Source-dependent address resolution
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US10374955B2 (en) 2013-06-04 2019-08-06 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9929959B2 (en) 2013-06-04 2018-03-27 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10728133B2 (en) 2014-12-18 2020-07-28 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11863417B2 (en) 2014-12-18 2024-01-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11381487B2 (en) 2014-12-18 2022-07-05 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US11297140B2 (en) 2015-03-23 2022-04-05 Amazon Technologies, Inc. Point of presence based data uploading
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US10469355B2 (en) 2015-03-30 2019-11-05 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US11461402B2 (en) 2015-05-13 2022-10-04 Amazon Technologies, Inc. Routing based request correlation
US10691752B2 (en) 2015-05-13 2020-06-23 Amazon Technologies, Inc. Routing based request correlation
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US10180993B2 (en) 2015-05-13 2019-01-15 Amazon Technologies, Inc. Routing based request correlation
US10616179B1 (en) 2015-06-25 2020-04-07 Amazon Technologies, Inc. Selective routing of domain name system (DNS) requests
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US10200402B2 (en) 2015-09-24 2019-02-05 Amazon Technologies, Inc. Mitigating network attacks
US11134134B2 (en) 2015-11-10 2021-09-28 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US11463550B2 (en) 2016-06-06 2022-10-04 Amazon Technologies, Inc. Request management for hierarchical cache
US10666756B2 (en) 2016-06-06 2020-05-26 Amazon Technologies, Inc. Request management for hierarchical cache
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US11457088B2 (en) 2016-06-29 2022-09-27 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10516590B2 (en) 2016-08-23 2019-12-24 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10469442B2 (en) 2016-08-24 2019-11-05 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US11330008B2 (en) 2016-10-05 2022-05-10 Amazon Technologies, Inc. Network addresses with encoded DNS-level information
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US10616250B2 (en) 2016-10-05 2020-04-07 Amazon Technologies, Inc. Network addresses with encoded DNS-level information
US10505961B2 (en) 2016-10-05 2019-12-10 Amazon Technologies, Inc. Digitally signed network address
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US11762703B2 (en) 2016-12-27 2023-09-19 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US11290418B2 (en) 2017-09-25 2022-03-29 Amazon Technologies, Inc. Hybrid content request routing system
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11362986B2 (en) 2018-11-16 2022-06-14 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system

Also Published As

Publication number Publication date
US8656404B2 (en) 2014-02-18
US20100100877A1 (en) 2010-04-22

Similar Documents

Publication Publication Date Title
US8656404B2 (en) Statistical packing of resource requirements in data centers
US11681562B2 (en) Resource manager for managing the sharing of resources among multiple workloads in a distributed computing environment
US8751659B2 (en) Data center batch job quality of service control
US9571347B2 (en) Reactive auto-scaling of capacity
US10719343B2 (en) Optimizing virtual machines placement in cloud computing environments
US8346909B2 (en) Method for supporting transaction and parallel application workloads across multiple domains based on service level agreements
US8495648B1 (en) Managing allocation of computing capacity
US8423998B2 (en) System and method for virtual machine multiplexing for resource provisioning in compute clouds
CN108337109B (en) Resource allocation method and device and resource allocation system
US20050188075A1 (en) System and method for supporting transaction and parallel services in a clustered system based on a service level agreement
US20050132379A1 (en) Method, system and software for allocating information handling system resources in response to high availability cluster fail-over events
CN110086726A (en) A method of automatically switching Kubernetes host node
CN111459641A (en) Cross-machine-room task scheduling and task processing method and device
CN110196773B (en) Multi-time-scale security check system and method for unified scheduling computing resources
CN114546587A (en) Capacity expansion and reduction method of online image recognition service and related device
CN111240824A (en) CPU resource scheduling method and electronic equipment
US8140552B2 (en) Method and apparatus for optimizing lead time for service provisioning
Lin et al. Two-tier project and job scheduling for SaaS cloud service providers
AbdelBaky et al. A framework for realizing software-defined federations for scientific workflows
Tsenos et al. Amesos: A scalable and elastic framework for latency sensitive streaming pipelines
CN114090201A (en) Resource scheduling method, device, equipment and storage medium
CN114253663A (en) Virtual machine resource scheduling method and device
CN112860442A (en) Resource quota adjusting method and device, computer equipment and storage medium
Simmons et al. Dynamic provisioning of resources in data centers
CN113301087A (en) Resource scheduling method, device, computing equipment and medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: PALO ALTO RESEARCH CENTER INCORPORATED, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GREENE, DANIEL H.;CHU, MAURICE;HINDI, HAITHAM;AND OTHERS;REEL/FRAME:042240/0808

Effective date: 20081006

Owner name: PALO ALTO RESEARCH CENTER INCORPORATED, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PREAS, BRYAN;REEL/FRAME:042240/0886

Effective date: 20081006

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION