We are investigating performance issues in one of our software deployment between our application servers (Windows) and our Redis instances (Linux).
On a 10 Gbits/s link single TCP connections can apparently only reach 10 Mbits/s. Opening several TCP connections allows us to reach a higher bandwitch. UDP does not seem to be affected by these limitations and reaches the full speed of the link. This kind-of make us suspect that some network device (firewall, proxy ?) inside the network causes these throughput differences.
We made those measurements using iperf
(same version) on both the Windows servers and the Linux one.
Our networking team however, completely discards those result based on the fact that "iperf is not officially supported on Windows and so the results can't be trusted". At the same time, they deny to provide an alternative tool to do those measurements and claim that "the network is fine".
So my question is: can iperf
be reliably used to measure TCP and UDP performance between Windows and Linux servers ? If no, which tool would you recommend ?
iperf is perfectly supported in windows since, at least, 2005. Now days you even have different versions for iperf3 in Windows: 32 bits, 64 bits and even UWP versions are available.
Once you have the same version (and by version I mean build, like v3.1.3 for ex.) of iperf3 in both, client and server, you can test for 10gbps doing the following:
Server
iperf3 -s
Should show an output like:
Client
iperf3 -P XX -c $server_ip
Where:
This should output something along the lines of:
If you are not getting around that, you might want to try playing around with the TCP Window Size. You can change it from the client side with the
-w XXu
flag, where XX is the size and u the unit (k, m).Another way to test network bandwidth is to serve an http file from one of the ends, and use some kind of download tool that allows parallel streams (wget, filezilla, or almost every download manager). Or run a benhmark tool, but I would stay with iperf, which is usually the default tool for the job for (almost) everyone.
iperf could be used, I wonder which parameters you were using when 10 Mbps have been reported.
Another useful tool is Netpipe (available in Linux repos) and for Windows I would recommend using the Java version, available here:
Information on how to run Netpipe is here available.
We can help you in identifying the issue with regards to the access to Redis. Which network vendor are you using?