Browse Prior Art Database

Method and system to optimize virtualized systems on multi-core processor using performance monitor counters feedback loop Disclosure Number: IPCOM000202018D
Publication Date: 2010-Dec-01

Publishing Venue

The Prior Art Database


The intent of this invention is to provide a method to optimize virtual processor configuration of the virtualized systems on multi-core processors, by leveraging the processor's built in performance monitor counters to constantly adjust virtual processor configuration. The expected outcome is that an application or a group of applications with variable load within a virtual system, would always run with an optimal set of virtual processor at all time, without constant human intervention, without rewriting or recompiling the applications.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 23% of the total text.

Page 01 of 12

Method and system to optimize virtualized systems on multi-core processor using performance monitor counters feedback loop

The emergence of multi-core processors has given a shot in the arm to the server virtualization technology. With six-core and eight-core processors being mainstream technology, a dual-socket or quad-socket commodity server could have up to 32 cores for the hypervisor to juggle among a large number of concurrent and competing workloads coming from various virtual machines running on it. While the recent hypervisors are getting better in handling an increasingly larger number of virtual machines, mostly composed of light workloads in a server consolidation usage scenario, these hypervisors are unable to help a highly multi-threaded workload running on a virtualized operating system, achieve higher level of parallelism despite having a large number of processor cores at its disposal.

Today's virtualization technology still rely on the user to determine and set the level of parallelism for each application, by specifying how many processors to assign to each virtual machine. The user, usually a system administrator working together with the application administrator , determines the level of parallelism mostly by a combination of past experience, platform proficiency, programming language, code understanding, perceived bottleneck, peak usage, available resources, and so on. There is no reliable guideline or formula when taking a native application into a virtualized environment as to how much virtual processors to assign to it. Normally, single-threaded application or computing-intensive application prefers fewer processors,

                                                                                          -threaded application prefers more processors. Inappropriate virtual resource configuration could prevent a virtualized workload from achieving its peak performance. Even if such educated guesswork could get us close to the theoretical optimal value, a large system could have widely different workloads at different moments of the day, therefore a static quasi-optimal value still can't possibly be optimum at all time of the day! Consequently there's a perception that an application brought from native to virtualized system will see its performance diminished, given a constant set of hardware resources.

In a series of test that we did, on a Power partition with constant capacity and a constant workload, by varying the number of virtual processor between its near minimum (e.g. 2) to its near maximum (e.g. 16) value, there was a performance fluctuation between -10% to +10%. For the system administrator, setting the virtual processor value is an arbitrary choice, and sometime a difficult one, because it's impossible to find a static optimal value.

while highly multi


Page 02 of 12

(This page contains 00 pictures or other non-text object)

"Increase %" is the performance increase with 16 virtual processors compared to 2 virtual processors. The workloads (A to H) have different busy/sleep ratio. It...