Do you need help with tuning Windows Performance for use in Virtual Environment?
This article is for you.
If you run a large number of virtual machines with Windows in virtual environment, the optimization of these VMs settings could can significantly reduce the host workload and increase the number of VMs that can be run on a server simultaneously.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform Windows related tasks.
In this context, we shall look into the steps to get the most out of our virtual servers.
Tuning Windows Performance for Use in Virtual Environment
While using Windows as a Remote Desktop server, multiple users share the resources of a single server. The less resources each user session consumes, the higher is the density of terminal or VDI sessions supported by a single host.
The same apply when running several Windows copies as a guest system. If we run a large number of virtual machines, the optimization of these VMs settings reduce the host workload.
It will also increase the number of VMs that can run on a server simultaneously.
To optimize Windows to run in different environment, we can use free VMware OS Optimization Tool, available on VMware Labs website . To run it, we need .Net Framework 3.5.
However, we can use it to optimize Windows settings in any virtual environment, like Citrix, Microsoft or VMware.
There are some preset optimization templates for different Windows versions in VMware OS Optimization Tool. Each template contains a number of system settings to use if an OS runs on a virtual machine according to VMware recommendations.
In addition, the templates provide disabling the unused services, features and scheduler tasks, etc, i.e. all those features that waste the resources of a host system.
[Need help with tuning Windows Performance for use in Virtual Environment? We’d be happy to help]
How to optimize Windows 10 image?
In our case, Windows 10 is a guest VM OS.
First, we start VMware OS Optimization Tool and select VMWare\Windows 10 in the list of templates.
This template has a number of settings to use for Windows 10 when running in a VMware virtualization environment.
For example, let us show some of the recommended settings from the template:
1. Disable scheduler tasks as defragmentation, disk check, WinSAT, maps updating, etc.
2. Disabling services for Wi-Fi, Fax, Computer Browser, BranchCache, IPv6, Microsoft iSCSI Initiator, SNMP Trap, EFS etc.
3. Disable auto run for all external drives
4. Disable RSS subscriptions
5. Disabling most Windows visual effects, sound schemas, animations and new lock screen
6. Uninstall the modern apps
7. Disabling animation and hardware acceleration for MS Office applications
8. Reducing of boot time due to the disabling of Active Setup components
9. Disable OneDrive
10. Click Analyze and the report will show whether the current OS settings comply with the template parameters.
We can create our own template based on the existing one and apply it to VMs with a given Windows version or VM templates. In our example, Windows 10 is almost not optimized, only 5 of 110 recommended settings, and 7 of 137 optional ones are applied.
To optimize Windows, select the settings applicable to our environment and click Optimize. If necessary, we can roll back using History tab.
The tool allows to work not only with the local OS copy, but can also connect to a remote VM using VMware View Connection server.
In particular, when using an existing template by Login VSI, the developers have measured that with these settings a VDI host can run 40% more VMs compared to non-optimized Windows 10.
A template for Windows Server 2008 – 2012 is to optimize an OS when using as RD Session Host.
How to tune Windows Performance for use in Virtual Environment?
i. Performance-Tuning the Hypervisor
It is important to optimize individual virtual servers. If we really want to use hardware resources to the fullest, we have to optimize the way the hypervisor allocates resources to VMs.
ii. CPU Optimization
Most of the time, available CPU resources are the factor that limits the number of VMs that can run on a host server.
First, it is important that, regardless of which virtualization product we are using, there is always some overhead associated with the hypervisor.
It is always a good idea to avoid over-committing CPU cores. We should refrain from allocating all available cores to VMs if we can.
Over-committing CPU cores refers to assigning more virtual CPU cores than the total number of physical cores present in the server. Set aside at least a core or two for use by the hypervisor.
Next, take an inventory of the apps that are running and then determine whether each application is multithreaded or single-threaded. If a virtual server runs a single-threaded application, we should typically allocate a single CPU core to the server.
If the single-threaded application is CPU-intensive, then it is possible the virtual server may benefit from having two CPU cores. The application will never be able to use more than one core, but we may be able to offload the overhead related to the server’s OS to the second core.
iii. Memory Optimization
Optimizing host server’s memory primarily has to do with allocating memory that ensures each VM receives the memory it needs.
One of the most common mistakes that administrators make is forgetting to reserve some memory for the hypervisor to use. The amount of memory that should be set aside depends on the hypervisor we use.
Properly allocating memory is important, unless the VMs have sufficient memory, they will use paging to swap pages of memory between the server’s physical memory and the OS page file. Paging is a disk-intensive operation that can kill a server’s performance.
Both Hyper-V and VMware allow for memory over-commitment. The idea behind memory over-commitment is that guest machines are almost always allocated a little bit more memory than it actually need. In order to not run short on memory.
If a situation ever occur where more memory is required than what the physical hardware can actually provide, then performance can suffer.
When it comes to allocating memory, if our priority is performance, then we should avoid memory over-commitment at all costs.
If we are forced to over-commit server’s memory, there is a few things we can do to reduce the impact. The best things we can do is set realistic limits.
There are also some hypervisor-specific features that we take advantage of to ensure better performance.
For example, when we over-commit memory in VMware ESX, it creates a page file. It is equal to the difference between the VM’s memory size and its reservation.
The reservation refers to the actual amount of physical memory that will always be reserved for the VM. Therefore, if we create a 4GB VM with a 1GB reservation, the page file for that VM will be 3GB in size.