How to correctly set Receive Side Scaling (RSS)

Everything about latency. This section is mainly user/consumer discussion. (Peer-reviewed scientific discussion should go in Laboratory section). Tips, mouse lag, display lag, game engine lag, network lag, whole input lag chain, VSYNC OFF vs VSYNC ON, and more! Input Lag Articles on Blur Busters.
User avatar
Slender
Posts: 1548
Joined: 25 Jan 2020, 17:55

How to correctly set Receive Side Scaling (RSS)

Post by Slender » 18 Aug 2024, 13:43

For example, take the popular rtl8125, which uses the classic NDIS.sys . By default, it uses 2-rss, runs on core 0 and core 1. RSS is a DPC. IRS is the core that the processor load is applied to (ISR is configured separately), isr by default is 0-core.
By default, this is achieved by two commands:

Code: Select all

"*RSSProfile"="1"
"*NumRssQueues"="2"
What should we do if we want to use RSS on only 1 core, or use it on 4 cores at once, but certain ones?
We need 3 more commands:

RssBaseProcNumber - the core from which rss starts
RssMaxProcNumber - the core from which rss ends.
MaxRssProcessors - maximum number of cores used (need set same NumRssQueues)

Example(1): we want use 1 core for rss on 2nd core cpu.

Code: Select all

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001]

"*RSSProfile"="1"
"*RssBaseProcNumber"="2"
"*RssMaxProcNumber"="2"
"*MaxRssProcessors"="1"
"*NumRssQueues"="1"
Example(2): we want use 4 core (4 que) for rss on 4 last cores.

Code: Select all

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001]

"*RSSProfile"="1"
"*RssBaseProcNumber"="4"
"*RssMaxProcNumber"="7"
"*MaxRssProcessors"="4"
"*NumRssQueues"="4"
ISR: ISR can only be processed on one core (as I understand it, if it is not correct me).
For set it, you need use interrupt affinity specifed core, we set 4.

User avatar
Slender
Posts: 1548
Joined: 25 Jan 2020, 17:55

Re: How to correctly set Receive Side Scaling (RSS)

Post by Slender » 18 Aug 2024, 15:21

Attachments
Screenshot 2024-08-18 132127.png
Screenshot 2024-08-18 132127.png (42.32 KiB) Viewed 17861 times

UFO_Pilot
Posts: 13
Joined: 17 Aug 2024, 12:23

Re: How to correctly set Receive Side Scaling (RSS)

Post by UFO_Pilot » 18 Aug 2024, 15:29

Doesn't RSS only works if taskoffloads are enabled? (onboard network card processor)

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

DisableTaskOffload 1

User avatar
Slender
Posts: 1548
Joined: 25 Jan 2020, 17:55

Re: How to correctly set Receive Side Scaling (RSS)

Post by Slender » 18 Aug 2024, 18:02

UFO_Pilot wrote:
18 Aug 2024, 15:29
Doesn't RSS only works if taskoffloads are enabled? (onboard network card processor)

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

DisableTaskOffload 1
idk im test in WPA later

UFO_Pilot
Posts: 13
Joined: 17 Aug 2024, 12:23

Re: How to correctly set Receive Side Scaling (RSS)

Post by UFO_Pilot » 18 Aug 2024, 21:03

Sorry I misstyped that, enabled would be
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
DisableTaskOffload 0

I'm wondering about this because on this current setup I wanted to use this RSS optimization but can't use TaskOffloads enabled, it's fine for browsing but for games and mostly in CPU bound games oddly it messes with the gameplay pacing games feel slowed down like something is blottlenecking.

This motherboard comes with Intel I219-V network card, on the first years I remember after installing the drivers on advanced tab of network settings there would be an option for enabling RSS but with the latest drivers that option is no longer there.

If I force it and do it from registry a entry shows up in the network card advanced tab as "no description"

User avatar
Slender
Posts: 1548
Joined: 25 Jan 2020, 17:55

Re: How to correctly set Receive Side Scaling (RSS)

Post by Slender » 18 Aug 2024, 22:08

UFO_Pilot wrote:
18 Aug 2024, 21:03
Sorry I misstyped that, enabled would be
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Par.ameters
DisableTaskOffload 0

I'm wondering about this because on this current setup I wanted to use this RSS optimization but can't use TaskOffloads enabled, it's fine for browsing but for games and mostly in CPU bound games oddly it messes with the gameplay pacing games feel slowed down like something is blottlenecking.

This motherboard comes with Intel I219-V network card, on the first years I remember after installing the drivers on advanced tab of network settings there would be an option for enabling RSS but with the latest drivers that option is no longer there.

If I force it and do it from registry a entry shows up in the network card advanced tab as "no description"
yes with taskoffload off rss stop work.
for fast on/off (powershell/cmd)

Code: Select all

netsh int ip set global taskoffload=enabled
netsh int ip set global taskoffload=disabled
interesting, how can we do move dpc from 0 core to another with taskloadoff. ISR move when change interrupt driver.
strange, "netsh int tcp show global" not show taskoffload, but we can check state in regedit...
edit: powershell:

