Giter VIP home page Giter VIP logo

iperf3-win-builds's Introduction

iperf3 - binaries for windows

Benchmark your network limits

iperf3   release   downloads   visitors   stars

Intro

iperf3 can be used to measure maximum network throughput. It allows to calibrate several parameters like timing, buffers, protocols and streams that can help in network optimization. Each test shows various network performance metrics including throughput, jitter and packet loss. iperf3 results are considered much more accurate and reliable.

Last official binary release version was 3.1.3 for Windows in 2016 . This repo is created for iperf3 pre-compiled binaries for Windows. The goal is to create iperf3 Windows executable without any modification in original source code. Each binary released is checked with VirusTotal before upload.

Builds

iperf Ver Cygwin Ver OS OpenSSL Ver
3.17.1 3.5.3-1.x86_64 Win11 64-bit 3.0.13
3.16 3.4.10-1.x86_64 Win11 64-bit 3.0.12
3.15 3.4.9-1.x86_64 Win11 64-bit 3.0.10

Benchmark

  • Many folks use iperf to evaluate internet speed. Public servers are available under links section.
  • Each binary goes through below tests before release:
     •  Download | Upload | Client mode | Server mode | Parallel streams

Release

  • Variations of available release files summarized below:

    Release File OpenSSL Extra Feature Info
    iperf-<ver>-win64.zip No Recommended
    iperf-<ver>-win64-static-auth.zip Yes authentication
    iperf-<ver>-win64-dynamic-auth.zip Yes authentication

NOTE:
Optional features in iperf3 are OS specific. Some features utilize functions and modules that are available under certain kernels. iperf -v lists available features.

Links

Speed Test

Test Cmd
TCP Download iperf3.exe -c <server> -P 10 -4 -R
TCP Upload iperf3.exe -c <server> -P 10 -4
UDP Download iperf3.exe -c <server> -u -P 10 -4 -R
UDP Upload iperf3.exe -c <server> -u -P 10 -4

Disclaimer

esnet/iperf source code copyright and disclaimer applies to this binary distribution. Check License for further details.

iperf3-win-builds's People

Contributors

ar51an avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iperf3-win-builds's Issues

Crash after bad file descriptor

So, I was testing my atrociously flippant powerline connection.. only to realize after half an hour of increasingly puzzled attempts, that I had started to constantly get closed connection errors not due to network conditions but just because the server had crashed. This was on the fateful last client run:

iperf3: error - unable to send control message - port may not be available, the other side may have stopped running, etc.: Connection reset by peer

And this was on the server (note this was the default parameters, and there likely was 4 dozens transfer runs instead of just 10 because the network was indeed on the slow and shaky side of things)

