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: 1576
Joined: 25 Jan 2020, 17:55

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

Post by Slender » 19 Aug 2024, 14:57

JimCarry wrote:
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?
wow, i dont hear about this soft.
now you can make affinity for all driver using specifed core for all.
set usb to 4 core
gpu to 3 core
your nic to 2 core (msi limit 2)
edit: i think nic isr and nic dpc (with taskload off) need work on one core. idk how to move nic dpс from 0 core.
Attachments
Screenshot 2024-08-19 165119.png
Screenshot 2024-08-19 165119.png (11.42 KiB) Viewed 13573 times
Last edited by Slender on 19 Aug 2024, 18:52, edited 1 time in total.

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

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

Post by Slender » 19 Aug 2024, 14:59

UFO_Pilot wrote:
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.
i think taskoffload is global parameter and you can only disable that. nic offload is not working when taskload is disable (i think)

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, 15:21

@Slender I think you forgot one step, you need to go on this folder and create the strings for the RSS Queues (if they not there)
Attachments
rss.png
rss.png (32.76 KiB) Viewed 13673 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, 15:29

And maybe if you want take a look at these 2 strings:

RssV2
ValidateRssV2

https://docs.nvidia.com/networking/disp ... istry+keys

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

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

Post by Slender » 19 Aug 2024, 18:44

UFO_Pilot wrote:
19 Aug 2024, 15:21
@Slender I think you forgot one step, you need to go on this folder and create the strings for the RSS Queues (if they not there)
my driver have 4rss by default (i check this in wpa, it 100% correct).
say me all settings what you use.
im say make disableoffload my friend with i219 and 9700kf and he say it better reg (like click to kill)
UFO_Pilot wrote:
19 Aug 2024, 15:29
And maybe if you want take a look at these 2 strings:

RssV2
ValidateRssV2

https://docs.nvidia.com/networking/disp ... istry+keys
thanks for this

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, 18:52

now you can make affinity for all driver using specifed core for all.
set usb to 4 core
gpu to 3 core
your nic to 2 core (msi limit 2)
[/quote]

with this tool right ? "intPolicy_x64.exe" but will it make diffrence and if i am using intPolicy_x64.exe why not set core there,instead of msi utility "your nic to 2 core (msi limit 2)"

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

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

Post by Slender » 19 Aug 2024, 19:04

JimCarry wrote:
19 Aug 2024, 18:52
now you can make affinity for all driver using specifed core for all.
set usb to 4 core
gpu to 3 core
your nic to 2 core (msi limit 2)
with this tool right ? "intPolicy_x64.exe" but will it make diffrence and if i am using intPolicy_x64.exe why not set core there,instead of msi utility "your nic to 2 core (msi limit 2)"
[/quote]

you can use official intPolicy or GoInterruptPolicy.
idk, affinities feel always different on all systems and components.
if you set msi limit to 1 and set affinity core 2 it doesnt work, if you want set on 4nd core you need msi limit 4

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, 20:56

Slender wrote:
19 Aug 2024, 19:04
JimCarry wrote:
19 Aug 2024, 18:52
now you can make affinity for all driver using specifed core for all.
set usb to 4 core
gpu to 3 core
your nic to 2 core (msi limit 2)
with this tool right ? "intPolicy_x64.exe" but will it make diffrence and if i am using intPolicy_x64.exe why not set core there,instead of msi utility "your nic to 2 core (msi limit 2)"
you can use official intPolicy or GoInterruptPolicy.
idk, affinities feel always different on all systems and components.
if you set msi limit to 1 and set affinity core 2 it doesnt work, if you want set on 4nd core you need msi limit 4
[/quote]

i dont have 4 core


"you can use official intPolicy or GoInterruptPolicy."

i know them both i and i have them,buti dont think there will make diffrence

"if you set msi limit to 1 and set affinity core 2 it doesnt work, if you want set on 4nd core you need msi limit 4"