Code: Select all

Get-NetOffloadGlobalSetting
also test these:

Code: Select all

netsh interface tcp set global rss=disabled
netsh interface tcp set global rsc=disabled
netsh interface tcp set global autotuninglevel=disabled
netsh int ip set global taskoffload=disabled
if you write "netsh int ip show offload" when taskload is disabled what you see?
what cpu and what nic in your pc?

UFO_Pilot
Posts: 13
Joined: 17 Aug 2024, 12:23

Re: How to correctly set Receive Side Scaling (RSS)

Post by UFO_Pilot » 19 Aug 2024, 05:21

Slender wrote:
18 Aug 2024, 22:08
UFO_Pilot wrote:
18 Aug 2024, 21:03
Sorry I misstyped that, enabled would be
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Par.ameters
DisableTaskOffload 0

I'm wondering about this because on this current setup I wanted to use this RSS optimization but can't use TaskOffloads enabled, it's fine for browsing but for games and mostly in CPU bound games oddly it messes with the gameplay pacing games feel slowed down like something is blottlenecking.

This motherboard comes with Intel I219-V network card, on the first years I remember after installing the drivers on advanced tab of network settings there would be an option for enabling RSS but with the latest drivers that option is no longer there.

If I force it and do it from registry a entry shows up in the network card advanced tab as "no description"
yes with taskoffload off rss stop work.
for fast on/off (powershell/cmd)

Code: Select all

netsh int ip set global taskoffload=enabled
netsh int ip set global taskoffload=disabled
interesting, how can we do move dpc from 0 core to another with taskloadoff. ISR move when change interrupt driver.
strange, "netsh int tcp show global" not show taskoffload, but we can check state in regedit...
edit: powershell:

Code: Select all

Get-NetOffloadGlobalSetting
also test these:

Code: Select all

netsh interface tcp set global rss=disabled
netsh interface tcp set global rsc=disabled
netsh interface tcp set global autotuninglevel=disabled
netsh int ip set global taskoffload=disabled
if you write "netsh int ip show offload" when taskload is disabled what you see?
what cpu and what nic in your pc?
I get nothing just this:

Interface 1: Loopback Pseudo-Interface 1
Interface 3: Ethernet

I disabled all kinds of offloads, not only DisableTaskOffloads but also:

IPv4 Checksum Offload
IPv4 Large Send Offload (LSO)
Offload Receive IP Checksum
Offload Receive TCP Checksum
Offload TCP Segmentation
Offload Transmit IP Checksum
Offload Transmit TCP Checksum
IPV4 Checksum Offload
Large Send Offload v2 (IPV4)
Large Send Offload v2 (IPV6)
TCP Checksum Offload (IPV4)
TCP Checksum Offload (IPV6)
UDP Checksum Offload (IPV4)
UDP Checksum Offload (IPV6)

I think there is something wrong with this NIC (Intel I219-V) or the driver, it seems it can't keep up with CPU in games and it bogs things down if I enable task offloads.

It's working fine now, in theory I should be getting better overall system performance using those but in reality that doesn't happen.

JimCarry
Posts: 586
Joined: 24 May 2024, 20:01
Location: csgo

Re: How to correctly set Receive Side Scaling (RSS)

Post by JimCarry » 19 Aug 2024, 08:34

@Slender I have disabled rss in net adapter settings and in cmd,the first screen is default the second is after change msg from 1 to 4 ,then net adapter runs from core 0 to core 1,2,3.as you can see also the irqs after restarts goes from 1 to 4.@UFO_Pilot and @Slender do you think i should disbletaskoffload and the other offloadstuff?
Attachments
tweak.GIF
tweak.GIF (52.59 KiB) Viewed 17476 times

UFO_Pilot
Posts: 13
Joined: 17 Aug 2024, 12:23

Re: How to correctly set Receive Side Scaling (RSS)

Post by UFO_Pilot » 19 Aug 2024, 08:52

JimCarry wrote:
19 Aug 2024, 08:34
@UFO_Pilot and @Slender do you think i should disbletaskoffload and the other offloadstuff?
I only disabled taskoffloads because I have very obvious performance issues with it enabled.

Test it On Vs Off I would say, and If you can use DisableTaskOffload 0 without adverse side effects you should keep it, because you are taking lot of computing out of your main CPU's back.

JimCarry
Posts: 586
Joined: 24 May 2024, 20:01
Location: csgo

Re: How to correctly set Receive Side Scaling (RSS)

Post by JimCarry » 19 Aug 2024, 09:33

UFO_Pilot wrote:
19 Aug 2024, 08:52
JimCarry wrote:
19 Aug 2024, 08:34
@UFO_Pilot and @Slender do you think i should disbletaskoffload and the other offloadstuff?
I only disabled taskoffloads because I have very obvious performance issues with it enabled.

Test it On Vs Off I would say, and If you can use DisableTaskOffload 0 without adverse side effects you should keep it, because you are taking lot of computing out of your main CPU's back.
Thanks

Post Reply