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.
sadboytunaswag31
Posts: 13
Joined: 09 Aug 2025, 15:57

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

Post by sadboytunaswag31 » 31 Mar 2026, 07:02

St1cky wrote: ↑
02 Aug 2025, 06:22
Intel NIC Driver:

ReceiveScalingMode:
0 = No scaling, simple interrupt model, Disabled.
1 = RSS enabled (default hashing)
2 = MSI-X / Enhanced scaling mode

InterruptMode:
0 = Legacy ( Simple IRQ setup, no per-queue affinity, less efficient )
1 = MSI ( only one interrupt vector used )
2 = MSI-X ( Calls subroutines to register many IRQs and assign to queues )
3* = Adaptive / Auto ( Tries MSI-X, falls back to MSI or Legacy depending on caps )

EnableLHRssWA (*Enable Low Hash Receive Side Scaling Workaround):
Additional flags are set on the RSS hashing configuration, when Enabled ( Default = 1 ).
0 = Disabled
1 = Enabled
EnableLHRssWA only influences behavior when ReceiveScalingMode == 1

DisablePortScaling
0 = Disabled
1 = Enabled ( Default )

ManyCoreScaling - ( DisablePortScaling needs to be Disabled )
0 = Disabled
1 = Enabled ( Default )




I think this should be correct, as far as I've looked at the NIC driver. You could test it with benchmarks.
where do i find these settings so i can change them? i dont see them in:

control panel
my nic
Right-click your NIC → Properties
configure
Advanced tab

also didnt find them in regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
{4d36e972-e325-11ce-bfc1-08002be10318}

where can i find these.

i got an intel i226V pcie nic

User avatar
St1cky
Posts: 21
Joined: 24 Apr 2023, 18:28

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

Post by St1cky » 19 May 2026, 12:19

Run this Powershell:
$ErrorActionPreference = "SilentlyContinue"

$ClassRoot = "HKLM:\SYSTEM\CurrentControlSet\Control\Class"
$EnumRoot = "HKLM:\SYSTEM\CurrentControlSet\Enum"

