Question Persistently low network speeds on PC with a 1 Gbps service ?

Page 2 - Seeking answers? Join the Tom's Hardware community: where nearly two million members share solutions and discuss the latest tech.
Do you have another pc type device that is connected via ethernet. The goal would be to test inside your house between 2 devices and see what you get for transfer rates and compare that to the speedtest numbers. There is a old line mode tool called IPERF3 that can be used to test transfer. You could i guess use a file transfer and watch the numbers in resource monitor, just be aware some numbers in resource monitor are BTYES/sec and other BITS/sec.

You could try a USB bootable linux image. This will not damage your windows install. Most images have a browser preinstalled and you can run the same speedtest you do in windows. This is mostly to confirm it is some strange issue with windows driver or configurations. If the linux image has the same slow issue then you more suppect hardware.
I tried booting off Ubuntu, and my speeds were insane!
914 down 38 up, so something in windows is likely slowing down my network.
 
Managed to fix this issue with the command:
netsh int tcp set global autotuninglevel=normal

When I talked to Gigabyte support, they did suggest disabling autotuning by command, but resetting it to normal ended up fixing it!
Currently getting 768 down 38 up😎

For anyone else facing slow internet speeds isolated to Windows 10, running this command can help.
 
Last edited:
It's really weird, since someone said you shouldn't disable auto tuning


Apparently your situation is different.

Which version of Windows 10 you are running?

https://en.wikipedia.org/wiki/Windows_10_version_history
W10 version: 22H2
Im not sure what auto tuning was set to before Gigabyte suggested I disabled it yesterday, but setting it back to normal seem to fix everything.
 
Last edited:
  • Like
Reactions: cruisetung
I guess I missed that in your first post. Autotune is microsofts name for what is called tcp window scaling. You know microsoft just has to rename everything to make it seem like they invented it. :). This option has existed for at least 20 years.

Basically your machine must wait until the remote server/machine confirms it actually received the data you sent. Lets say your are doing something crazy and have a connection that is using multiple satellite hops so the delay is 1 second. If you send 1kbit of data at a time you would have to wait 1 second before you can send another 1kbit of data. So you end up with a data transfer rate of 1kbit per second. If send 10kbit at a time you now have a rate of 10kbit.

This is a overly simplified example to make the math simple. You would think you could just end unlimited data without worrying about confirmation it was received. Problem is if the data is damaged you now must resend the whole large block of data. The size it a trade off and tcp window scaling dynamically changes the window size based on how much data loss you are getting.

If you get lots of data loss like on wifi you want the window to stay smaller. When you turn off this option it set it to the lowest fixed value of 65kbytes I think. Even with 10ms of latency this will afffect the maximum transfer rates.
 
  • Like
Reactions: djpleiades
I guess I missed that in your first post. Autotune is microsofts name for what is called tcp window scaling. You know microsoft just has to rename everything to make it seem like they invented it. :). This option has existed for at least 20 years.

Basically your machine must wait until the remote server/machine confirms it actually received the data you sent. Lets say your are doing something crazy and have a connection that is using multiple satellite hops so the delay is 1 second. If you send 1kbit of data at a time you would have to wait 1 second before you can send another 1kbit of data. So you end up with a data transfer rate of 1kbit per second. If send 10kbit at a time you now have a rate of 10kbit.

This is a overly simplified example to make the math simple. You would think you could just end unlimited data without worrying about confirmation it was received. Problem is if the data is damaged you now must resend the whole large block of data. The size it a trade off and tcp window scaling dynamically changes the window size based on how much data loss you are getting.

If you get lots of data loss like on wifi you want the window to stay smaller. When you turn off this option it set it to the lowest fixed value of 65kbytes I think. Even with 10ms of latency this will afffect the maximum transfer rates.
Good ol' Microsoft, slapping their brand on TCP window scaling! That explanation made sense, if all my data had to get confirmed then I can see how it would slow down using smaller data sizes.
Appreciate the breakdown!