When it comes to the virutalization of Windows 7, there are considerations for performance. There are options which are enabled by default which makes sense for laptops and even desktops. A VM, however, may not benefit and in fact may see performance loss.

One such feature is TCP Chimney offload. TCP Chimney offload is designed to free up CPU utilization and increase network throughput by moving TCP processing tasks to hardware. This frees up the server’s CPU for other tasks. This makes sense if consider the available processors, ram and types of tasks running. Chances are a VM is only performing a certain task and might even be network bound when considering how many VM’s are running on the host.

If your VM has access to fast processors and enough RAM, you might see an increase in performance by disabling it.

You can verify if it’s running by using the netsh utility

C:\>netsh int tcp show global
 Querying active state...
TCP Global Parameters
 ----------------------------------------------
 Receive-Side Scaling State          : enabled
 Chimney Offload State               : automatic
 NetDMA State                        : enabled
 Direct Cache Acess (DCA)            : disabled
 Receive Window Auto-Tuning Level    : disabled
 Add-On Congestion Control Provider  : none
 ECN Capability                      : disabled
 RFC 1323 Timestamps                 : disabled

To disable it; you would enter:

C:\> netsh int tcp set global chimney=disable

You can verify the change by using the show global command again:

C:\>netsh int tcp show global
 Querying active state...
TCP Global Parameters
 ----------------------------------------------
 Receive-Side Scaling State          : enabled
 Chimney Offload State               : disabled
 NetDMA State                        : enabled
 Direct Cache Acess (DCA)            : enabled
 Receive Window Auto-Tuning Level    : disabled
 Add-On Congestion Control Provider  : ctcp
 ECN Capability                      : disabled
 RFC 1323 Timestamps                 : disabled

Monitor the change and see if you have an improvement.  If you don’t and want to change it back, simply enter:

C:\> netsh int tcp set global chimney=enable

As mentioned it’s default enabled but you may not need it.

If you would like to read more about it the following link will give you more information.  Granted it mentions windows 2008 but the information is still valid.

TCP Chimney and 2008

Advertisements