Slow wired upload speed vs Linux on same hardware

Dawid Oosthuizen 26 Reputation points
2020-09-09T05:18:31.053+00:00

Intel® Ethernet Controller X550-AT2, 10G network interface on ASRock Rack ROMED8-2T with AMD EPYC 7232P processor.
Windows 10 Pro for Workstations, 2004.
Latest Windows updates and Intel drivers installed as of 09/09/2020.

This machine is a dual boot, the above Windows version, and Ubuntu 20.04.
When doing a speed test, I get good performance from Ubuntu, but very poor uploads from Windows. This is on the same machine, the exact same hardware.

The WAN link is 1000Mbps down, 50Mbps up.

This is the Windows speedtest result:
23320-windows-10-speedtest.png

This is the Ubuntu speedtest result:
23325-ubuntu-2004-speedtest.png

I have tried to tweak the adapter's advanced driver settings in Windows, such as disabling LSO, etc. No luck, performance remains poor.

I've also noticed it on another PC running Windows 10 Pro, and a laptop running Windows 10 Pro for Workstations, both give the same poor upload performance. Whereas my other Ubuntu 20.04 Server machine, and also my phone connected via Wi-Fi, is getting good upload speeds.

I have even taken the Windows laptop and plugged it straight into my incoming WAN connection (bypassing router), and it still gets poor upload speeds.

Incidentally, when the speed test is running, I can see that the upload looks bursty on Windows, like it is only getting chunks of data here and there, while in Linux and on Android it looks the same as the download, the graph is drawn at a consistent high rate and with consistent high values.

Windows for business | Windows Client for IT Pros | Networking | Network connectivity and file sharing

50 answers

Sort by: Most helpful
  1. Gary Nebbett 6,536 Reputation points
    2020-12-11T13:31:29.307+00:00

    Hello @mensa84 ,

    Open a PowerShell window running as administrator. This image shows one way of doing that (right mouse clicking over the Windows PowerShell icon and choosing "Run as Administrator"):

    47443-image.png

    Now get ready to run the speed test (but don't start it yet) and then paste the following four commands into the PowerShell window:

     New-NetEventSession -LocalFilePath $Env:TEMP\SlowUp.etl -Name SlowUp  
     Add-NetEventPacketCaptureProvider -TruncationLength 100 -Level 255 -SessionName SlowUp  
     Add-NetEventProvider -Name "Microsoft-Windows-TCPIP" -Level 255 -SessionName SlowUp  
     Start-NetEventSession -Name SlowUp  
    

    Now start the speed test. As soon as it ends, paste the following two commands into the PowerShell window:

     Stop-NetEventSession -Name SlowUp  
     Remove-NetEventSession  
    

    You should now have a file containing the trace data (%TEMP%\SlowUp.etl, i.e. a file named SlowUp.etl in your temporary files directory).

    The file will be quite large, and the best way of sharing it is by copying it to a network storage service, such as Microsoft OneDrive, Google Drive, Dropbox, etc., and posting a link to the file.

    Gary

    Was this answer helpful?

    0 comments No comments

  2. mensa84 6 Reputation points
    2020-12-11T12:22:48.513+00:00

    Here are the ping results where I saw, that the answering server is inside my country (Austria):

    ping -n 100 ping.ubnt.com
    
    Ping wird ausgeführt für d2cnv2pop2xy4v.cloudfront.net [99.86.244.96] mit 32 Bytes Daten:
    Antwort von 99.86.244.96: Bytes=32 Zeit=24ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=15ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=31ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=24ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=15ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=18ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=27ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=19ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=15ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=33ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=29ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=22ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=14ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=15ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=14ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=23ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=18ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=18ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=18ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=21ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=14ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=14ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=13ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=15ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=22ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=19ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=21ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=26ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=21ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=22ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=18ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=18ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=29ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=15ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=15ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=19ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=14ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=29ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=27ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=23ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=14ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=26ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=19ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=19ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=28ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=14ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=24ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=18ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=23ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=31ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=22ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=31ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=16ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=15ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=23ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=17ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=15ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=20ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=18ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=23ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=28ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=18ms TTL=244
    Antwort von 99.86.244.96: Bytes=32 Zeit=24ms TTL=244
    
    Ping-Statistik für 99.86.244.96:
        Pakete: Gesendet = 100, Empfangen = 100, Verloren = 0
        (0% Verlust),
    Ca. Zeitangaben in Millisek.:
        Minimum = 13ms, Maximum = 33ms, Mittelwert = 19ms
    

    Was this answer helpful?

    0 comments No comments

  3. mensa84 6 Reputation points
    2020-12-11T12:01:52.207+00:00

    Hello,

    thanks for the explanation :)

    Yes, until around 1 month ago, I also got 50 Mbit/s upload speeds on the same Windows 10 machine. But I did not change anything and also did not find Windows Updates, which have been installed at exactly that day.

    Normally I do my speed tests at speedtest.net and use the nearest, suggested server. But I there I don't see the hostname / IP address which I should ping for your first test. How should I find out that IP?

    Was this answer helpful?


  4. Gary Nebbett 6,536 Reputation points
    2020-12-10T14:37:19.673+00:00

    Hello @mensa84 ,

    I am still not sure whether you understood my first question: have you ever experienced 50 Mbit/second upload speeds from your local network using a Windows system?

    It is clear that you do get 50 Mbit/second with other systems and would like to obtain that under Windows, but it would be useful to be clear about the historical situation concerning Windows.

    If you are prepared to share the trace data generated by the commands that I mentioned in an earlier message (using New-NetEventSession and so on) then I will take a look at it.

    It is quite possible that an analysis of the trace data will show a lossy link (a link that "loses" IP packets). If that is the case then there is currently nothing that can be done under Windows to improve the situation (none of the built-in congestion control mechanisms provides high throughput over lossy links). All that would remain would be to try to identify the "lossy" leg of the routing path...

    Perhaps we could start with a very simple first step. When you "ping" the system(s) that you use for your upload speed tests, what is the summary of the ping results? To make this more useful, it would make sense to use the "-n" option of ping to specify the number of ping attempts (about 100 should be enough). For example:

    ping -n 100 www.microsoft.com

    Pinging e13678.dspb.akamaiedge.net [2.21.38.54] with 32 bytes of data:
    Reply from 2.21.38.54: bytes=32 time=20ms TTL=47
    Reply from 2.21.38.54: bytes=32 time=18ms TTL=47
    [...]
    Reply from 2.21.38.54: bytes=32 time=19ms TTL=47
    Reply from 2.21.38.54: bytes=32 time=24ms TTL=47
    Reply from 2.21.38.54: bytes=32 time=181ms TTL=47

    Ping statistics for 2.21.38.54:
    Packets: Sent = 100, Received = 100, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 15ms, Maximum = 181ms, Average = 19ms

    The information in bold is what I would like to see.

    Gary

    Was this answer helpful?

    0 comments No comments

  5. mensa84 6 Reputation points
    2020-12-10T03:59:13.647+00:00

    Hello,

    is there any solution or workaround to ger normal upload speed in Windows 10 back again?
    I still don't understand why I habe full 50 Mbit upload on Linux and Apple devices, but only around 4 Mbit in Windows 10. Can somone please explain it not so deeeply technically to me?

    I would even buy other hatdware if that would help?

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.