Receive Side Scaling(RSS) is a technology that uses a very complex hash function to force a routing of packets to separate cores. Instead of just making one CPU do all the work, it makes all the cores able to help with the work. It requires MSI-X in order to route the interrupts to the core doing the work thus maximizing the work offload, but can work with just MSI. Multiple queues also help make RSS work better, but can still provide some help when used with just one queue.
Windows 2008* supports RSS, but defaults to just a handful of queues. With the 10 Gigabit PCI Express product line we have added a ton of queues, and this handful just isn't enough especially when you consider the number of cores that can ship in even a very modest system. I know you probably think I get paid by the word, but pictures work best here.
Here is what just having the driver installed would look like. I used a couple of systems for the pictures, so don't be worried if your machine doesn't exactly match my sample pics.
As you can see, the O/S limits you out at 4 queues in this dialogue box. After the picture I selected 4 queues for my test. But your Intel® 82599 10 Gigabit Ethernet Controller supports more than that! So does your machine! How do you get that horsepower down to the road?
Here is what the four cores being loaded looks like. These use Intel® Hyper-threading Technology, which is really an extra half core. For our workloads, we can't use the Hyper-threaded core, just the base core, so you'll see an every other CPU on the output.
Here is how to get all the cores you paid for. Install the Intel® PROSet GUI that comes with the driver media. If you run the autorun, it will offer to install it. Our webpacks have it there as well. Notice things have changed quiet a bit.
After you set the number of queues, hit the okay button and follow the heed of the reboot message. The GUI changes some of the O/S parameters too, so if you don't reboot, you won't see the goodness!
Here is what it looks like after the reboot:
Very nicely spread out. (Again remember that Hyper-threading can't do our network loads so they end up low).
RSS is a great technology that allows you to get the maximum spreading of CPU loading on your Windows boxes. With great power comes great responsibility, so I’ve heard, and RSS is no exception. Increasing the number of RSS queues above the default value can actually degrade performance if the application in use isn't tuned for it (i.e. CPU lock contention). Some performance testing software for example is horrible at 16 queues. Microsoft spent a lot of time tuning the HTTP Web Server for high numbers of RSS queues so we definitely recommend this for HTTP web servers, but everyone else's mileage may vary. Use with caution! I'll do another posting soon about the ins and out of RSS but that's a whole 'nother post.
1) To get more than the 4 queue RSS spread, you will need to install PROSet and configure the queues using it
2) Remember to reboot or you won't see the goodness
3) Thanks for using Intel® Ethernet products.