i dont have 4 core only from 0 to 3,msi limit default is 1,i will try change it to 2 and see if its better then default 1 or max 4.
Last edited by JimCarry on 20 Aug 2024, 09:18, edited 1 time in total.

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

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

Post by Slender » 19 Aug 2024, 22:08

JimCarry wrote:
19 Aug 2024, 20:56

dont care about limit, it not do better.
you say it default 1, that means driver can use only 1 core for interrupt.
with default settings, what cores uses ndis.sys for dpc and isr traffic?

MatrixQW
Posts: 309
Joined: 07 Jan 2019, 10:01

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

Post by MatrixQW » 20 Aug 2024, 07:01

Slender wrote:
19 Aug 2024, 14:57
JimCarry wrote:
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?
wow, i dont hear about this soft.
now you can make affinity for all driver using specifed core for all.
set usb to 4 core
gpu to 3 core
your nic to 2 core (msi limit 2)
edit: i think nic isr and nic dpc (with taskload off) need work on one core. idk how to move nic dpс from 0 core.
"gpu to 3 core"
When a game runs on the same core where GPU interrupts are, performance will go down with a high CPU load.
Since Windows distributes the load, it will also go to core0 but less often I suppose.
If you have a game with an integrated benchmark utility or a command through the game's console, exclude the game from the gpu's interrupts core in Task Manager and test this. Try gpu default(core0) and gpu on last core.
With Hyper-Threading you need to set core to an even number(0,2,4,6,8, etc), for interrupts and RSS.

"idk how to move nic dpс from 0 core."
It works in Line-Based interrupts. You can set ethernet ISR to a specific core and RSS (DPC) to a different one.
There is no need for more than 1 RSS queue, one single core can handle 1GB connection. More queues are only useful for servers.
You can set everything through PowerShell as admin: (example with 4 cores cpu without Hyper-Threading)

Set-NetAdapterRss -Name "Ethernet" -Profile NUMAStatic -NumaNode 0 -MaxProcessorNumber 3 -MaxProcessors 3 -BaseProcessorNumber 3 -NumberOfReceiveQueues 1 -Enabled $true

I use a batch file for Xperf:

Code: Select all

d:
cd "D:\Data\Documents\Xperf"
xperf -on base+interrupt+dpc
pause
xperf -d dpcisr.etl
xperf -i dpcisr.etl -o dpcisr.txt -a dpcisr
This is my Xperf result for ethernet while playing online:

Code: Select all

--------------------------
DPC Info
--------------------------

CPU 0 Usage,      CPU 1 Usage,      CPU 2 Usage,      CPU 3 Usage, 
usec      %,      usec      %,      usec      %,      usec      %, Module
6881   0.00,         0   0.00,         0   0.00,     50530   0.02, ndis.sys
     
Total = 27198 for module ndis.sys
Elapsed Time, >        0 usecs AND <=        1 usecs,   1814, or   6.67%
Elapsed Time, >        1 usecs AND <=        2 usecs,  15315, or  56.31%
Elapsed Time, >        2 usecs AND <=        4 usecs,   9491, or  34.90%

--------------------------
Interrupt Info (ISR)
--------------------------

CPU 0 Usage,      CPU 1 Usage,      CPU 2 Usage,      CPU 3 Usage, 
usec      %,      usec      %,      usec      %,      usec      %, Module
0   0.00,    105499   0.04,         0   0.00,         0   0.00, ndis.sys

Total = 26649 for module ndis.sys
Elapsed Time, >        0 usecs AND <=        1 usecs,      0, or   0.00%
Elapsed Time, >        1 usecs AND <=        2 usecs,      0, or   0.00%
Elapsed Time, >        2 usecs AND <=        4 usecs,  16293, or  61.14%
Elapsed Time, >        4 usecs AND <=        8 usecs,  10356, or  38.86%
Last edited by MatrixQW on 20 Aug 2024, 09:49, edited 1 time in total.

Post Reply