Professional Documents
Culture Documents
Dell VCPU Sizing Considerations - 0
Dell VCPU Sizing Considerations - 0
Written by David Davis, Virtualization Evangelist & Alex Rosemblat, Product Marketing Manager
2
more than one processor or core at a time. application but that app isn’t multi-
For example, if you have a quad-core CPU, threaded, you are wasting the cost
watch the application as the CPU demands of those CPUs. However, in a virtual
increase. If the application can use only infrastructure, if you over-allocate
25 percent of total CPU capacity (one of multiple vCPUs to a VM and the primary
the four cores), then it is a single-threaded app on that VM isn’t multi-threaded, you
application that can’t use more than one could actually cause performance issues
core. On the other hand, if the application for that VM and others. This is because,
is using 50, 75 or 100 percent of the total with multiple vCPUs, the hypervisor’s
CPU capacity (four of the four cores), then CPU scheduler must wait for multiple
it is multi-threaded. physical CPU time slots to become
available before it can process requests
Whether you are running an application from the multi-vCPU VM.
on a physical server or a virtual machine,
you want to have multiple CPUs In other words:
available only if the application running • With one vCPU, CPU requests are quickly
on that host can take advantage of those processed (or they are waiting on pCPU if no
CPUs with multiple threads. pCPU is available), as illustrated in Figure 2
• With multiple vCPUs, the hypervisor CPU If your virtual hosts
Having multiple vCPUs when they are
not needed will slow down VMs.
scheduler must wait for multiple pCPUs
to be available, as shown in Figure 3.
don’t have the
On a physical server, if you have multiple Therefore, having multiple vCPUs when CPU capacity that
CPUs available for the server’s primary they are not needed will slow down VMs.
today’s applications
demand, you should
solve that problem
before analyzing
vCPU allocations.
3
100 percent CPU
usage for short
periods isn’t cause
for changing CPU
configuration.
Instead, look at
Figure 3. Application command processing with multiple vCPUs
CPU statistics
over a slightly Things to know before you begin the CPU was utilized, over the time range
analyzing vCPU allocations
longer sample Before you begin your analysis, resolve
selected. Note that the total CPU includes
all vCPUs on a VM or all pCPUs on a host.
time to ensure that any virtual host and VM performance If you have greater than 80 percent CPU
problems. utilization on a VM or host over a one-
you are seeing hour time period, you should find ways to
4
all virtual machines. We’ll provide a How to view and modify vCPUs for VMs
detailed process below but first, let’s Viewing and modifying vCPU
cover two statistics you need to know configurations on your VMs isn’t
before you start that process: something VMware admins need to do
• CPU usage maximum (cpu.usage. every day; however, you do need to
maximum) in percent—This shows the know where to do it and when you can
maximum amount of CPU that was used make changes:
at any one time, as a percentage. Keep • To view VM vCPU configuration—Click on
in mind that if you have two vCPUs, a 50 a VM and looking at the Summary tab.
percent utilization value is 100 percent of • To edit VM vCPUs—Go to a VM’s properties
one vCPU and 0 percent of another, or 25 and then click on the CPU in the hardware
percent of one and 25 percent of another. tab.
This value will be used to determine if we
hit the maximum amount of CPU already
• To view vCPU configurations across all
VMs—Go to a higher level in the virtual
You can configure
allocated to that VM during the time range. infrastructure (from a VM, go up to the a Mhz limit on a
• CPU usage average (cpu.usage.average) ESXi server or up to the resource pool or
in percent—This value shows the average cluster level) and then click on the Virtual virtual machine’s
CPU utilization over the time range. Note
that this is based on the total number of
Machines tab.
vCPU, but it rarely
vCPUs; for example, if you have two vCPUs, Additional factors to keep in mind
when allocating VM CPUs
makes sense.
a 100 percent utilization over the time
range is 100 percent of both vCPUs. Limits Instead, set a CPU
By configuring a limit on a virtual
Understanding time ranges and machine, you are placing an artificial
Mhz limit across all
sample periods cap on the maximum amount of CPU VMs in a particular
To be able to accurately understand that the VM can use. Without a limit, the
statistics that you are viewing, you maximum CPU that can be used is the resource pool.
must fully understand that these stats Mhz of the pCPUs on the server, per
are measured over the default sample vCPU allocated to a VM. Keep in mind
periods or whatever sample period you that while a VM has full access to the
specify. For example, if you measure total Mhz of a pCPU (per vCPU allocated),
real-time or one-minute CPU usage, it those pCPUs are still shared between
is very likely that you will see periodic that VM and all others on that virtual
CPU utilization peaks of 100 percent. host. Note that limits configured in the
Short periodic CPU usage at 100 percent hypervisor aren’t visible to the guest OS,
isn’t cause for alarm or changes to CPU which can further cause unexpected
configuration. Instead, I recommend application performance issues.
that you look at CPU statistics over a
slightly longer sample time to ensure While functionality exists to configure a
that you are seeing trends instead of Mhz limit on a virtual machine’s vCPU,
instantaneous usage. it rarely makes sense. Instead, it makes
more sense to set a CPU Mhz limit across
Some number of the statistical samples all VMs in a particular resource pool.
are pulled out and stored in a historical
database for use when you run a Many times, VM CPU limits are put in
performance report over a specific place by an administrator who did not
time period. Understanding both the fully understand the poor performance
sample time and the time range are and wasted resources that limits can
important when it comes to interpreting create. When looking at CPU utilization,
performance graphs. CPU limits skew performance metrics
and can cause confusion while
5
troubleshooting. In other cases, VM CPU Special considerations when changing
limits have also been put in place by the vCPU configurations
VMware admin to limit physical resource When you determine that the number
consumption by applications (often of vCPUs that a VM has configured
unbeknown to the application owner). needs to be changed, there are a
few considerations:
Reservations • When going from one vCPU to many, or
CPU reservations artificially set the from many to one, vCPU kernel changes
minimum amount of CPU that a virtual are required in the VM guest operating
machine (or resource pool) has access system. For example, with Windows Server
to. Even though those CPU resources 2003, you need to make a change to the
may not be needed by the VM now, a HAL (see VMware KB article 1003978 for
reservation pulls those CPU resources more information). However, with Windows
Take the time away from other virtual machines that Server 2008, you can switch between
to understand may need it. Like limits, reservations are single and multiple CPUs without making
better set on resource pools instead any HAL changes.
how and when of individual virtual machines since • Virtual machines need to be shut down
they can hurt the performance of other to remove vCPU, and most VMs need to
applications are virtual machines and skew CPU metrics be shut down to change vCPU unless
used. Those due to the artificial requirements being the vSphere “hot plug CPU” feature was
put in place. enabled before boot AND the VM meets
insights will help the operating system requirements to use
The application’s needs that feature.
you properly size Taking the time to look inside the virtual
The VM CPU sizing process
vCPU for the VM, machine and analyze the CPU resources
that an application uses can yield a great Overview
configure resource deal of information about that VM’s CPU Not only is a virtual environment dynamic,
needs. When evaluating a Windows but the usage of the applications in the
controls (if needed), operating system, you can run Resource VMs will be in constant flux. As a VMware
and understand Monitor and Performance Monitor to admin working on a critical production
expose which processes use the most virtual infrastructure with hundreds or
the priority of each CPU and how it varies. thousands of constantly changing virtual
machines, you need a formal process
application. Also, speaking to the business owner for for proper vCPU sizing, not just a “rule
an application helps determine when of thumb.”
that application is used, who uses it,
what would happen if it were unavailable, This process, ideally, involves the
and how the use of the application is application admins and will have to be
growing (or shrinking). undertaken both when a new VM is
being created for an application and on
By taking time to understand these a periodic basis.
factors, VM administrators can draw
further insights into properly sizing The workflow diagram on the next page
vCPU for the VM, configuring resource introduces a best practice for how to
controls (if needed), and understanding execute this process. While this process
the priority of the application as may need slight modification for certain
compared to other apps. companies, it will work as is for most
VMware administrators.
6
Make sure you
identify the true
peak by investigating
Figure 4. The VM CPU sizing workflow occurrences of 100
The vCPU sizing process for an
percent CPU to see
have a common application that you
existing VM know is relatively predictable, you can if they are one-time
Let’s look at the steps in this vCPU sizing safely look at time frames between one
process if we are not dealing with a week and one month.
anomalies.
newly deployed VM (the branch to the
right in the figure). Step 2: Find the peak (maximum) value.
So what peak value do you choose?
Step 1: Determine the time frame for Peak values are interesting because they
analysis. show whether the vCPUs were ever 100
As I mentioned earlier in this guide, percent utilized during your time period.
when performing your analysis, you However, you need to investigate exactly
need to take the perspective of the when the 100 utilization occurred
time frame into consideration. It’s easy (for example, was it during backups?)
to interpret statistics incorrectly and and weigh your findings with the
make improper vCPU configurations by average utilization. For example, an
looking at a poorly selected time range. instantaneous value of 100 percent CPU
utilization for a single vCPU VM over a
While it is difficult to pick one time frame week means nothing if it happened only
that is perfect for all situations, I generally once during the backup window and the
recommend a time frame that is no less average utilization is just 25 percent.
than one week. However, in some cases,
that time frame may be as much as a year In other words, don’t just look at the
(such as a retail company that has high current value and use that. Use the tips
utilization around the holiday season or a above in determining a time frame to
university that has high utilization around make sure that you identify the true peak.
registration). On the other hand, if you
7
Step 3: Compare the peak usage value for both current and expected future
to allocated CPU. usage, or a VM may face vCPU-related
Once you find the true average and peak performance issues.
(maximum) percent of vCPU utilized
during your sample, compare that to Once you establish the expected growth
the number of vCPUs configured for rate, add a buffer to ensure that the
the virtual machine. Then use these vCPU allocation is accurate. While
guidelines: historical peaks have likely been taken
• If the average is less than 38 percent and into account, it is still good to factor
the peak is less than 45 percent, consider in a buffer to ensure that the virtual
downsizing vCPUs. machine’s vCPU has headroom to grow
• If the average is greater than 75 percent into and does not max out. For less
critical applications, a buffer may not
Be sure to provision and the peak is above 90 percent, consider
adding vCPUs. be necessary, and can be avoided to
sufficient vCPU for retain more CPU capacity for other VMs.
For example, if the VM is configured with However, for multi-threaded critical
both current and two vCPUs and the maximum utilization applications whose CPU utilization
is 100 percent, you are maxing out both fluctuates, adding an additional vCPU is
expected future vCPUs at some point. If the average recommended. This way, in the event
usage; otherwise, utilization is consistently greater than 80 that an unexpected, business-critical
percent, then consider adding vCPUs. demand on CPU happens, end-user
the VM may face application performance won’t suffer.
On the other hand, if you find that that
vCPU-related vCPUs never hit their maximum, average Step 5: Make kernel-level changes if
performance issues utilization is low, and you have more needed, change the vCPU allocation,
than one vCPU, then consider migrating and document all your changes.
later on. the VM down to one vCPU (or reducing Once you’ve completed the first four
the VM’s vCPUs by one). steps, it is time to change the virtual
machine’s number of vCPUs.
Step 4: Forecast the expected growth
rate and factor in a buffer to determine First, shut down the guest OS. Unless the
the right allocation. correct guest OS is installed and CPU hot
Before you decide to downsize a VM’s plug is enabled (assuming you need to
vCPU configuration, be aware that the add additional vCPU), the guest OS must
vCPU demands of the VM (and, more be shut down to add or remove vCPU
specifically, its applications) could from a virtual machine.
increase by the time that you repeat
the vCPU sizing process. Ask yourself Next, resize the virtual machine’s vCPU.
the following questions: Has the Right-click on the VM (in the hosts
application owner been contacted? Was and clusters inventory) and then click
an increasing trend in vCPU demand Properties. At that point, you’ll see a
noted based on historical analysis? It is window (see Figure 5) where you can
important to provision sufficient vCPU resize the VM’s CPUs on the Hardware tab.
8
Figure 5. Configuring vCPU on a vSphere VM Once you have
Once the VM’s vCPU has been resized, On the other hand, if a new VM is being deployed a new
you need to take guest OS kernel and
HAL changes into account. Typically,
created for a new application or use
case, and this is no indication how many
VM, monitor CPU
the servers that need HAL or kernel vCPUs should be allocated for that app usage closely to see
changes when going from one CPU to and its users, you could just go with the
several, or from several to one, are the recommendations as if the app were if more vCPUs are
older Windows Server operating systems
like Windows Server 2003. Without the
being installed on a physical server. Or,
you could start with just one vCPU and
needed.
proper changes, Windows 2003 Server see how it goes from there.
systems will perform slowly or not at all.
Windows Server 2008 and Linux-based It may be tempting to go with a gut
systems don’t require any HAL or kernel feeling (such as the SharePoint admin’s
changes when their number of virtual preference that his VM to have six vCPUs)
CPUs is changed. or to use the same number of vCPUs
that a physical server is configured
Finally, you can document the change to with. But with those methods, it’s likely
the VM’s vCPU and power back on the VM. that the resulting allocation will either
grossly overshoot the number of vCPUs
The vCPU sizing process for a new VM needed or, even worse, underestimate
Now, let’s look at the vCPU sizing the number of vCPUs required by the
workflow in Figure 4 again but this time, application and its users.
let’s say that a new virtual machine is
being provisioned, so we’ll follow the path Step 2: Monitor CPU metrics intensely.
to the left. There won’t be any historical Once a new VM has been deployed with
performance data for this new virtual a given number of vCPUs, CPU usage
machine. Because of this, the vCPU should be monitored intensely. Just how
configuration made for this VM could be frequent and in-depth this monitoring
much less accurate and the VM will need needs to be depends on how critical the
to be monitored more closely. VM is. Administrators may also be able to
rely on vSphere alarms to alert them if the
Step 1: Initially, allocate the minimum new VM hits high CPU utilization.
vCPUs possible. When monitoring, look at the vSphere
In many cases, there will be some idea VM CPU usage level and also look inside
of how many vCPUs a new VM should the guest OS to see how much CPU is in
have based on the same application (or a use and by what application. Is the VM
similar app) running on another VM. But maxing out the base quantity of vCPUs
even if this information is available, the you configured? If so, then more vCPUs
process of monitoring and reviewing are likely needed.
described below should still be followed.
9
Step 3: Add more vCPUs one at a time. new VM has an appropriate number of
If the new VM is running low on CPU vCPUs, be sure to include the new VM in
capacity, add more vCPUs—one at a the periodic vCPU review process.
time. Remember, you want to find the
right number of vCPUs for the VM, not Keep SLA requirements in mind.
just throw a bunch of resources at it and As administrators, we strive to give
potentially cause performance problems applications what they need for peak
later. When you add an additional vCPU, performance. However, in the real world,
be sure to monitor very carefully. due to service level agreements or cost
models, this isn’t always possible. In
Set up a regular CPU sizing review these cases, we have to intentionally give
based on an appropriate time frame. fewer vCPUs than would be ideal or use
Because application usage changes, vCPU resource controls like limits in order to
Because application must be continuously evaluated to ensure give a VM (and its underlying CPU-hungry
usage changes, you that performance remains high through application) only what should be allocated
any additional changes in the dynamic for business reasons.
should regularly virtualized infrastructure.
Thus, keep service level agreements in
review vCPU Accordingly, you should set up a regular mind when analyzing vCPU allocations
usage to ensure vCPU review process at appropriate and realize that there are cases where we
intervals. My recommendation is to hold have to allocate a vCPU value other than
that performance reviews once per month. However, some what is optimal.
organizations that are growing quickly
remains high. may want to perform reviews more Auto-size vCPUs in your
frequently. Once a VM sizing process environment
has been conducted a few times on the You can automatically calculate
virtual machines in an environment, the vCPU allocation using the techniques
steps will become more familiar and described in this white paper with a
administrators will be able to build on their 30-day free trial of Dell vOPS Server
experience to streamline the process. Standard™. The free trial of vOPS Server
Whenever you add a new VM, once the Standard™ installs as a virtual appliance
vCPU usage has been stabilized and the in 20 minutes.
10
Conclusion In additional, regular monitoring of
Besides memory, CPU is the most CPU usage will help VM administrators
finite computing resource that a virtual proactively spot problem areas in VMs
infrastructure has. By implementing that are under-provisioned, so they can
the workflow detailed in this paper, prevent performance issues. Ultimately,
virtualization administrators can more accurately sizing vCPU in virtual machines
efficiently use their computing resources. benefits everyone: the organization can
Data centers will be able to reclaim realize a better return on investment
CPU resources for other VMs, enabling for a virtualization initiative, and both
them to increase VM density and defer application owners and end users see
hardware purchases. better application performance.
11
For More Information
© 2013 Dell, Inc. ALL RIGHTS RESERVED. This document DELL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS
contains proprietary information protected by copyright. No ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING
part of this document may be reproduced or transmitted in TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE
any form or by any means, electronic or mechanical, including IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR
photocopying and recording for any purpose without the A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO
written permission of Dell, Inc. (“Dell”). EVENT SHALL DELL BE LIABLE FOR ANY DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL
Dell, Dell Software, the Dell Software logo and products—as DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES
identified in this document—are registered trademarks of Dell, FOR LOSS OF PROFITS, BUSINESS INTERRUPTION OR LOSS
Inc. in the U.S.A. and/or other countries. All other trademarks OF INFORMATION) ARISING OUT OF THE USE OR INABILITY
and registered trademarks are property of their respective TO USE THIS DOCUMENT, EVEN IF DELL HAS BEEN ADVISED
owners. OF THE POSSIBILITY OF SUCH DAMAGES. Dell makes no
representations or warranties with respect to the accuracy or
The information in this document is provided in connection completeness of the contents of this document and reserves
with Dell products. No license, express or implied, by estoppel the right to make changes to specifications and product
or otherwise, to any intellectual property right is granted by descriptions at any time without notice. Dell does not make
this document or in connection with the sale of Dell products. any commitment to update the information contained in this
EXCEPT AS SET FORTH IN DELL’S TERMS AND CONDITIONS AS document.
SPECIFIED IN THE LICENSE AGREEMENT FOR THIS PRODUCT,
About Dell
Dell Inc. (NASDAQ: DELL) listens to customers and delivers
worldwide innovative technology, business solutions and
services they trust and value. For more information,
visit www.dell.com.
Dell Software
5 Polaris Way
Aliso Viejo, CA 92656
www.dell.com
Refer to our Web site for regional and international
office information.
Whitepaper-vCPUsizingConsideration-US-SW-02-27-2013