-----------------------------------------------------------
Server listening on 5201 (test #81)
-----------------------------------------------------------
Accepted connection from 192.168.1.49, port 53742
[  5] local 192.168.1.3 port 5201 connected to 192.168.1.49 port 53743
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   1.00-2.00   sec   128 KBytes  1.05 Mbits/sec
[  5]   2.00-3.00   sec   128 KBytes  1.05 Mbits/sec
[  5]   3.00-4.00   sec   384 KBytes  3.14 Mbits/sec
[  5]   4.00-5.00   sec   512 KBytes  4.20 Mbits/sec
[  5]   5.00-6.00   sec   384 KBytes  3.15 Mbits/sec
[  5]   6.00-7.00   sec   256 KBytes  2.10 Mbits/sec
[  5]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  10.00-11.00  sec   128 KBytes  1.05 Mbits/sec
[  5]  11.00-12.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  12.00-13.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  13.00-14.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  14.00-15.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  15.00-16.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  16.00-17.00  sec   128 KBytes  1.05 Mbits/sec
[  5]  17.00-18.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  18.00-19.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  19.00-20.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  20.00-21.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  21.00-22.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  22.00-23.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  23.00-24.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  24.00-25.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  25.00-26.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  26.00-27.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  27.00-28.00  sec  10.9 KBytes  88.9 Kbits/sec
[  5]  28.00-29.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  29.00-30.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  30.00-31.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  31.00-32.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  32.00-33.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  33.00-34.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  34.00-35.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  35.00-36.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  36.00-37.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  37.00-38.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  38.00-39.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  39.00-40.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  40.00-41.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  41.00-42.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  42.00-43.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  43.00-44.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  44.00-45.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  45.00-46.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  46.00-47.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  47.00-48.00  sec  0.00 Bytes  0.00 bits/sec
[  5]  48.00-49.00  sec  0.00 Bytes  0.00 bits/sec
iperf3: error - select failed: Bad file descriptor
-----------------------------------------------------------
Server listening on 5201 (test #82)
-----------------------------------------------------------
      0 [iperf3] iperf3 94 cygwin_exception::open_stackdumpfile: Dumping stack trace to iperf3.exe.stackdump

Now, if you search for that error upstream there are actually quite the number of reports, and even some hopeful tangent solution.
But nowhere in there I could notice mentions of fully fledged crashes like this:

Exception: STATUS_ACCESS_VIOLATION at rip=000100402CB6
rax=0000000000000000 rbx=0000000A00033F60 rcx=0000000A00033F70
rdx=0000000000000000 rsi=0000000A00016D20 rdi=00000007FFE00000
r8 =000000000000000A r9 =000000007FFE4000 r10=00000007FFE00000
r11=0000000100412BC8 r12=0000000A00034840 r13=0000000A000348F0
r14=0000000800022EC0 r15=0000000000000000
rbp=0000000000000000 rsp=00000007FFDFCCB0
program=C:\folder\iperf3.exe, pid 94, thread iperf3
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame         Function      Args
000000000000  000100402CB6 (000000003000, 000A00034840, 00000063CC60, 00000063CC60) iperf3.exe+0x2CB6
000000000000  00010040E645 (000000000000, 000000000000, 000000000000, 000000000000) iperf3.exe+0xE645
000000000000  7FFD50386D6F (000000600000, 00000063CC60, 000000003000, 000000000000) cygwin1.dll+0x66D6F
000000000000  7FFD503244AA (000000600000, 00000063CC60, 000000003000, 000000000000) cygwin1.dll+0x44AA
End of stack trace
Loaded modules:
000100400000 iperf3.exe
7FFDA1AF0000 ntdll.dll
7FFDA06E0000 KERNEL32.DLL
7FFD9F7B0000 KERNELBASE.dll
7FFD50320000 cygwin1.dll
7FFDA04A0000 advapi32.dll
7FFDA11C0000 msvcrt.dll
7FFDA1120000 sechost.dll
7FFDA0FF0000 RPCRT4.dll
7FFD9F620000 bcrypt.dll
7FFD9EA50000 CRYPTBASE.DLL
7FFD9F490000 bcryptPrimitives.dll
7FFD84BC0000 netapi32.dll
7FFD94F00000 SAMCLI.DLL
7FFD9F520000 ucrtbase.dll
7FFD9AB30000 SAMLIB.dll
7FFD9E650000 NETUTILS.DLL
7FFD9FFD0000 user32.dll
7FFD9F2C0000 win32u.dll
7FFDA0410000 GDI32.dll
7FFD9F1A0000 gdi32full.dll
7FFD9F3F0000 msvcp_win.dll
7FFDA02A0000 IMM32.DLL
7FFDA03A0000 ws2_32.dll
7FFD9E860000 mswsock.dll

Fixes speed issues with iperf3 3.1.3

With a 25Gb Mellanox ConnectX-6 NIC on both sides, I can transfer at ~3.13+ GB/s which is the same as 25Gb using SMB. Using iperf3, I seem to be pretty restricted and am not sure why.

This 3.16 release is better than the 3.13 release though.

IPs: 10.1.0.6 and 10.1.0.12 on Linux and 10.1.0.49 and 10.1.0.55 on Windows. There are two IPs because there are two SFP28 adapters plugged in.

Forward Send

Official 3.1.3 from iperf.fr

Connecting to host 10.1.0.6, port 5201
[  4] local 10.1.0.55 port 54721 connected to 10.1.0.6 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   808 MBytes  6.78 Gbits/sec
[  4]   1.00-2.00   sec  1.10 GBytes  9.39 Gbits/sec
[  4]   2.00-3.00   sec  1015 MBytes  8.53 Gbits/sec
[  4]   3.00-4.00   sec  1016 MBytes  8.53 Gbits/sec
[  4]   4.00-5.00   sec  1.15 GBytes  9.90 Gbits/sec
[  4]   5.00-6.00   sec   910 MBytes  7.64 Gbits/sec
[  4]   6.00-7.00   sec  1011 MBytes  8.48 Gbits/sec
[  4]   7.00-8.00   sec   964 MBytes  8.09 Gbits/sec
[  4]   8.00-9.01   sec   701 MBytes  5.82 Gbits/sec
[  4]   9.01-10.00  sec   644 MBytes  5.45 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  9.15 GBytes  7.86 Gbits/sec                  sender
[  4]   0.00-10.00  sec  9.15 GBytes  7.86 Gbits/sec                  receiver

Unofficial 3.16 from this library

Connecting to host 10.1.0.6, port 5201
[  5] local 10.1.0.55 port 54577 connected to 10.1.0.6 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1.90 GBytes  16.3 Gbits/sec
[  5]   1.00-2.00   sec  2.16 GBytes  18.6 Gbits/sec
[  5]   2.00-3.01   sec  2.73 GBytes  23.1 Gbits/sec
[  5]   3.01-4.01   sec  2.27 GBytes  19.5 Gbits/sec
[  5]   4.01-5.01   sec  2.30 GBytes  19.9 Gbits/sec
[  5]   5.01-6.01   sec  2.62 GBytes  22.5 Gbits/sec
[  5]   6.01-7.00   sec  2.01 GBytes  17.5 Gbits/sec
[  5]   7.00-8.01   sec  2.25 GBytes  19.1 Gbits/sec
[  5]   8.01-9.01   sec  2.46 GBytes  21.1 Gbits/sec
[  5]   9.01-10.01  sec  2.20 GBytes  18.9 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec  22.9 GBytes  19.6 Gbits/sec                  sender
[  5]   0.00-10.02  sec  22.9 GBytes  19.6 Gbits/sec                  receiver

Connecting to host 10.1.0.6, port 5201
[  5] local 10.1.0.55 port 56395 connected to 10.1.0.6 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.01   sec  2.56 GBytes  21.8 Gbits/sec
[  5]   1.01-2.01   sec  2.55 GBytes  22.0 Gbits/sec
[  5]   2.01-3.01   sec  2.84 GBytes  24.4 Gbits/sec
[  5]   3.01-4.01   sec  2.81 GBytes  24.1 Gbits/sec
[  5]   4.01-5.01   sec  2.68 GBytes  23.1 Gbits/sec
[  5]   5.01-6.01   sec  2.73 GBytes  23.6 Gbits/sec
[  5]   6.01-7.00   sec  2.77 GBytes  23.9 Gbits/sec
[  5]   7.00-8.00   sec  2.79 GBytes  23.9 Gbits/sec
[  5]   8.00-9.00   sec  2.75 GBytes  23.7 Gbits/sec
[  5]   9.00-10.01  sec  2.52 GBytes  21.5 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec  27.0 GBytes  23.2 Gbits/sec                  sender
[  5]   0.00-10.01  sec  27.0 GBytes  23.2 Gbits/sec                  receiver

Reverse Send

For whatever reason, the reverse mode is a lot slower in the newer release. I tripled-checked just to make sure I was seeing the versions correctly. I also re-ran the tests multiple times:

3.1.3

Connecting to host 10.1.0.6, port 5201
Reverse mode, remote host 10.1.0.6 is sending
[  4] local 10.1.0.55 port 55203 connected to 10.1.0.6 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  1.26 GBytes  10.8 Gbits/sec
[  4]   1.00-2.00   sec  1.35 GBytes  11.6 Gbits/sec
[  4]   2.00-3.00   sec  1.46 GBytes  12.5 Gbits/sec
[  4]   3.00-4.00   sec  1.37 GBytes  11.7 Gbits/sec
[  4]   4.00-5.00   sec  1.29 GBytes  11.1 Gbits/sec
[  4]   5.00-6.00   sec  1.27 GBytes  10.9 Gbits/sec
[  4]   6.00-7.00   sec  1.31 GBytes  11.2 Gbits/sec
[  4]   7.00-8.00   sec  1.28 GBytes  11.0 Gbits/sec
[  4]   8.00-9.00   sec  1.23 GBytes  10.5 Gbits/sec
[  4]   9.00-10.00  sec  1.42 GBytes  12.2 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  13.2 GBytes  11.4 Gbits/sec    1             sender
[  4]   0.00-10.00  sec  13.2 GBytes  11.4 Gbits/sec                  receiver

3.16

Connecting to host 10.1.0.6, port 5201
Reverse mode, remote host 10.1.0.6 is sending
[  5] local 10.1.0.55 port 55187 connected to 10.1.0.6 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1013 MBytes  8.47 Gbits/sec
[  5]   1.00-2.01   sec  1.25 GBytes  10.6 Gbits/sec
[  5]   2.01-3.01   sec  1.13 GBytes  9.79 Gbits/sec
[  5]   3.01-4.01   sec  1.17 GBytes  9.94 Gbits/sec
[  5]   4.01-5.02   sec  1.37 GBytes  11.8 Gbits/sec
[  5]   5.02-6.01   sec  1.14 GBytes  9.92 Gbits/sec
[  5]   6.01-7.00   sec  1.13 GBytes  9.81 Gbits/sec
[  5]   7.00-8.01   sec  1.29 GBytes  11.0 Gbits/sec
[  5]   8.01-9.01   sec  1.19 GBytes  10.2 Gbits/sec
[  5]   9.01-10.01  sec  1.16 GBytes  9.94 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.02  sec  11.8 GBytes  10.2 Gbits/sec    0             sender
[  5]   0.00-10.01  sec  11.8 GBytes  10.2 Gbits/sec                  receiver

Connecting to host 10.1.0.6, port 5201
Reverse mode, remote host 10.1.0.6 is sending
[  5] local 10.1.0.55 port 56464 connected to 10.1.0.6 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1.26 GBytes  10.8 Gbits/sec
[  5]   1.00-2.01   sec  1.28 GBytes  10.9 Gbits/sec
[  5]   2.01-3.01   sec  1.31 GBytes  11.3 Gbits/sec
[  5]   3.01-4.00   sec  1.27 GBytes  10.9 Gbits/sec
[  5]   4.00-5.01   sec  1.27 GBytes  10.8 Gbits/sec
[  5]   5.01-6.02   sec  1.34 GBytes  11.5 Gbits/sec
[  5]   6.02-7.01   sec  1.32 GBytes  11.4 Gbits/sec
[  5]   7.01-8.00   sec  1.27 GBytes  10.9 Gbits/sec
[  5]   8.00-9.00   sec  1.33 GBytes  11.4 Gbits/sec
[  5]   9.00-10.00  sec  1.31 GBytes  11.3 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  13.0 GBytes  11.1 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  12.9 GBytes  11.1 Gbits/sec                  receiver

Listening as server

Accepted connection from 10.1.0.12, port 44440
[  5] local 10.1.0.49 port 5201 connected to 10.1.0.12 port 44450
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.01   sec  2.22 GBytes  18.9 Gbits/sec
[  5]   1.01-2.01   sec  2.28 GBytes  19.5 Gbits/sec
[  5]   2.01-3.01   sec  2.43 GBytes  20.9 Gbits/sec
[  5]   3.01-4.00   sec  2.24 GBytes  19.4 Gbits/sec
[  5]   4.00-5.01   sec  2.30 GBytes  19.6 Gbits/sec
[  5]   5.01-6.00   sec  2.48 GBytes  21.6 Gbits/sec
[  5]   6.00-7.01   sec  2.28 GBytes  19.6 Gbits/sec
[  5]   7.01-8.01   sec  2.34 GBytes  20.0 Gbits/sec
[  5]   8.01-9.01   sec  2.45 GBytes  21.1 Gbits/sec
[  5]   9.01-10.00  sec  2.18 GBytes  18.9 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  23.2 GBytes  19.9 Gbits/sec                  receiver

Questions

Do you know why the reverse mode isn't as fast? Seems like transfers to my Windows box as an iperf3 server are much faster than reverse mode.

-P 128 --bidir iperf server-side CPU usage is too high, resulting in low performance

Version of iperf3:
iperf 3.16 (cJSON 1.7.15) (windows ver)

Hardware:
CPU: Intel Xeon Silver 4410Y2
Memory: 128GB(DDR5 4000Mhz 16GB32)
HBA: Intel E810 100G

Operating system (and distribution, if any):
Windows Server 2022

PS:I know there's a note that there won't be Windows support, but since I had the problem I thought I'd raise it here and it's okay if it doesn't work out.

Other relevant information (for example, non-default compilers,
libraries, cross-compiling, etc.):
https://github.com/ar51an/iperf3-win-builds
Please fill out one of the "Bug Report" or "Enhancement Request"
sections, as appropriate. Note that submissions of bug fixes, new
features, etc. should be done as a pull request at
https://github.com/esnet/iperf/pulls

Bug Report
Expected Behavior
Server CPU usage same as Client CPU usage.

Actual Behavior
Server CPU usage 100%
Client CPU usage 12%
The difference between the two sides is too great, resulting in low performance on the server side.

Steps to Reproduce
Server cmd> iperf.exe -s
Client cmd> iperf.exe -c IP -P 128 --bidir

Possible Solution
Optimize the workflow of iperf -s

Enhancement Request
Current behavior

Desired behavior
Maximize the performance of bidirectional testing

Implementation notes
Server

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.