Get-CimInstance Win32_NetworkAdapter |
Where-Object {
$_.NetEnabled -eq $true -and
$_.PhysicalAdapter -eq $true -and
$_.PNPDeviceID
} |
ForEach-Object {
$nic = $_

$enumPath = Join-Path $EnumRoot ($nic.PNPDeviceID -replace '\\', '\')
$enumItem = Get-ItemProperty -Path $enumPath

$driverRel = $enumItem.Driver
$classPath = Join-Path $ClassRoot $driverRel
$classItem = Get-ItemProperty -Path $classPath

[PSCustomObject]@{
Name = $nic.NetConnectionID
Description = $nic.Name
Status = $nic.NetConnectionStatus
MAC = $nic.MACAddress
GUID = $nic.GUID
PNPDeviceID = $nic.PNPDeviceID
RegistrySubkey = Split-Path $driverRel -Leaf
DriverRelative = $driverRel
RegistryPath = $classPath
DriverDesc = $classItem.DriverDesc
ProviderName = $classItem.ProviderName
DriverVersion = $classItem.DriverVersion
}
} | Format-List
Then select your RegistryPath, example (remove ":") Prefix is important here for active nic 0000:
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0000

There you create Dword32bit or REG_SZ, you could add them to device manager too, but i wouldnt bother with it.

Image
I will create a new network tweaker soon, that will do all that and additional stuff. But i currently have other Projects to work on.
- It will include all known network parameters.
- The ability to modify the Windows TCP/IP stack, in addition to managing all network services.
- Automatic calculation of optimal RSS values.
- Internal driver querying (where possible) to detect available RSS Features, Status and other parameters.
- Binary scan for valid settings (this will show or hide settings depending on whether they are present or not).
- And much more.
Last edited by St1cky on 19 May 2026, 12:26, edited 1 time in total.

EchoGhost
Posts: 8
Joined: 16 Aug 2023, 08:28

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

Post by EchoGhost » 19 May 2026, 12:26

St1cky wrote: ↑
19 May 2026, 12:19
Run this Powershell:
$ErrorActionPreference = "SilentlyContinue"

$ClassRoot = "HKLM:\SYSTEM\CurrentControlSet\Control\Class"
$EnumRoot = "HKLM:\SYSTEM\CurrentControlSet\Enum"

Get-CimInstance Win32_NetworkAdapter |
Where-Object {
$_.NetEnabled -eq $true -and
$_.PhysicalAdapter -eq $true -and
$_.PNPDeviceID
} |
ForEach-Object {
$nic = $_

$enumPath = Join-Path $EnumRoot ($nic.PNPDeviceID -replace '\\', '\')
$enumItem = Get-ItemProperty -Path $enumPath

$driverRel = $enumItem.Driver
$classPath = Join-Path $ClassRoot $driverRel
$classItem = Get-ItemProperty -Path $classPath

[PSCustomObject]@{
Name = $nic.NetConnectionID
Description = $nic.Name
Status = $nic.NetConnectionStatus
MAC = $nic.MACAddress
GUID = $nic.GUID
PNPDeviceID = $nic.PNPDeviceID
RegistrySubkey = Split-Path $driverRel -Leaf
DriverRelative = $driverRel
RegistryPath = $classPath
DriverDesc = $classItem.DriverDesc
ProviderName = $classItem.ProviderName
DriverVersion = $classItem.DriverVersion
}
} | Format-List
Then select your RegistryPath, example (remove ":") Prefix is important here for active nic 0000:
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0000

There you create Dword32bit or REG_SZ, you could add them to device manager too, but i wouldnt bother with it.

Image
I will create a new network tweaker soon, that will do all that and additional stuff. But i currently have other Projects to work on.
Glad to hear it man. I'm still using the old one of yours although it couldn't set RSS properly lol.

User avatar
St1cky
Posts: 21
Joined: 24 Apr 2023, 18:28

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

Post by St1cky » 19 May 2026, 12:32

EchoGhost wrote: ↑
19 May 2026, 12:26
Glad to hear it man. I'm still using the old one of yours although it couldn't set RSS properly lol.
My old tweaker was never truly finished; it really just served to provide a rough overview of what was going on in the background. My next tweaker won't be built in PowerShell, nor will i share source code publicly —I've seen far too often how people take my projects and simply rebrand them. Even with a Modding-Progam I once published, someone simply changed a line or two and then put their name right next to mine—without telling me or doing anything of the sort. In my eyes, that is completely unacceptable.
I will publish it only without the source code. That really shouldn't be a problem for most people. :)

Example:
https://www.youtube.com/watch?v=AHjbosc_sFU

And it's a shame that RSS didn't work out for you, "ReceiveScalingMode" very often blocks RSS or bad combinations.

EchoGhost
Posts: 8
Joined: 16 Aug 2023, 08:28

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

Post by EchoGhost » 19 May 2026, 13:35

St1cky wrote: ↑
19 May 2026, 12:32
EchoGhost wrote: ↑
19 May 2026, 12:26
Glad to hear it man. I'm still using the old one of yours although it couldn't set RSS properly lol.
My old tweaker was never truly finished; it really just served to provide a rough overview of what was going on in the background. My next tweaker won't be built in PowerShell, nor will i share source code publicly —I've seen far too often how people take my projects and simply rebrand them. Even with a Modding-Progam I once published, someone simply changed a line or two and then put their name right next to mine—without telling me or doing anything of the sort. In my eyes, that is completely unacceptable.
I will publish it only without the source code. That really shouldn't be a problem for most people. :)

Example:
https://www.youtube.com/watch?v=AHjbosc_sFU

And it's a shame that RSS didn't work out for you, "ReceiveScalingMode" very often blocks RSS or bad combinations.
Yes, I knew exactly who that was when you mentioned it. He didn't even bother to hide the fact that he stole it. :D

Post Reply