The following list of performance counters is considered a base set of counters when you monitor the resource usage on the Remote Desktop Services workload. Log the performance counters to a local performance counter log (.blg). It is less expensive to collect all instances by using the wild-card character “*”, and then extract particular instances by using Relog.exe.
To view providers on the system, run logman.exe query -ets.
Use Logman.exe to collect performance counter log data instead of using Perfmon.exe, which enables logging providers and increases CPU usage.
Performance Tuning for Virtualization Servers
Hyper-V is the virtualization server role in Windows Server 2012. Virtualization servers can host multiple virtual machines that are isolated from each other but share the underlying hardware resources by virtualizing the processors, memory, and I/O devices. By consolidating servers onto a single machine, virtualization can improve resource usage and energy efficiency and reduce the operational and maintenance costs of servers. In addition, virtual machines and the management APIs offer more flexibility for managing resources, balancing load, and provisioning systems.
The following sections define the virtualization terminology that is used in this guide and suggest best practices that yield increased performance on servers running Hyper-V. Tuning guidance that can yield increased performance on servers running Hyper-V, based on a live system state, is also available in the Hyper-V Advisor Pack that is distributed with the Server Performance Advisor tool described earlier in this guide.
For additional information about the Server Performance Advisor tool and the Hyper-V Advisor Pack, see Resources later in this guide.
This section summarizes key terminology specific to virtual machine technology that is used throughout this performance tuning guide:
Any virtual machine that is created by the root partition.
A mechanism that lets a hardware resource be abstracted and shared among multiple consumers.
A virtualized device that mimics an actual physical hardware device so that guests can use the typical drivers for that hardware device.
An optimization to a guest operating system to make it aware of virtual machine environments and tune its behavior for virtual machines.
Software that is running in a partition. It can be a full-featured operating system or a small, special-purpose kernel. The hypervisor is “guest-agnostic.”
A layer of software that sits above the hardware and below one or more operating systems. Its primary job is to provide isolated execution environments called partitions. Each partition has its own set of hardware resources (central processing unit or CPU, memory, and devices). The hypervisor is responsible for controls and arbitrates access to the underlying hardware.
A processing unit that handles one thread of execution (instruction stream). There can be one or more logical processors per core and one or more cores per processor socket.
passthrough disk access
A representation of an entire physical disk as a virtual disk within the guest. The data and commands are “passed through” to the physical disk (through the root partition’s native storage stack) with no intervening processing by the virtual stack.
A partition that is created first and owns all the resources that the hypervisor does not, including most devices and system memory. It hosts the virtualization stack and creates and manages the child partitions.
A virtualized device with no physical hardware analog, so guests may need a driver (virtualization service client) to that Hyper-V-specific device. The driver can use virtual machine bus (VMBus) to communicate with the virtualized device software in the root partition.
A virtual computer that was created by software emulation and has the same characteristics as a real computer.
A virtual abstraction of a processor that is scheduled to run on a logical processor. A virtual machine can have one or more virtual processors.
A software module that a guest loads to consume a resource or service. For I/O devices, the virtualization service client can be a device driver that the operating system kernel loads.
virtualization service provider
A provider exposed by the virtualization stack in the root partition that provides resources or services such as I/O to a child partition.
A collection of software components in the root partition that work together to support virtual machines. The virtualization stack works with and sits above the hypervisor. It also provides management capabilities.
Hyper-V features the hypervisor-based architecture that is shown in Figure 14. The hypervisor virtualizes processors and memory and provides mechanisms for the virtualization stack in the root partition to manage child partitions (virtual machines) and expose services such as I/O devices to the virtual machines.
The root partition owns and has direct access to the physical I/O devices. The virtualization stack in the root partition provides a memory manager for virtual machines, management APIs, and virtualized I/O devices. It also implements emulated devices such as integrated device electronics (IDE) and PS/2, but it supports Hyper-V-specific devices for increased performance and reduced overhead.
The Hyper-V-specific I/O architecture consists of virtual service providers in the root partition and virtual service clients in the child partition. Each service is exposed as a device over VMBus, which acts as an I/O bus and enables high-performance communication between virtual machines that use mechanisms such as shared memory. Plug and Play enumerates these devices, including VMBus, and loads the appropriate device drivers (virtual service clients). Services other than I/O are also exposed through this architecture.
Windows Server 2012, Windows Server 2008 R2, and Windows Server 2008 feature enlightenments to the operating system to optimize its behavior when it is running in virtual machines. The benefits include reducing the cost of memory virtualization, improving multicore scalability, and decreasing the background CPU usage of the guest operating system.