Best practices for virtualization (SharePoint Server 2010)
Published: June 16, 2011
Microsoft SharePoint Server 2010 is fully supported when you deploy it in a virtual environment that is supported by Windows Server 2008 or by Windows Server 2008 Hyper-V technology. SharePoint Server 2010 is also supported for virtualization technologies that are accredited by the Server Virtualization Validation Program (http://go.microsoft.com/fwlink/p/?LinkId=125649) environment.
This article is one of a series of Best Practice articles for Microsoft SharePoint Server. This article describes best practices for SharePoint Server 2010 virtualization. For more articles in the series, see Best practices (SharePoint Server 2010). For additional information and resources regarding Best Practices for SharePoint Server 2010, see the Best Practices Resource Center (http://go.microsoft.com/fwlink/p/?LinkID=125981).
The best practices in this article are ordered based on the sequence in which they would apply as you move from creating a virtual machine to deploying SharePoint Server.
1. Use hardware-assisted virtualization
If the host computer processor supports hardware-assisted virtualization (HAV), enable this option. Hardware-assisted virtualization helps to improve performance of virtualization software and application response times. Depending on workload, hardware-assisted virtualization can provide a 5% or better gain in throughput. You can use the Microsoft Hardware-assisted Virtualization Detection Tool (http://go.microsoft.com/fwlink/p/?LinkId=219550) to determine if a computer processor supports hardware-assisted virtualization and whether this setting is enabled.
Hardware-assisted virtualization is provided by the Intel Virtualization Technology (Intel VT) processor family and the AMD Virtualization (AMD-V) processor family.
2. Enable hyper-threading on processors that support this technology
Hyper-threading is a technology that is available with processors that support symmetric multithreading (SMT). This technology provides two threads for each processor core. The net effect is a doubling of logical processors for each core.
Performance tests on an 8-core server with hyper-threading enabled showed that throughput increased, on average, by 16% on a workload that is not specific to Microsoft SharePoint Server 2010.
For more information, see Requirements and Limits for Virtual Machines and Hyper-V in Windows Server 2008 R2.
3. Configure Non-Uniform Memory Access correctly
Non-uniform memory access (NUMA) is a computer memory design that is used in multiprocessors to improve performance by reducing memory access latency and increasing memory bandwidth. For more information, see Understanding Non-uniform Memory Access (http://go.microsoft.com/fwlink/p/?LinkID=164492) and Inside Windows Server 2008 Kernel Changes (http://go.microsoft.com/fwlink/p/?LinkId=219551).
However, incorrectly sized NUMA boundaries can reduce, instead of increase throughput. Ensure that virtual machines on a host server that supports non-uniform memory access are allocated the correct amount of memory in relation to the NUMA boundary. The NUMA boundary is calculated by dividing the memory on the host server by the number of processor sockets. Performance is reduced by approximately 8% when the virtual machine memory allocation is larger than the NUMA boundary.
4. Configure the Hyper-V host for optimal performance
Use the following recommendations to configure the host server for optimal performance.
Dedicate the host computer to Hyper-V. Do not run additional applications on the host.
Install and configure only the required roles and services.
Do not store virtual machine data on system drives. The root partition should only contain the operating system and Hyper-V.
Use more than one network adapter on the physical server and dedicate one adapter to Hyper-V Server administration. Do not bind any virtual networks to this adapter. If virtual machines are sharing a network adapter, monitor latency and throughput to ensure that the adapter is not oversubscribed.
5. Maintain version compatibility for integration services
For optimal performance, ensure that the management operating system and guest operating system run the same version of integration services. To upgrade the integration services on a guest operating system to a newer version, perform the upgrade when the virtual machine is running on the version of Hyper-V that includes the version of integration services to which you want to upgrade. For more information, see Version Compatibility for Integration Services.
Do not deploy virtual machines that support integration services together with virtual machines that cannot use integration services on the same host.
6. Determine storage options that are based on virtual machine roles and workloads
Hyper-V supports two storage options for virtual machines: attached physical storage (also known as pass-through disks) and virtual hard disks (VHDs).
Pass-through disks can be local storage or a storage area network (SAN). Pass-through disks are marginally faster than VHDs. When you use physical storage, you lose the benefits of VHDs, such as portability, snapshots, and thin provisioning.
As a best practice, snapshots are not recommended for a production environment.
We recommend that you use pass-through disks only when a virtual machine's storage requirement exceeds 2 Terabytes or when the application on the virtual machine is I/O bound. A good example is a SQL Server database server versus a front-end web server.
Of the three options for virtual hard disks (fixed size, dynamically expanding, and differencing), we recommend fixed-size disks. Fixed-size disks provide the best overall performance and reduce the risk of exceeding physical storage space when a dynamically expanding VHD is not carefully monitored.
Only install the base operating system on the IDE boot drive. Use virtual SCSI hard drives for additional programs and data storage. A virtual machine that is configured to use a SCSI controller lets you add hard drives without shutting down the VM.
For more information about virtual machine storage, see:
7. Configure general virtual machine settings for performance and stability
Configure general and specific virtual machine settings for best performance and stability. We recommend the following configurations:
If the virtual machines are configured for automatic start, use a time delay to reduce resource contention on the host.
Do not save state before shutdown—let the virtual machine shutdown exactly like a physical computer.
Do not synchronize virtual machine clocks to their host. Many SharePoint Server 2010 features use timer jobs. Any latency in time synchronization between a virtual machine and the host affects SharePoint reliability.
8. Do not use snapshots in a production environment
Virtual machine snapshots are file-based snapshots of the state, disk data, and configuration of a virtual machine at a specific point in time. Do not use snapshots in a production environment for the following reasons:
Microsoft SharePoint Server uses timer jobs extensively; snapshot latency adversely affects time-sensitive operations and can result in data corruption or data loss.
Do not configure a virtual machine to save state during shutdown as this is also affected by latency.
Snapshots reduce virtual machine performance and increase physical storage requirements.
For more information, see Hyper-V Virtual Machine Snapshots: FAQ.
9. Design the virtual topology for optimal performance
Design the virtual SharePoint Server farm topology across hosts to maximize overall throughput. We recommend the following:
Maximize overall throughput by mixing farm server roles on each host. For example, you can reduce disk contention by mixing front-end web servers with application servers because they usually do not write to disk at the same time.
Monitor the performance of the front-end web servers on a single host to ensure that scaling out the virtual machines does not result in diminishing or negative performance returns. If this is the case, scale out by deploying the additional virtual machines on a different host.
For more information, see Hyper-V performance tests (SharePoint Foundation 2010).
10. Do not overload the Hyper-V host
Avoid overloading the Hyper-V host computer by using careful planning to ensure that the following key host resources are not over-subscribed.
The ratio of virtual processors to logical processors is one of the determining elements in measuring processor load. When the ratio of virtual processors to logical processors is not 1:1, the CPU is said to be oversubscribed, which has a negative effect on performance.
The root and child partitions require adequate memory to operate effectively. The root partition must have sufficient memory (a minimum of 512 MB) to provide services such as I/O virtualization, snapshot, and management to support the child partitions. A good standard for the memory overhead of each VM is 32 MB for the first 1 GB of virtual RAM plus another 8 MB for each additional GB of virtual RAM. This should be factored in the calculations of how many VMs to host on a physical server. The memory overhead varies depending on the actual load and amount of memory that is assigned to each VM.
Carefully plan virtual machine configuration and deployment based on the following:
Allow for the processing and physical memory requirements of the operating system and Hyper-V.
In a live migration environment, any host that is part of the cluster must have the capacity to host additional virtual machines.
Scale up or scale out
It may be necessary to increase the resources for a virtual machine or add virtual machines to address performance issues on SharePoint Server farm servers.
11. Do not run resource intensive jobs on the Hyper-V host and virtual machines at the same time.
To ensure consistent and optimal performance, carefully monitor the Hyper-V host and virtual machines to ensure that resource intensive jobs are not run at the same time. For example, if you run a backup program on the physical computer and the virtual machines at the same time, there will be resource contention.
The Microsoft SharePoint Server 2010 Content Publishing team thanks the following Microsoft colleagues for contributions to this article:
Bill Baer, Senior Technical Product Manager, SharePoint
Luca Bandinelli, Senior Program Manager, SharePoint Customer Advisory/Engineering Excellence
Bryan Porter, Senior Consultant, Microsoft Consulting Services
Steve Peschka, Senior Principal Service Engineer, SharePoint Online
Craig Schwandt, Principal Consultant, Microsoft Consulting Services
June 16, 2011