Saturday, April 5, 2014

Receive Side Scaling (RSS) in Windows Server 2012 and Windows Server 2012 R2

Receive Side Scaling (RSS) is a technology on a network adapter to distribute network receive traffic to multiple processor cores. By default, only the first single core of CPU handles the network traffic. The single core will be the bottleneck because only 1 single core to handle all network traffic in a server.

What's new in Windows Server 2012 or Windows Server 2012 R2 of Receive Side Scaling (RSS)?
  • RSS enables Windows Server 2012 to scale optimally on large servers that have more than 64 processors
  • RSS allows multi-NUMA node servers, such as web servers, file servers, and servers running other workloads, to scale efficiently
  • For DirectAccess, RSS allows improved scalability by actively load balancing forwarded traffic
  • RSS enables financial applications, such as ticker plants and algorithmic trading systems using UDP as their transport, to scale with increasing load
  • RSS provides applications with an input/output control to align themselves with the stack
  • RSS is compatible with the Windows load balancing and failover solution
  • RSS provides administrators with the ability to deploy, manage, and diagnose RSS functioning through standard management interfaces and diagnostics tools
  • RSS optimally scales all workloads by aligning the networking stack with the kernel scheduler. RSS uses the processor list provided by the kernel scheduler while making processor selection decisions
Quote from Receive Side Scaling (RSS)

To use Receive Side Scaling (RSS), network adapters and Operating Systems need to support  it. Windows Server 2012 and Windows Server 2012 R2 support Receive Side Scaling (RSS) and enabled by default.

We can launch the NIC properties of "Device Manager" to make sure "Receive Side Scaling" is supported by this NIC.

or perform "Get-NetAdapterAdvancedProperty -Name <NIC Name>" to check the "Receive Side Scaling"  setting of a NIC.

Now, we know how to check the RSS settings of NICs and Operating Systems. We can perform some cmdlets to change the settings of RSS.

Remark: There is no GUI to configure the RSS settings.

The default profile of RSS is "NUMAStatic". Administrators can perform Set-NetAdapterRss -Profile to change to other profile.

As before version, administrators can configure the registry to assign the processor for RSS. Staring from Windows Server 2012, administrators can perform Set-NetAdapterRss to configure the settings.

Perform "Set-NetAdapterRss -Name <NIC Name> -BaseProcessorNumber 1 -MaxProcessor 2" to update the RSS settings to use the second core processor and then maximum processors to assign is 2.

Remark: The first processor core starts from 0.

Now, I assigned 2 processors for this NIC for RSS. After changing the processor number of RSS, administrators should need to update the "Number of Receive Queues" of RSS to fully utilize the CPU.

Remark: Make sure the NIC supports to update the "Number of Receive Queues".

Why do we need to update the processor number of RSS?

If Dynamic Virtual Machine Queue (DVMQ) is also enabled on the server, By default, Dynamic Virtual Machine Queue (DVMQ) share same processors with RSS. It affects the performance of CPU and network. Administrators need to assign difference processors for RSS and DVMQ.

To update the processors assignment of DVMQ, administrators can perform "Set-NetAdapaterVmq"

RSS can be enabled on a network adapter that is teamed with another network interface card using NIC Teaming. In this scenario, only the underlying physical network adapter can be configured to use RSS. A user cannot set RSS cmdlets on the teamed network adapter.

Quote from Choosing a Network Adapter

More information

This posting is provided “AS IS” with no warranties, and confers no rights!

No comments:

Post a Comment