Slow Windows TCP performance

VirtualProx

Member
Dec 27, 2017
2
0
21
54
I have a Core I7-4790K running some Windows 10 and Fedora 29 VMs.

All VMs are using the VirtIO interface and latest drivers.

The Hypervisor is ProxMox 5.2.

I'm running iPerf server on the Hypervisor.

This is what I see from a Fedora 29 VM to the Hypervisor:
iperf3 -c 172.16.2.57
Connecting to host 172.16.2.57, port 5201
[ 5] local 172.16.2.2 port 48650 connected to 172.16.2.57 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 2.30 GBytes 19.8 Gbits/sec 4 3.09 MBytes
[ 5] 1.00-2.00 sec 2.80 GBytes 24.0 Gbits/sec 14 3.09 MBytes
[ 5] 2.00-3.00 sec 2.63 GBytes 22.6 Gbits/sec 12 3.09 MBytes
[ 5] 3.00-4.00 sec 3.35 GBytes 28.8 Gbits/sec 4 3.09 MBytes
[ 5] 4.00-5.00 sec 3.51 GBytes 30.2 Gbits/sec 5 3.09 MBytes
[ 5] 5.00-6.00 sec 3.61 GBytes 31.0 Gbits/sec 2 3.09 MBytes
[ 5] 6.00-7.00 sec 3.57 GBytes 30.7 Gbits/sec 6 3.09 MBytes
[ 5] 7.00-8.00 sec 2.84 GBytes 24.4 Gbits/sec 11 3.09 MBytes
[ 5] 8.00-9.00 sec 3.49 GBytes 30.0 Gbits/sec 5 3.09 MBytes
[ 5] 9.00-10.00 sec 3.28 GBytes 28.2 Gbits/sec 6 3.09 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 31.4 GBytes 27.0 Gbits/sec 69 sender
[ 5] 0.00-10.00 sec 31.4 GBytes 27.0 Gbits/sec receiver

I'm assuming that's pretty respectable...

Now from Windows 10 I see:
iperf3.exe -c 172.16.2.57
Connecting to host 172.16.2.57, port 5201
[ 4] local 172.16.2.88 port 57827 connected to 172.16.2.57 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 638 MBytes 5.35 Gbits/sec
[ 4] 1.00-2.00 sec 700 MBytes 5.85 Gbits/sec
[ 4] 2.00-3.00 sec 738 MBytes 6.19 Gbits/sec
[ 4] 3.00-4.00 sec 708 MBytes 5.96 Gbits/sec
[ 4] 4.00-5.00 sec 754 MBytes 6.32 Gbits/sec
[ 4] 5.00-6.00 sec 770 MBytes 6.44 Gbits/sec
[ 4] 6.00-7.00 sec 836 MBytes 7.04 Gbits/sec
[ 4] 7.00-8.00 sec 773 MBytes 6.48 Gbits/sec
[ 4] 8.00-9.00 sec 705 MBytes 5.91 Gbits/sec
[ 4] 9.00-10.00 sec 739 MBytes 6.19 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 7.19 GBytes 6.17 Gbits/sec sender
[ 4] 0.00-10.00 sec 7.19 GBytes 6.17 Gbits/sec receiver

Or about 25% of the performance.

What's going on here? Anyway to improve this?

I'm using a 1500MTU. I tried changing everything to 9000, but it made no difference in performance, and connectivity started breaking on the Windows side.
 
On the advanced properties of the nic of the windows guest, try disabling tcp offloading, I had some problems with this option in the past (but not related to speed)

There are also some buffer configurations, try increasing those and see if it helps

On proxmox there is also a multiqueue config on the network config of the guest, I usually use the same number of queues as cpu cores available to the guest
 
virtio windows drivers are slower than linux..

I never have been able to reach more than 7-8GBIts vs 30-40gbits with linux.

(But I never has tested on a physical windows since years, not sure if windows can have a limit somewhere or if it comes from virtio driver)
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!