If I understand RSS (Receive Side Scaling) correctly, the src/dst IP+port combos of incoming UDP and TCP packets get hashed, and the packet gets distributed into the available RSS queues using that hash value, using some mapping like hashCode modulo numQueues
- the details of which in fact aren't crucial to this question.
The packets of one RSS queue would then always get processed by the same core. In other words, one queue would mean that only one core processes the packets. This sounds like disabling RSS, whose purpose is to distribute packet processing in the kernel to multiple cores. But there are other ways to disable RSS, in the same NIC settings dialog, or via netsh
.
So what is that setting good for, which I've seen in the NIC settings of Intel and AT adapters?
Fwiw, in UDP packet loss tests I'm performing right now, RSSQueues=1 showed about the same packet loss rates as turning RSS off altogether. Setting RSSQueues=2 in contrast enabled considerably lower packet loss rates.
0 Answers