> Does the VS build target a more
> recent Windows runtime than the legacy one (msvcrt.dll) that mingw
> would link against?

Yes, VS build targets Universal CRT, while mingw targets "classis",
pre-Visual Studio 2015 CRT.

Answering to Gert's question in IRC - CPU load was 25% on 4-core machine,
so I assume that
client is CPU-bound.

I enabled optimization (-O2 -flto) for mingw builds


and problem seems to be fixed, I see no big difference with Visual Studio

I performed series of tests - for each configuration I ran

> iperf3.exe -c -t 60 -V

five times and used average download bandwidth value.

Results below (don't know why they're bit lower comparison to previous
runs, probably AWS datacenter has a bad day today):

Server - openvpn 2.4.4, client tun driver - tap-windows6
mingw, no optimization   - 334Mbit/s (that's what we have in windows
release now)
mingw, optimized            - 390Mbit/s
VS2019 release              - 394Mbit/s

Server - openvpn 2.4.4, client tun driver - wintun
mingw, no optimization   - 650Mbit/s
mingw, optimized            - 731Mbit/s
VS2019 release              - 721Mbit/s

Server - openvpn3 with kernel module, client tun driver - wintun
mingw, no optimization   - 772Mbit/s
mingw, optimized            - 924Mbit/s
VS2019 release              - 901Mbit/s

As you can see, using wintun and mingw optimization increases
download bandwidth more than twice (334Mbit/s -> 731Mbit)

So for the next release we need to build client with optimization enabled
it would be nice to have wintun support in 2.5 (see

Openvpn-devel mailing list

Reply via email to