US20110252421A1 - Allocation of Processor Resources in an Emulated Computing Environment - Google Patents
Allocation of Processor Resources in an Emulated Computing Environment Download PDFInfo
- Publication number
- US20110252421A1 US20110252421A1 US13/164,634 US201113164634A US2011252421A1 US 20110252421 A1 US20110252421 A1 US 20110252421A1 US 201113164634 A US201113164634 A US 201113164634A US 2011252421 A1 US2011252421 A1 US 2011252421A1
- Authority
- US
- United States
- Prior art keywords
- computing device
- share
- virtual machines
- virtual machine
- device resources
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5014—Reservation
Definitions
- the present invention relates in general to the field of computer system emulation and, more particularly, to a method for allocating processor resources in an emulated computing environment.
- Computers include general purpose central processing units (CPUs) that are designed to execute a specific set of system instructions.
- CPUs central processing units
- a group of processors that have similar architecture or design specifications may be considered to be members of the same processor family. Examples of current processor families include the Motorola 680X0 processor family, manufactured by Motorola, Inc. of Phoenix, Ariz.; the Intel 80X86 processor family, manufactured by Intel Corporation of Sunnyvale, Calif.; and the PowerPC processor family, which is manufactured by Motorola, Inc. and used in computers manufactured by Apple Computer, Inc. of Cupertino, Calif. Although a group of processors may be in the same family because of their similar architecture and design considerations, processors may vary widely within a family according to their clock speed and other performance parameters.
- Each family of microprocessors executes instructions that are unique to the processor family.
- the collective set of instructions that a processor or family of processors can execute is known as the processor's instruction set.
- the instruction set used by the Intel 80X86 processor family is incompatible with the instruction set used by the PowerPC processor family.
- the Intel 80X86 instruction set is based on the Complex Instruction Set Computer (CISC) format.
- the Motorola PowerPC instruction set is based on the Reduced Instruction Set Computer (RISC) format.
- CISC processors use a large number of instructions, some of which can perform rather complicated functions, but which require generally many clock cycles to execute.
- RISC processors use a smaller number of available instructions to perform a simpler set of functions that are executed at a much higher rate.
- the uniqueness of the processor family among computer systems also typically results in incompatibility among the other elements of hardware architecture of the computer systems.
- a computer system manufactured with a processor from the Intel 80X86 processor family will have a hardware architecture that is different from the hardware architecture of a computer system manufactured with a processor from the PowerPC processor family. Because of the uniqueness of the processor instruction set and a computer system's hardware architecture, application software programs are typically written to run on a particular computer system running a particular operating system.
- a computer manufacturer will seek to maximize its market share by having more rather than fewer applications run on the microprocessor family associated with the computer manufacturer's product line.
- a field of technology has developed in which a given computer having one type of CPU, called a host, will include an emulation program that allows the host computer to emulate the instructions of an unrelated type of CPU, called a guest.
- the host computer will execute an application that will cause one or more host instructions to be called in response to a given guest instruction.
- the host computer can both run software designed for its own hardware architecture and software written for computers having an unrelated hardware architecture.
- a computer system manufactured by Apple Computer may run operating systems and programs written for PC-based computer systems. It may also be possible to use an emulated program to operate concurrently on a single CPU multiple incompatible operating systems. In this arrangement, although each operating system is incompatible with the other, an emulation program can host one of the two operating systems, allowing the otherwise incompatible operating systems to run concurrently on the same computer system.
- the guest computer system When a guest computer system is emulated on a host computer system, the guest computer system is said to be a virtual machine, as the guest computer system exists only as a software representation of the operation of the hardware architecture of the emulated guest computer system.
- the terms emulator and virtual machine are sometimes used interchangeably to denote the ability to mimic or emulate the hardware architecture of an entire computer system.
- the Virtual PC software created by Connectix Corporation of San Mateo, Calif. emulates an entire computer that includes an Intel 80X86 Pentium processor and various motherboard components and cards. The operation of these components is emulated in the virtual machine that is being run on the host machine.
- An emulation program executing on the operating system software and hardware architecture of the host computer mimics the operation of the entire guest computer system.
- the emulation program acts as the interchange between the hardware architecture of the host machine and the instructions transmitted by the software running within the emulated environment.
- the emulation program is sometimes referred to as a virtual machine monitor.
- Multiple virtual machines can be established on a single host machine.
- a host machine of a certain processor family may host several virtual machines of the same processor family.
- each virtual machine operates as its own stand-alone computer system, allowing a user to install separate operating systems or multiple instances of a single operating system on one or more of the virtual machines. Because each virtual machine is independent of all other virtual machines and the host machine, software running within one virtual machine has no effect on the operation of any other virtual machines or the underlying host machine.
- An emulated computing environment can therefore support a number of operating systems, including an array of related operating systems or multiple, concurrent instances of the same operating system, on a single host computer system.
- a user may run multiple virtualized computer systems on a single physical computer system, eliminating the need for multiple hardware systems to support multiple computer systems.
- an additional virtual machine may be established on an existing computer system.
- Running multiple, independent virtual machines on a single physical host machine provides, among other benefits, the ability to test software applications across multiple computing environments and support legacy software applications or operating systems.
- Running multiple virtual machines on a single host machine also results in a cost savings in that the number of physical machines and their corresponding maintenance costs are reduced.
- Running multiple virtual machines on a single host machines also provides the benefit of operating system and application software isolation.
- each virtual machine is operationally isolated from the host operating system and every other virtual machine, an operational failure or hang in the operating system or application software of one virtual machine will not effect the operational status of another virtual machine. Because of the operational isolation of each virtual machine, the activities of an enterprise may be consolidated in each of the virtual machines. For example, a database application may be located in one of the virtual machines, and an e-mail server may be located in another.
- the resources of the host machine are divided among the virtual machines on an as-needed or demand basis. As an example, if four virtual machines were running on a single host machine, the four virtual machines would share the resources of the host processor.
- a difficulty of operating multiple virtual machines is managing the access of each virtual machine to the resources of the host processor. If each virtual machine is provided equal access to the host processor, i.e. each virtual machine has the same execution priority, virtual machines having more important functions will have to share access on a time division basis with virtual machines having less important functions. Applying a priority to a virtual machine is also problematic. If a higher priority virtual machine becomes compute bound, the operation of all lower priority virtual machines is effectively halted.
- the present invention concerns a system and method for allocating the resources of a host computer system, including the processor resources of the host computer system, among one or more virtual machines resident on the host computer system.
- the allocation of resources may be accomplished according to a proportional weight assigned to each virtual machine.
- a calculation of the share of resources is made for each virtual machine on the basis of the relative proportional weights of all virtual machines of the computer system.
- the allocation of processor resources may also be accomplished by reserving to certain critical virtual machines a minimum fraction of processor resources.
- each virtual machine is assigned a proportional weight.
- the share of resources is then calculated for each virtual machine on the basis of the relative proportional weights of all virtual machines of the computer system. For those virtual machines having a reserved minimum fraction of resources, the calculated share of resources is compared to the reserved minimum fraction of resources. If the reserved minimum fraction of resources is greater than the calculated share of resources, the virtual machine is assigned as its share of resources its reserved minimum fraction of resources.
- the remaining processor resources are then shared on a proportional basis by those virtual machines not having been assigned its reserved minimum share of processor resources.
- a scheduler in an emulation program manages the allocation of processor resources and manages the execution threads of the virtual machines to meet the resource utilization goals and requirements of each virtual machine.
- the resource allocation method disclosed herein is advantageous in that it provides a methodology for managing the access of multiple virtual machines to the resources of the host computer system. Because resources of the host computer system are managed for the sake of the individual needs of each virtual machine and for the sake of the needs of all the virtual machines of the computer system, a system is provided in which multiple virtual machines instances may operate on a single host computer system. Another advantage of the resource allocation method disclosed herein is the method provides for the allocation of resources to those virtual machines that must have a minimum level of processor resources. Because a minimum level of processor resources may be specified for certain virtual machines of the computer system, these virtual machines are assured of some access to processor resources even if the other virtual machines of the computer system become compute bound.
- Another advantage of the resource allocation method invention is a technique for modulating among the competing execution threads of the virtual machines.
- the modulation technique described herein provides a method for enforcing a maximum allocation of resources as well as a technique for enforcing utilization goals and allocation requirements among the virtual machines.
- FIG. 1 is a diagram of the logical layers of the hardware and software architecture for an emulated operating environment in a computer system
- FIG. 2 is a diagram of the logical layers of the hardware and. Software architecture of a computer system that includes multiple virtual machines; and
- FIG. 3 is a flow diagram of the method of assigning access processor resources according to a guaranteed proportional capacity scheduling policy.
- the present invention provides a system and method for the allocation of processor resources among the virtual machines of the computer system.
- FIG. 1 is an example of the logical layers of the hardware and software architecture for an emulated operating environment in a computer system, which is indicated generally at 10 .
- An emulation program 14 runs on a host operating system that executes on the host computer system hardware or processor 11 .
- Emulation program 14 emulates a guest computer system 16 , which includes a guest operating system 18 .
- Guest application programs are able to execute on guest operating system 18 .
- FIG. 1 Shown is an example of the logical layers of the hardware and software architecture for an emulated operating environment in a computer system, which is indicated generally at 10 .
- An emulation program 14 runs on a host operating system that executes on the host computer system hardware or processor 11 .
- Emulation program 14 emulates a guest computer system 16 , which includes a guest operating system 18 .
- Guest application programs are able to execute on guest operating system 18 .
- guest application 20 can run on the computer system 10 even though guest application 20 may be designed to run on an operating system that is generally incompatible with host operating system 12 and host computer system hardware 11 .
- guest operating system 20 may be the same as or a variation of host operating system 12 .
- guest computer system 16 operates as a virtual machine that runs independently of the host operating system 12 and the host computer system hardware 11 .
- Shown in FIG. 2 is an example of the logical layers of the hardware and software architecture of a computer system 10 that includes multiple virtual machines 17 .
- Each virtual machine 17 includes a guest operating system 18 , and each virtual machine 17 is supported by an emulation program 14 .
- the same operating system may be installed in each virtual machine 17 .
- host operating system 12 may be Microsoft Windows XPTM, and the operating system of each of the virtual machines may be Microsoft Windows NTTM.
- variations of a single operating system may be installed across each of the virtual machines 17 .
- host operating system 12 may be Microsoft Windows XPTM, while one or more of the virtual machines runs one of the following operating systems: Windows 3.xTM, Windows 95TM, Windows 98TM, Windows MeTM, Windows NTTM, Windows 2000TM, MS-DOSTM, Linux, BSD, OS/2TM, or Novell NetwareTM, among other possible operating systems.
- Each virtual machine 17 is operationally independent of the host operating system and the other virtual machines. An operational failure in one of the virtual machines will not affect the operation of the host operating system or the other virtual machines.
- Emulation program 14 will present to the processor a thread of executable code from each of the virtual machines.
- a component of emulation program 14 is virtual machine meta-scheduler 15 .
- Meta-scheduler 15 allocates processor resources among the virtual machines 17 of the computer system according to a proportional capacity policy, an absolute capacity policy, or a blending of the two policies.
- a proportional capacity scheduling policy involves the use of a single dimensionless number that defines the weight of each virtual machine.
- Meta-scheduler 15 adjusts the resource allocation of each virtual machine on the basis of the weight of every other virtual machine that is contending for processor resources. The allocation of resources to a virtual machine is determined by dividing the virtual machine's proportional weight by the sum of the proportional weights of all virtual machines contending for processor resources.
- proportional scheduling if four compute bound virtual machines, each with a proportional weight of 100, are contending for processor resources, each virtual machine would be apportioned 25% (100/400) of the available processor resources.
- the first of four compute bound virtual machines has a proportional weight of 200 and the other three virtual machines have a proportional weight of 100, the first virtual machine will be granted 40% (200/500) of processor resources and the other virtual machines will each be granted 20% (100/500) of processor resources.
- the proportional capacity scheduling policy adjusts easily to the introduction of new virtual machines.
- the computations required of the proportional scheduling. policy are dynamic, occurring whenever a virtual machine starts, shuts down, pauses, or resumes. Computations are also performed to accommodate adjustments in the proportional weight of a virtual machine.
- the use of a proportional capacity scheduling policy may, however, result in one or more virtual machines falling below a minimum resource level.
- the proportional capacity scheduling policy allocates processor capacity according to a formula that operates without reference to the individual resource requirements of each virtual machine. As a result, depending on the presence and activity of other virtual machines, a virtual machine may be allocated a share of processor resources that is below its required minimum resource level.
- Access to processor resources can also be shared among the virtual machines according to an absolute capacity policy, in which a minimum fractional capacity is assigned to each virtual machine.
- a minimum fractional capacity is assigned to each virtual machine.
- the first machine may be assigned capacity fraction of 50% and the other two virtual machines may each be assigned a capacity fraction of 25%. If each of the virtual machines were to become compute bound, each virtual machine would receive its assigned fractional percentage.
- the reserve, or minimum capacity, of each virtual machine applies when the virtual machines of the computer system become compute bound. In the above example, if one of the three: virtual machines were to become idle while the other two virtual machines were compute bound, the two compute bound machines would share any processor resources above their assigned minimum capacity fraction in proportion to their assigned capacity fractions.
- An absolute capacity policy of allocating processor resources is advantageous because each virtual machine is guaranteed a minimum level of access to processor resources when the virtual machine is contending for processor resources, even in those instances in which all virtual machines have become compute bound.
- An absolute. capacity policy of scheduling processor resources does not accommodate the dynamic addition or removal of virtual machines in the computer system. Because the capacity fraction of each virtual machine must be entered manually, the capacity fraction of one or all of the existing virtual machines must be manipulated each time that a virtual machine is added or removed from the computer system. In an absolute capacity policy, the sum of the capacity fractions assigned to the virtual machines of the computer system may be equal to or less than 100%.
- a guaranteed proportional capacity scheduling policy involves assigning a proportional weight to all virtual machines of the computer system and assigning a guaranteed minimum capacity fraction to only the most critical of the virtual machines of the computer systems.
- a guaranteed proportional capacity scheduling policy is a hybrid of a proportional capacity scheduling policy, in which each virtual machine must be assigned a proportional weight, and an absolute capacity scheduling policy, in which each virtual machine is assigned a capacity fraction.
- each is assigned a proportional weight: Virtual Machine A (100), Virtual Machine B (100), Virtual Machine C (100), and Virtual Machine D (100).
- the most critical virtual machines or virtual machines which in this example is Virtual Machine A, is assigned a guaranteed fractional capacity of process resources.
- Virtual Machine A is assigned a guaranteed fractional capacity of 40%.
- Meta-scheduler 15 first uses the proportional weight assigned to each virtual machine to calculate a share of processor resources assigned to each virtual machine, as if a proportional capacity scheduling policy were being employed. In this instance, each of the virtual machines of the computer system is assigned to a 25% weighting (100/400) of processor resources.
- the percentage of processor resources assigned to Virtual Machine A in this example is less than the guaranteed fractional capacity of 40% of Virtual Machine A
- the percentage of processor resources assigned to Virtual Machine A is set to 40%, the guaranteed fractional capacity of Virtual Machine A.
- the remaining 60% of processor resources are divided among the non-critical virtual machines according to their respective proportional weights.
- each of Virtual Machine A, Virtual Machine B, and Virtual Machine C is assigned one-third (100/300) of the remaining 60% of processor resources, resulting in each of the non-critical virtual machines being assigned 20% of processor resources.
- Virtual Machine A would be granted 40% of processor resources and each of the remaining virtual machines would be granted 20% of processor resources.
- FIG. 3 A flow diagram of the method of assigning access processor resources according to a guaranteed proportional capacity scheduling policy is shown in FIG. 3 .
- all virtual machines are assigned a proportional weight.
- only those critical virtual machine that must operate with a minimum of processor resources are assigned a guaranteed fractional capacity.
- the relative proportional weight of each critical virtual machine is compared with the each critical virtual machine's assigned fractional. capacity. For the selected critical virtual machine, it is determined at step 36 whether the relative proportional weight of the virtual machine is less than its assigned fractional capacity.
- step 38 it is determined at step 38 whether the comparison of proportional weight versus assigned fractional capacity has been made for all virtual machines associated with an assigned fractional capacity. If such a comparison has not been made for all virtual machines, the next critical virtual machine (i.e., a virtual machine having an assigned fractional capacity) is selected (step 40 ) and a comparison is made of that critical virtual machines proportional weight versus its assigned fractional capacity (step 34 and step 36 ).
- the next critical virtual machine i.e., a virtual machine having an assigned fractional capacity
- step 36 If it is determined at step 36 that the proportional weight of a critical virtual machine is less than its assigned fractional capacity, then the critical virtual machine is set to its assigned minimum fractional capacity and processing continues at step 38 with a determination of whether a comparison of proportional weight versus assigned fractional capacity has been made for all critical virtual machines. Once it is determined at step 38 that a comparison of proportional weight versus. assigned minimum fractional capacity has been made for all virtual machines, it is determined at step 46 whether at least one critical virtual machine has been allocated processor resources according to its guaranteed fractional capacity. If so, then at step 48 , the remaining processor capacity is shared among all virtual machines not assigned to a guaranteed fractional capacity on the basis of the respective proportional weights. If none of the virtual machines of the computer system has been assigned its guaranteed fractional capacity, the virtual machines of the computer system share processor resources according to their proportional weights.
- meta-scheduler 15 modulates each virtual machine's access to processor resources according to the prescribed utilization goals and minimum access requirements described above.
- the utilization goal of a virtual machine is a guideline of the share of processor resources that should be allocated to that virtual machine.
- a virtual machine's reserve or minimum is the share of processor resources that must be provided to that virtual machine.
- meta-scheduler 15 may pause each virtual machine for short periods to meet utilization goals or to enforce rules concerning minimum access to processor resources. Pausing a virtual machine may be effective in enforcing a cap or maximum on a single virtual machine's share of processor resources.
- the meta-scheduler also performs the task of switching the access to processor resources among the virtual machines.
- Meta-scheduler must select an access ratio to modulate the access of each virtual machine to process resources.
- the access ratio must be selected to minimize the overhead caused by switching among the execution threads of the virtual machines. As an example, a utilization goal of 5% could have an access ratio of 5/100 or 1/20.
- the numerator of the access ratio is chosen to be as small as possible, although the numerator must be above a lower limit that is some factor of the host operating system context switching time.
- the numerator represents the minimum interval during which a virtual machine is provided access to processor resources.
- the context switching time for the virtual machines of a computer system may be between 10 and 20 microseconds.
- This time includes the context switching time of the host processor and the overhead associated with at least two transitions between the guest computer system and the host computer system.
- the minimum interval for access to processor resources is 2000 microseconds, yielding an access ratio of 2000/40,000.
- the minimum interval should not be greater than a defined upper limit at which latency is not observed in the operation of the virtual machines. This defined upper limit may be, for example, 20 milliseconds.
- the present invention is not limited in its application to the emulation of a particular computer system architecture, particularly the Intel 80X86 architecture. Rather, the emulation technique disclosed. herein is applicable any time it is desirable to control the processor allocations of multiple instances of software in a virtual or emulated computing environment. It should be also understood that the invention described herein is not limited to the allocation of processor resources of a computer system. Other resources of the computer system could be allocated among the virtual machines of a computer system. The techniques of the present invention could be employed in those instances in which the host operating system and the guest operating systems are variants within the same family of operating systems. Alternatively, the host operating systems and one or more of the guest operating systems could be operating systems associated with different hardware platforms.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
In an emulated computing environment, a method is provided for allocating resources of the host computer system among multiple virtual machines resident on the host computer system. On the basis of the proportional weight of each virtual machine, a proportional share of resources is allocated for each virtual machine. If, for a particular virtual machine, the calculated share is less than a reserved minimum share, the virtual machine is allocated its reserved minimum share as its share of computing device resources. An emulation program modulates the access of each virtual machine to the resources of the host computer system.
Description
- This application is a continuation of U.S. patent application Ser. No. 11/471,337, filed Jun. 20, 2006, which is a continuation of U.S. patent application Ser. No. 10/274,509, filed Oct. 18, 2002, the contents of which are incorporated by reference herein in their entirety.
- The present invention relates in general to the field of computer system emulation and, more particularly, to a method for allocating processor resources in an emulated computing environment.
- Computers include general purpose central processing units (CPUs) that are designed to execute a specific set of system instructions. A group of processors that have similar architecture or design specifications may be considered to be members of the same processor family. Examples of current processor families include the Motorola 680X0 processor family, manufactured by Motorola, Inc. of Phoenix, Ariz.; the Intel 80X86 processor family, manufactured by Intel Corporation of Sunnyvale, Calif.; and the PowerPC processor family, which is manufactured by Motorola, Inc. and used in computers manufactured by Apple Computer, Inc. of Cupertino, Calif. Although a group of processors may be in the same family because of their similar architecture and design considerations, processors may vary widely within a family according to their clock speed and other performance parameters.
- Each family of microprocessors executes instructions that are unique to the processor family. The collective set of instructions that a processor or family of processors can execute is known as the processor's instruction set. As an example, the instruction set used by the Intel 80X86 processor family is incompatible with the instruction set used by the PowerPC processor family. The Intel 80X86 instruction set is based on the Complex Instruction Set Computer (CISC) format. The Motorola PowerPC instruction set is based on the Reduced Instruction Set Computer (RISC) format. CISC processors use a large number of instructions, some of which can perform rather complicated functions, but which require generally many clock cycles to execute. RISC processors use a smaller number of available instructions to perform a simpler set of functions that are executed at a much higher rate.
- The uniqueness of the processor family among computer systems also typically results in incompatibility among the other elements of hardware architecture of the computer systems. A computer system manufactured with a processor from the Intel 80X86 processor family will have a hardware architecture that is different from the hardware architecture of a computer system manufactured with a processor from the PowerPC processor family. Because of the uniqueness of the processor instruction set and a computer system's hardware architecture, application software programs are typically written to run on a particular computer system running a particular operating system.
- A computer manufacturer will seek to maximize its market share by having more rather than fewer applications run on the microprocessor family associated with the computer manufacturer's product line. To expand the number of operating systems and application programs that can run on a computer system, a field of technology has developed in which a given computer having one type of CPU, called a host, will include an emulation program that allows the host computer to emulate the instructions of an unrelated type of CPU, called a guest. Thus, the host computer will execute an application that will cause one or more host instructions to be called in response to a given guest instruction. Thus, the host computer can both run software designed for its own hardware architecture and software written for computers having an unrelated hardware architecture. As a more specific example, a computer system manufactured by Apple Computer, for example, may run operating systems and programs written for PC-based computer systems. It may also be possible to use an emulated program to operate concurrently on a single CPU multiple incompatible operating systems. In this arrangement, although each operating system is incompatible with the other, an emulation program can host one of the two operating systems, allowing the otherwise incompatible operating systems to run concurrently on the same computer system.
- When a guest computer system is emulated on a host computer system, the guest computer system is said to be a virtual machine, as the guest computer system exists only as a software representation of the operation of the hardware architecture of the emulated guest computer system. The terms emulator and virtual machine are sometimes used interchangeably to denote the ability to mimic or emulate the hardware architecture of an entire computer system. As an example, the Virtual PC software created by Connectix Corporation of San Mateo, Calif. emulates an entire computer that includes an Intel 80X86 Pentium processor and various motherboard components and cards. The operation of these components is emulated in the virtual machine that is being run on the host machine. An emulation program executing on the operating system software and hardware architecture of the host computer, such as a computer system having a PowerPC processor, mimics the operation of the entire guest computer system. The emulation program acts as the interchange between the hardware architecture of the host machine and the instructions transmitted by the software running within the emulated environment. The emulation program is sometimes referred to as a virtual machine monitor.
- Multiple virtual machines can be established on a single host machine. In this scenario, a host machine of a certain processor family may host several virtual machines of the same processor family. In this computing environment, each virtual machine operates as its own stand-alone computer system, allowing a user to install separate operating systems or multiple instances of a single operating system on one or more of the virtual machines. Because each virtual machine is independent of all other virtual machines and the host machine, software running within one virtual machine has no effect on the operation of any other virtual machines or the underlying host machine. An emulated computing environment can therefore support a number of operating systems, including an array of related operating systems or multiple, concurrent instances of the same operating system, on a single host computer system.
- In this emulated computing environment, a user may run multiple virtualized computer systems on a single physical computer system, eliminating the need for multiple hardware systems to support multiple computer systems. As an alternative to purchasing and configuring an additional physical computer system, an additional virtual machine may be established on an existing computer system. Running multiple, independent virtual machines on a single physical host machine provides, among other benefits, the ability to test software applications across multiple computing environments and support legacy software applications or operating systems. Running multiple virtual machines on a single host machine also results in a cost savings in that the number of physical machines and their corresponding maintenance costs are reduced. Running multiple virtual machines on a single host machines also provides the benefit of operating system and application software isolation. Because each virtual machine is operationally isolated from the host operating system and every other virtual machine, an operational failure or hang in the operating system or application software of one virtual machine will not effect the operational status of another virtual machine. Because of the operational isolation of each virtual machine, the activities of an enterprise may be consolidated in each of the virtual machines. For example, a database application may be located in one of the virtual machines, and an e-mail server may be located in another.
- When multiple virtual machines are operating on a single host machine, the resources of the host machine are divided among the virtual machines on an as-needed or demand basis. As an example, if four virtual machines were running on a single host machine, the four virtual machines would share the resources of the host processor. A difficulty of operating multiple virtual machines is managing the access of each virtual machine to the resources of the host processor. If each virtual machine is provided equal access to the host processor, i.e. each virtual machine has the same execution priority, virtual machines having more important functions will have to share access on a time division basis with virtual machines having less important functions. Applying a priority to a virtual machine is also problematic. If a higher priority virtual machine becomes compute bound, the operation of all lower priority virtual machines is effectively halted.
- The present invention concerns a system and method for allocating the resources of a host computer system, including the processor resources of the host computer system, among one or more virtual machines resident on the host computer system. The allocation of resources may be accomplished according to a proportional weight assigned to each virtual machine. A calculation of the share of resources is made for each virtual machine on the basis of the relative proportional weights of all virtual machines of the computer system. The allocation of processor resources may also be accomplished by reserving to certain critical virtual machines a minimum fraction of processor resources.
- As another alternative for assigning host computer system resources among the virtual machines of a computer system, each virtual machine is assigned a proportional weight. The share of resources is then calculated for each virtual machine on the basis of the relative proportional weights of all virtual machines of the computer system. For those virtual machines having a reserved minimum fraction of resources, the calculated share of resources is compared to the reserved minimum fraction of resources. If the reserved minimum fraction of resources is greater than the calculated share of resources, the virtual machine is assigned as its share of resources its reserved minimum fraction of resources. The remaining processor resources are then shared on a proportional basis by those virtual machines not having been assigned its reserved minimum share of processor resources. A scheduler in an emulation program manages the allocation of processor resources and manages the execution threads of the virtual machines to meet the resource utilization goals and requirements of each virtual machine.
- The resource allocation method disclosed herein is advantageous in that it provides a methodology for managing the access of multiple virtual machines to the resources of the host computer system. Because resources of the host computer system are managed for the sake of the individual needs of each virtual machine and for the sake of the needs of all the virtual machines of the computer system, a system is provided in which multiple virtual machines instances may operate on a single host computer system. Another advantage of the resource allocation method disclosed herein is the method provides for the allocation of resources to those virtual machines that must have a minimum level of processor resources. Because a minimum level of processor resources may be specified for certain virtual machines of the computer system, these virtual machines are assured of some access to processor resources even if the other virtual machines of the computer system become compute bound. Another advantage of the resource allocation method invention is a technique for modulating among the competing execution threads of the virtual machines. The modulation technique described herein provides a method for enforcing a maximum allocation of resources as well as a technique for enforcing utilization goals and allocation requirements among the virtual machines.
- Other technical advantages of the present invention will be readily apparent to one skilled in the art from the following figures, descriptions, and claims.
- A more complete understanding of the present invention and advantages thereof may be acquired by referring to the following description taken in conjunction with the accompanying drawings, in which like reference numbers indicate like features, and wherein:
-
FIG. 1 is a diagram of the logical layers of the hardware and software architecture for an emulated operating environment in a computer system; -
FIG. 2 is a diagram of the logical layers of the hardware and. Software architecture of a computer system that includes multiple virtual machines; and -
FIG. 3 is a flow diagram of the method of assigning access processor resources according to a guaranteed proportional capacity scheduling policy. - The present invention provides a system and method for the allocation of processor resources among the virtual machines of the computer system. Shown in
FIG. 1 is an example of the logical layers of the hardware and software architecture for an emulated operating environment in a computer system, which is indicated generally at 10. Anemulation program 14 runs on a host operating system that executes on the host computer system hardware orprocessor 11.Emulation program 14 emulates aguest computer system 16, which includes aguest operating system 18. Guest application programs are able to execute onguest operating system 18. In the emulated operating environment ofFIG. 1 , because of the operation ofemulation program 14,guest application 20 can run on thecomputer system 10 even thoughguest application 20 may be designed to run on an operating system that is generally incompatible withhost operating system 12 and hostcomputer system hardware 11. As an alternative,guest operating system 20 may be the same as or a variation ofhost operating system 12. In the architecture ofFIG. 1 ,guest computer system 16 operates as a virtual machine that runs independently of thehost operating system 12 and the hostcomputer system hardware 11. - Shown in
FIG. 2 is an example of the logical layers of the hardware and software architecture of acomputer system 10 that includes multiplevirtual machines 17. Eachvirtual machine 17 includes aguest operating system 18, and eachvirtual machine 17 is supported by anemulation program 14. The same operating system may be installed in eachvirtual machine 17. As an example,host operating system 12 may be Microsoft Windows XP™, and the operating system of each of the virtual machines may be Microsoft Windows NT™. Alternatively, variations of a single operating system may be installed across each of thevirtual machines 17. As an example of this environment,host operating system 12 may be Microsoft Windows XP™, while one or more of the virtual machines runs one of the following operating systems: Windows 3.x™, Windows 95™, Windows 98™, Windows Me™, Windows NT™, Windows 2000™, MS-DOS™, Linux, BSD, OS/2™, or Novell Netware™, among other possible operating systems. Eachvirtual machine 17 is operationally independent of the host operating system and the other virtual machines. An operational failure in one of the virtual machines will not affect the operation of the host operating system or the other virtual machines. -
Emulation program 14 will present to the processor a thread of executable code from each of the virtual machines. A component ofemulation program 14 is virtual machine meta-scheduler 15. Meta-scheduler 15 allocates processor resources among thevirtual machines 17 of the computer system according to a proportional capacity policy, an absolute capacity policy, or a blending of the two policies. A proportional capacity scheduling policy involves the use of a single dimensionless number that defines the weight of each virtual machine. Meta-scheduler 15 adjusts the resource allocation of each virtual machine on the basis of the weight of every other virtual machine that is contending for processor resources. The allocation of resources to a virtual machine is determined by dividing the virtual machine's proportional weight by the sum of the proportional weights of all virtual machines contending for processor resources. As an example of proportional scheduling, if four compute bound virtual machines, each with a proportional weight of 100, are contending for processor resources, each virtual machine would be apportioned 25% (100/400) of the available processor resources. As a second example, if the first of four compute bound virtual machines has a proportional weight of 200 and the other three virtual machines have a proportional weight of 100, the first virtual machine will be granted 40% (200/500) of processor resources and the other virtual machines will each be granted 20% (100/500) of processor resources. - The proportional capacity scheduling policy adjusts easily to the introduction of new virtual machines. The computations required of the proportional scheduling. policy are dynamic, occurring whenever a virtual machine starts, shuts down, pauses, or resumes. Computations are also performed to accommodate adjustments in the proportional weight of a virtual machine. The use of a proportional capacity scheduling policy may, however, result in one or more virtual machines falling below a minimum resource level. The proportional capacity scheduling policy allocates processor capacity according to a formula that operates without reference to the individual resource requirements of each virtual machine. As a result, depending on the presence and activity of other virtual machines, a virtual machine may be allocated a share of processor resources that is below its required minimum resource level.
- Access to processor resources can also be shared among the virtual machines according to an absolute capacity policy, in which a minimum fractional capacity is assigned to each virtual machine. As an example, in a computer system with three virtual machines, the first machine may be assigned capacity fraction of 50% and the other two virtual machines may each be assigned a capacity fraction of 25%. If each of the virtual machines were to become compute bound, each virtual machine would receive its assigned fractional percentage. The reserve, or minimum capacity, of each virtual machine applies when the virtual machines of the computer system become compute bound. In the above example, if one of the three: virtual machines were to become idle while the other two virtual machines were compute bound, the two compute bound machines would share any processor resources above their assigned minimum capacity fraction in proportion to their assigned capacity fractions.
- An absolute capacity policy of allocating processor resources is advantageous because each virtual machine is guaranteed a minimum level of access to processor resources when the virtual machine is contending for processor resources, even in those instances in which all virtual machines have become compute bound. An absolute. capacity policy of scheduling processor resources, however, does not accommodate the dynamic addition or removal of virtual machines in the computer system. Because the capacity fraction of each virtual machine must be entered manually, the capacity fraction of one or all of the existing virtual machines must be manipulated each time that a virtual machine is added or removed from the computer system. In an absolute capacity policy, the sum of the capacity fractions assigned to the virtual machines of the computer system may be equal to or less than 100%.
- Often only one or a few of the virtual machines of the computer system require a guarantee of a minimum level of access to processor resources, while the other virtual machines of the computer system are not as critical and therefore do not require a guarantee of a minimum level of processor resources. A guaranteed proportional capacity scheduling policy involves assigning a proportional weight to all virtual machines of the computer system and assigning a guaranteed minimum capacity fraction to only the most critical of the virtual machines of the computer systems. A guaranteed proportional capacity scheduling policy is a hybrid of a proportional capacity scheduling policy, in which each virtual machine must be assigned a proportional weight, and an absolute capacity scheduling policy, in which each virtual machine is assigned a capacity fraction.
- As an example of the operation of a guaranteed proportional capacity scheduling policy, in a computer system having four virtual machines, each is assigned a proportional weight: Virtual Machine A (100), Virtual Machine B (100), Virtual Machine C (100), and Virtual Machine D (100). At the same time, the most critical virtual machines or virtual machines, which in this example is Virtual Machine A, is assigned a guaranteed fractional capacity of process resources. In this example, Virtual Machine A is assigned a guaranteed fractional capacity of 40%. Meta-
scheduler 15 first uses the proportional weight assigned to each virtual machine to calculate a share of processor resources assigned to each virtual machine, as if a proportional capacity scheduling policy were being employed. In this instance, each of the virtual machines of the computer system is assigned to a 25% weighting (100/400) of processor resources. Because the percentage of processor resources assigned to Virtual Machine A in this example is less than the guaranteed fractional capacity of 40% of Virtual Machine A, the percentage of processor resources assigned to Virtual Machine A is set to 40%, the guaranteed fractional capacity of Virtual Machine A. The remaining 60% of processor resources are divided among the non-critical virtual machines according to their respective proportional weights. As such, each of Virtual Machine A, Virtual Machine B, and Virtual Machine C is assigned one-third (100/300) of the remaining 60% of processor resources, resulting in each of the non-critical virtual machines being assigned 20% of processor resources. Thus, if each of the virtual machines were to become compute bound, Virtual Machine A would be granted 40% of processor resources and each of the remaining virtual machines would be granted 20% of processor resources. - A flow diagram of the method of assigning access processor resources according to a guaranteed proportional capacity scheduling policy is shown in
FIG. 3 . At step 30, all virtual machines are assigned a proportional weight. Atstep 32, only those critical virtual machine that must operate with a minimum of processor resources are assigned a guaranteed fractional capacity. Atstep 34, the relative proportional weight of each critical virtual machine is compared with the each critical virtual machine's assigned fractional. capacity. For the selected critical virtual machine, it is determined atstep 36 whether the relative proportional weight of the virtual machine is less than its assigned fractional capacity. If the proportional weight of a virtual machine is not less than its assigned fractional capacity, it is determined atstep 38 whether the comparison of proportional weight versus assigned fractional capacity has been made for all virtual machines associated with an assigned fractional capacity. If such a comparison has not been made for all virtual machines, the next critical virtual machine (i.e., a virtual machine having an assigned fractional capacity) is selected (step 40) and a comparison is made of that critical virtual machines proportional weight versus its assigned fractional capacity (step 34 and step 36). - If it is determined at
step 36 that the proportional weight of a critical virtual machine is less than its assigned fractional capacity, then the critical virtual machine is set to its assigned minimum fractional capacity and processing continues atstep 38 with a determination of whether a comparison of proportional weight versus assigned fractional capacity has been made for all critical virtual machines. Once it is determined atstep 38 that a comparison of proportional weight versus. assigned minimum fractional capacity has been made for all virtual machines, it is determined atstep 46 whether at least one critical virtual machine has been allocated processor resources according to its guaranteed fractional capacity. If so, then atstep 48, the remaining processor capacity is shared among all virtual machines not assigned to a guaranteed fractional capacity on the basis of the respective proportional weights. If none of the virtual machines of the computer system has been assigned its guaranteed fractional capacity, the virtual machines of the computer system share processor resources according to their proportional weights. - Once the allocation of processor resources has been determined by one of the techniques described herein, meta-
scheduler 15 modulates each virtual machine's access to processor resources according to the prescribed utilization goals and minimum access requirements described above. The utilization goal of a virtual machine is a guideline of the share of processor resources that should be allocated to that virtual machine. In comparison, a virtual machine's reserve or minimum is the share of processor resources that must be provided to that virtual machine. In particular, if multiple virtual machines are contending for processor resources, meta-scheduler 15 may pause each virtual machine for short periods to meet utilization goals or to enforce rules concerning minimum access to processor resources. Pausing a virtual machine may be effective in enforcing a cap or maximum on a single virtual machine's share of processor resources. - The meta-scheduler also performs the task of switching the access to processor resources among the virtual machines. Meta-scheduler must select an access ratio to modulate the access of each virtual machine to process resources. The access ratio must be selected to minimize the overhead caused by switching among the execution threads of the virtual machines. As an example, a utilization goal of 5% could have an access ratio of 5/100 or 1/20. The numerator of the access ratio is chosen to be as small as possible, although the numerator must be above a lower limit that is some factor of the host operating system context switching time. The numerator represents the minimum interval during which a virtual machine is provided access to processor resources. As an example, the context switching time for the virtual machines of a computer system may be between 10 and 20 microseconds. This time includes the context switching time of the host processor and the overhead associated with at least two transitions between the guest computer system and the host computer system. To achieve a switching overhead of I% or less, and assuming a total context switching overhead of 20 microseconds, the minimum interval for access to processor resources is 2000 microseconds, yielding an access ratio of 2000/40,000. The minimum interval should not be greater than a defined upper limit at which latency is not observed in the operation of the virtual machines. This defined upper limit may be, for example, 20 milliseconds.
- The present invention is not limited in its application to the emulation of a particular computer system architecture, particularly the Intel 80X86 architecture. Rather, the emulation technique disclosed. herein is applicable any time it is desirable to control the processor allocations of multiple instances of software in a virtual or emulated computing environment. It should be also understood that the invention described herein is not limited to the allocation of processor resources of a computer system. Other resources of the computer system could be allocated among the virtual machines of a computer system. The techniques of the present invention could be employed in those instances in which the host operating system and the guest operating systems are variants within the same family of operating systems. Alternatively, the host operating systems and one or more of the guest operating systems could be operating systems associated with different hardware platforms.
- Although the present invention has been described in detail, it should be understood that various changes, substitutions, and alterations can be made thereto without departing from the spirit and scope of the invention as defined by the appended claims.
Claims (20)
1. A system for sharing among a plurality of virtual machines computing device resources of the system, comprising:
a computing device;
a memory coupled to the computing device when the system is operational, said memory having stored therein computer instructions that upon execution by the computing device cause the system to at least:
assign a minimum share of computing device resources for at least one of the plurality of virtual machines;
determine a proportional weight for each of the plurality of virtual machines; and
allocate to each of the plurality of virtual machines an allocated share of computing device resources based on the assigned minimum share or the determined proportional weight.
2. The system of claim 1 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to at least allocate to the at least one of the plurality of virtual machines an allocated share of computing device resources based on the determined minimum share where the determined proportional weight is less than the determined minimum share.
3. The system of claim 1 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to at least allocate to a subset of the plurality of virtual machines an allocated share of computing device resources based on the determined proportional weight.
4. The system of claim 3 wherein the allocation of computing device resources according to the proportional weight of each virtual machine comprises:
determining a sum of the proportional weights of the subset of virtual machines; and
calculating a fraction of computing device resources allocated to each of the subset of virtual machines by dividing each of the subset of virtual machine's proportional weight by the sum of the proportional weights of all virtual machines in the subset.
5. The system of claim 1 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to at least allocate to the at least one of the plurality of virtual machines an allocated share of computing device resources based on the determined minimum share and to allocate to a remaining subset of the plurality of virtual machines an allocated share of computing device resources based on the determined proportional weight where the determined proportional weight is based on the share of computing resources remaining after the allocation of the determined minimum share.
6. The system of claim 1 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to at least allocate to the plurality of virtual machines an allocated share of computing device resources based on the determined proportional weight where the assigned minimum share is less than the determined proportional weight.
7. The system of claim 1 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to automatically adjust the determined proportional weight based on the addition of a virtual machine to the system.
8. The system of claim 1 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to allocate to each of the plurality of virtual machines an allocated share of computing device resources based on the assigned minimum share or the determined proportional weight by calculating a fraction of processor resources allocated to each virtual machine by dividing each virtual machine's proportional weight by the sum of the proportional weights of all virtual machines;
for those virtual machines having an assigned fractional share of computing device resources, comparing the assigned fractional share of computing device resources to the share of computing device resources calculated by dividing each virtual machine's proportional weight by the sum of proportional weights of all virtual machines; and
for those virtual machines having an assigned fractional share of computing device resources that is less than the share of computing device resources calculated by dividing the virtual machine's proportional weight by the sum of proportional weights of all virtual machines, allocating to each such virtual machine its assigned share of computing device resources.
9. The system of claim 1 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to sharing the computing device resources by further causing the system to modulate the access of each virtual machine to the computing device resources.
10. The system of claim 9 wherein the modulating the access of each virtual machine to the computing device resources comprises pausing a virtual machine for an interval such that the virtual machine is provided its determined share of computing device resources.
11. A computer-readable media having stored thereon computer readable instructions that upon execution on a computing device cause the sharing of computing device resources of a host computer system among a plurality of virtual machines operational on the host computer system, the instructions comprising instructions for:
assigning a minimum share of computing device resources for at least one of the plurality of virtual machines;
determining a proportional weight for each of the plurality of virtual machines; and
allocating to each of the plurality of virtual machines an allocated share of computing device resources based on the assigned minimum share or the determined proportional weight.
12. The computer-readable media of claim 11 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to at least allocate to the at least one of the plurality of virtual machines an allocated share of computing device resources based on the determined minimum share where the determined proportional weight is less than the determined minimum share.
13. The computer-readable media of claim 11 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to at least allocate to a subset of the plurality of virtual machines an allocated share of computing device resources based on the determined proportional weight.
14. The computer-readable media of claim 13 wherein the allocation of computing device resources according to the proportional weight of each virtual machine comprises:
determining a sum of the proportional weights of the subset of virtual machines; and
calculating a fraction of computing device resources allocated to each of the subset of virtual machines by dividing each of the subset of virtual machine's proportional weight by the sum of the proportional weights of all virtual machines in the subset.
15. The computer-readable media of claim 11 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to at least allocate and to the at least one of the plurality of virtual machines an allocated share of computing device resources based on the determined minimum share and to a remaining subset of the plurality of virtual machines an allocated share of computing device resources based on the determined proportional weight where the determined proportional weight is based on the share of computing resources remaining after the allocation of the determined minimum share.
16. The computer-readable media of claim 11 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to at least allocate to the plurality of virtual machines an allocated share of computing device resources based on the determined proportional weight where the assigned minimum share is less than the determined proportional weight.
17. The computer-readable media of claim 11 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to automatically adjust the determined proportional weight based on the addition of a virtual machine to the system.
18. The computer-readable media of claim 11 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to allocate to each of the plurality of virtual machines an allocated share of computing device resources based on the assigned minimum share or the determined proportional weight by calculating a fraction of computing device resources allocated to each virtual machine by dividing each virtual machine's proportional weight by the sum of the proportional weights of all virtual machines;
for those virtual machines having an assigned fractional share of computing device resources, comparing the assigned fractional share of computing device resources to the share of computing device resources calculated by dividing each virtual machine's proportional weight by the sum of proportional weights of all virtual machines; and
for those virtual machines having an assigned fractional share of computing device resources that is less than the share of computing device resources calculated by dividing the virtual machine's proportional weight by the sum of proportional weights of all virtual machines, allocating to each such virtual machine its assigned share of computing device resources.
19. The computer-readable media of claim 11 wherein the memory has stored therein computer instructions that upon execution by the computing device cause the system to sharing the computing device resources by further causing the system to modulate the access of each virtual machine to the computing device resources.
20. The computer-readable media of claim 19 wherein the modulating the access of each virtual machine to the computing device resources comprises pausing a virtual machine for an interval such that the virtual machine is provided its determined share of computing device resources.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/164,634 US20110252421A1 (en) | 2002-10-18 | 2011-06-20 | Allocation of Processor Resources in an Emulated Computing Environment |
US15/483,710 US20170212789A1 (en) | 2002-10-18 | 2017-04-10 | Allocation of processor resources in an emulated computing environment |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/274,509 US7136800B1 (en) | 2002-10-18 | 2002-10-18 | Allocation of processor resources in an emulated computing environment |
US11/471,337 US7966169B2 (en) | 2002-10-18 | 2006-06-20 | Allocation of processor resources in an emulated computing environment |
US13/164,634 US20110252421A1 (en) | 2002-10-18 | 2011-06-20 | Allocation of Processor Resources in an Emulated Computing Environment |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/471,337 Continuation US7966169B2 (en) | 2002-10-18 | 2006-06-20 | Allocation of processor resources in an emulated computing environment |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/483,710 Continuation US20170212789A1 (en) | 2002-10-18 | 2017-04-10 | Allocation of processor resources in an emulated computing environment |
Publications (1)
Publication Number | Publication Date |
---|---|
US20110252421A1 true US20110252421A1 (en) | 2011-10-13 |
Family
ID=37397764
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/274,509 Expired - Lifetime US7136800B1 (en) | 2002-10-18 | 2002-10-18 | Allocation of processor resources in an emulated computing environment |
US11/471,337 Expired - Fee Related US7966169B2 (en) | 2002-10-18 | 2006-06-20 | Allocation of processor resources in an emulated computing environment |
US13/164,634 Abandoned US20110252421A1 (en) | 2002-10-18 | 2011-06-20 | Allocation of Processor Resources in an Emulated Computing Environment |
US15/483,710 Abandoned US20170212789A1 (en) | 2002-10-18 | 2017-04-10 | Allocation of processor resources in an emulated computing environment |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/274,509 Expired - Lifetime US7136800B1 (en) | 2002-10-18 | 2002-10-18 | Allocation of processor resources in an emulated computing environment |
US11/471,337 Expired - Fee Related US7966169B2 (en) | 2002-10-18 | 2006-06-20 | Allocation of processor resources in an emulated computing environment |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/483,710 Abandoned US20170212789A1 (en) | 2002-10-18 | 2017-04-10 | Allocation of processor resources in an emulated computing environment |
Country Status (1)
Country | Link |
---|---|
US (4) | US7136800B1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160019099A1 (en) * | 2014-07-17 | 2016-01-21 | International Business Machines Corporation | Calculating expected maximum cpu power available for use |
US20160267612A1 (en) * | 2015-03-13 | 2016-09-15 | Sonicwall, Inc. | Centrally managed licensing in a global vpn infrastructure |
US10410155B2 (en) | 2015-05-01 | 2019-09-10 | Microsoft Technology Licensing, Llc | Automatic demand-driven resource scaling for relational database-as-a-service |
US10503704B2 (en) * | 2013-01-23 | 2019-12-10 | Microsoft Technology Licensing, Llc | Isolating resources and performance in a database management system |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7136800B1 (en) * | 2002-10-18 | 2006-11-14 | Microsoft Corporation | Allocation of processor resources in an emulated computing environment |
US8135795B2 (en) | 2003-04-03 | 2012-03-13 | International Business Machines Corporation | Method to provide on-demand resource access |
US7594231B2 (en) * | 2003-07-10 | 2009-09-22 | International Business Machines Corporation | Apparatus and method for assuring recovery of temporary resources in a logically partitioned computer system |
US7299468B2 (en) * | 2003-04-29 | 2007-11-20 | International Business Machines Corporation | Management of virtual machines to utilize shared resources |
US7493488B2 (en) | 2003-07-24 | 2009-02-17 | International Business Machines Corporation | Method to disable on/off capacity in demand |
US7877754B2 (en) * | 2003-08-21 | 2011-01-25 | International Business Machines Corporation | Methods, systems, and media to expand resources available to a logical partition |
US7934020B1 (en) * | 2003-09-19 | 2011-04-26 | Vmware, Inc. | Managing network data transfers in a virtual computer system |
US20050132363A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US7475002B1 (en) * | 2004-02-18 | 2009-01-06 | Vmware, Inc. | Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system |
US8214622B2 (en) | 2004-05-27 | 2012-07-03 | International Business Machines Corporation | Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment |
US7941799B2 (en) | 2004-05-27 | 2011-05-10 | International Business Machines Corporation | Interpreting I/O operation requests from pageable guests without host intervention |
US7793288B2 (en) * | 2004-12-09 | 2010-09-07 | International Business Machines Corporation | Automatic resource management of a guest operating system using information in data set indicating minimum system requirement |
US9606821B2 (en) * | 2004-12-17 | 2017-03-28 | Intel Corporation | Virtual environment manager for creating and managing virtual machine environments |
US8074223B2 (en) * | 2005-01-31 | 2011-12-06 | International Business Machines Corporation | Permanently activating resources based on previous temporary resource usage |
US7774794B2 (en) * | 2005-08-19 | 2010-08-10 | Intel Corporation | Method and system for managing bandwidth in a virtualized system |
US20070101000A1 (en) * | 2005-11-01 | 2007-05-03 | Childress Rhonda L | Method and apparatus for capacity planning and resourse availability notification on a hosted grid |
US20070174460A1 (en) * | 2006-01-26 | 2007-07-26 | International Business Machines Corporation | Method and system for on demand weighted proportional distribution of enterprise allocations |
US8131667B1 (en) * | 2006-04-28 | 2012-03-06 | Netapp, Inc. | System and method for generating synthetic clients |
US8336046B2 (en) * | 2006-12-29 | 2012-12-18 | Intel Corporation | Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources |
US8046766B2 (en) * | 2007-04-26 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Process assignment to physical processors using minimum and maximum processor shares |
US20090216519A1 (en) * | 2008-02-25 | 2009-08-27 | Mohan Parthasarathy | Data Processing System And Method |
KR20090108868A (en) * | 2008-04-14 | 2009-10-19 | 삼성전자주식회사 | Virtual machine management system and method for managing processor resources thereof |
US9501124B2 (en) * | 2008-05-22 | 2016-11-22 | Microsoft Technology Licensing, Llc | Virtual machine placement based on power calculations |
US20090323799A1 (en) * | 2008-06-25 | 2009-12-31 | Stmicroelectronics, Inc. | System and method for rendering a high-performance virtual desktop using compression technology |
US20120297395A1 (en) * | 2008-08-18 | 2012-11-22 | Exludus Inc. | Scalable work load management on multi-core computer systems |
KR20100035394A (en) * | 2008-09-26 | 2010-04-05 | 삼성전자주식회사 | Memory managing apparatus and method in parallel processing |
US8051432B2 (en) * | 2008-11-14 | 2011-11-01 | Novell, Inc. | Techniques for establishing virtual devices |
US8776019B2 (en) | 2008-12-05 | 2014-07-08 | Invensys Systems, Inc. | Configurator with embedded firmware for offline instrument user settings implementation |
US8429652B2 (en) * | 2009-06-22 | 2013-04-23 | Citrix Systems, Inc. | Systems and methods for spillover in a multi-core system |
US9043454B2 (en) * | 2009-08-26 | 2015-05-26 | Red Hat Israel, Ltd. | Auto suspense of virtual machine on client disconnection |
CN102609295A (en) * | 2011-10-18 | 2012-07-25 | 华中科技大学 | Dynamic operation scheduling system of virtual machine |
US9110729B2 (en) | 2012-02-17 | 2015-08-18 | International Business Machines Corporation | Host system admission control |
WO2013145199A1 (en) * | 2012-03-29 | 2013-10-03 | 株式会社日立製作所 | Virtual computer schedule method |
CN103516623A (en) * | 2012-06-25 | 2014-01-15 | 中兴通讯股份有限公司 | Resource distribution method and system |
US9292376B2 (en) | 2012-08-24 | 2016-03-22 | Vmware, Inc. | Proactive resource reservation for protecting virtual machines |
US9602426B2 (en) | 2013-06-21 | 2017-03-21 | Microsoft Technology Licensing, Llc | Dynamic allocation of resources while considering resource reservations |
US10452442B2 (en) * | 2015-11-27 | 2019-10-22 | Huawei Technologies Co., Ltd. | System and method for resource management |
CN107301093B (en) * | 2016-04-15 | 2021-02-09 | 华为技术有限公司 | Method and device for managing resources |
GB2549773B (en) | 2016-04-28 | 2018-05-16 | Metaswitch Networks Ltd | Configuring host devices |
US9996450B2 (en) * | 2016-05-03 | 2018-06-12 | The Boeing Company | Transferring application software between virtual machines |
US10810108B2 (en) | 2016-05-03 | 2020-10-20 | The Boeing Company | Testing application programs using a virtual machine |
US10108531B2 (en) | 2016-05-03 | 2018-10-23 | The Boeing Company | Transferring application software from a physical to a virtual computer system |
KR102316971B1 (en) * | 2017-05-08 | 2021-10-25 | 삼성전자 주식회사 | Method and apparatus for allocating resource in software defined network |
US11188439B2 (en) | 2018-04-13 | 2021-11-30 | Vmware, Inc. | Usage pattern virtual machine idle detection |
KR102640232B1 (en) * | 2018-06-11 | 2024-02-26 | 삼성전자주식회사 | Method and apparatus for allocating resources in virtual environment |
US11503005B2 (en) | 2018-11-09 | 2022-11-15 | Ge Aviation Systems Limited | Tool verification system and method of verifying an unqualified component |
CN110120940B (en) * | 2019-04-12 | 2020-07-07 | 华中科技大学 | File system resource isolation method for Docker container |
US11579942B2 (en) * | 2020-06-02 | 2023-02-14 | Vmware, Inc. | VGPU scheduling policy-aware migration |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5838686A (en) * | 1994-04-22 | 1998-11-17 | Thomson Consumer Electronics, Inc. | System for dynamically allocating a scarce resource |
US20010003831A1 (en) * | 1998-05-29 | 2001-06-14 | Vernon K. Boland | Method and apparatus for allocating network resources and changing the allocation based on dynamic workload changes |
US20020143843A1 (en) * | 2001-01-26 | 2002-10-03 | Mehta Kalpesh Dhanvantrai | Apportioning a shared computer resource |
US20030061263A1 (en) * | 2001-09-26 | 2003-03-27 | Guy Riddle | Dynamic partitioning of network resources |
US6725456B1 (en) * | 1999-11-29 | 2004-04-20 | Lucent Technologies Inc. | Methods and apparatus for ensuring quality of service in an operating system |
US6985937B1 (en) * | 2000-05-11 | 2006-01-10 | Ensim Corporation | Dynamically modifying the resources of a virtual server |
US7143413B2 (en) * | 2002-05-15 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and system for allocating system resources among applications using weights |
US7356817B1 (en) * | 2000-03-31 | 2008-04-08 | Intel Corporation | Real-time scheduling of virtual machines |
US7433951B1 (en) * | 2000-09-22 | 2008-10-07 | Vmware, Inc. | System and method for controlling resource revocation in a multi-guest computer system |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261089A (en) * | 1990-05-16 | 1993-11-09 | International Business Machines Corporation | Optimization of commit procedures by utilizing a two-phase commit procedure only when necessary |
US6269391B1 (en) * | 1997-02-24 | 2001-07-31 | Novell, Inc. | Multi-processor scheduling kernel |
US6542926B2 (en) * | 1998-06-10 | 2003-04-01 | Compaq Information Technologies Group, L.P. | Software partitioned multi-processor system with flexible resource sharing levels |
US6633916B2 (en) * | 1998-06-10 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Method and apparatus for virtual resource handling in a multi-processor computer system |
US6330686B1 (en) * | 1998-11-30 | 2001-12-11 | International Business Machines Corp. | Handling protected conversation messages across IMS restart in shared queues environment |
US6961941B1 (en) * | 2001-06-08 | 2005-11-01 | Vmware, Inc. | Computer configuration for resource management in systems including a virtual machine |
US7136800B1 (en) * | 2002-10-18 | 2006-11-14 | Microsoft Corporation | Allocation of processor resources in an emulated computing environment |
-
2002
- 2002-10-18 US US10/274,509 patent/US7136800B1/en not_active Expired - Lifetime
-
2006
- 2006-06-20 US US11/471,337 patent/US7966169B2/en not_active Expired - Fee Related
-
2011
- 2011-06-20 US US13/164,634 patent/US20110252421A1/en not_active Abandoned
-
2017
- 2017-04-10 US US15/483,710 patent/US20170212789A1/en not_active Abandoned
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5838686A (en) * | 1994-04-22 | 1998-11-17 | Thomson Consumer Electronics, Inc. | System for dynamically allocating a scarce resource |
US20010003831A1 (en) * | 1998-05-29 | 2001-06-14 | Vernon K. Boland | Method and apparatus for allocating network resources and changing the allocation based on dynamic workload changes |
US6725456B1 (en) * | 1999-11-29 | 2004-04-20 | Lucent Technologies Inc. | Methods and apparatus for ensuring quality of service in an operating system |
US7356817B1 (en) * | 2000-03-31 | 2008-04-08 | Intel Corporation | Real-time scheduling of virtual machines |
US6985937B1 (en) * | 2000-05-11 | 2006-01-10 | Ensim Corporation | Dynamically modifying the resources of a virtual server |
US7433951B1 (en) * | 2000-09-22 | 2008-10-07 | Vmware, Inc. | System and method for controlling resource revocation in a multi-guest computer system |
US20020143843A1 (en) * | 2001-01-26 | 2002-10-03 | Mehta Kalpesh Dhanvantrai | Apportioning a shared computer resource |
US20030061263A1 (en) * | 2001-09-26 | 2003-03-27 | Guy Riddle | Dynamic partitioning of network resources |
US7143413B2 (en) * | 2002-05-15 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and system for allocating system resources among applications using weights |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503704B2 (en) * | 2013-01-23 | 2019-12-10 | Microsoft Technology Licensing, Llc | Isolating resources and performance in a database management system |
US20160019099A1 (en) * | 2014-07-17 | 2016-01-21 | International Business Machines Corporation | Calculating expected maximum cpu power available for use |
US20170102755A1 (en) * | 2014-07-17 | 2017-04-13 | International Business Machines Corporation | Calculating expected maximum cpu power available for use |
US9710040B2 (en) * | 2014-07-17 | 2017-07-18 | International Business Machines Corporation | Calculating expected maximum CPU power available for use |
US9710039B2 (en) * | 2014-07-17 | 2017-07-18 | International Business Machines Corporation | Calculating expected maximum CPU power available for use |
US20160267612A1 (en) * | 2015-03-13 | 2016-09-15 | Sonicwall, Inc. | Centrally managed licensing in a global vpn infrastructure |
US10410155B2 (en) | 2015-05-01 | 2019-09-10 | Microsoft Technology Licensing, Llc | Automatic demand-driven resource scaling for relational database-as-a-service |
US11113647B2 (en) | 2015-05-01 | 2021-09-07 | Microsoft Technology Licensing, Llc | Automatic demand-driven resource scaling for relational database-as-a-service |
Also Published As
Publication number | Publication date |
---|---|
US7136800B1 (en) | 2006-11-14 |
US20170212789A1 (en) | 2017-07-27 |
US20060294524A1 (en) | 2006-12-28 |
US7966169B2 (en) | 2011-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7966169B2 (en) | Allocation of processor resources in an emulated computing environment | |
US8667500B1 (en) | Use of dynamic entitlement and adaptive threshold for cluster process balancing | |
US10162658B2 (en) | Virtual processor allocation techniques | |
US9268394B2 (en) | Virtualized application power budgeting | |
EP3039540B1 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
JP6381956B2 (en) | Dynamic virtual machine sizing | |
US9405585B2 (en) | Management of heterogeneous workloads | |
US8161476B2 (en) | Processor exclusivity in a partitioned system | |
US7748005B2 (en) | System and method for allocating a plurality of resources between a plurality of computing domains | |
KR100885346B1 (en) | Virtual machine management using activity information | |
CN101276293B (en) | Method and system for balancing physical system resource access between logic partitions | |
US8209682B2 (en) | System and method for controlling aggregate CPU usage by virtual machines and driver domains over a plurality of scheduling intervals | |
US10656961B2 (en) | Method and apparatus for operating a plurality of operating systems in an industry internet operating system | |
US20130055277A1 (en) | Logical Partition Load Manager and Balancer | |
US20100325454A1 (en) | Resource and Power Management Using Nested Heterogeneous Hypervisors | |
US8082547B1 (en) | Reallocating hardware resources among workloads in accordance with license rights | |
US20180157519A1 (en) | Consolidation of idle virtual machines | |
US8341628B2 (en) | Controlling depth and latency of exit of a virtual processor's idle state in a power management environment | |
KR20060046260A (en) | Systems and methods for implementing an operating system in a virtual machine environment | |
US9183061B2 (en) | Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor | |
US20200034201A1 (en) | Virtual processor allocation with execution guarantee | |
Suo et al. | Preserving i/o prioritization in virtualized oses | |
KR101330609B1 (en) | Method For Scheduling of Mobile Multi-Core Virtualization System To Guarantee Real Time Process | |
Zhi | Literature Survey on Virtual Machine Performance Isolation | |
Zhi | VM Isolation in Xen and KVM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034544/0001 Effective date: 20141014 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |