I did some quick throughput testing on my 1Gb/s Comcast service with iperf3 on a Linux box. I have a firewall between my cable modem and LAN switch, which claims about 600Mb/s throughput.
From the first run with "-P 1", which mean on socket I get 386Mb/s down with some packet loss, as the sender sent 690MB and I only received 667MB. Unfortunately, these days private peering points are mostly congested, so packet loss is the new norm.
iperf3 -P 1 -t 15 -R -c iperf.he.net
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-15.00 sec 690 MBytes 386 Mbits/sec 0 sender
[ 5] 0.00-15.00 sec 667 MBytes 373 Mbits/sec receiver
We can see from the above example that throughput is constrained with only one socket transferring data. Even with scaled TCP windows, the send window drains before it gets the ACK, so the sender stops sending and waits.
The public iperf server is about 60ms away which dramatically reduced throughput with one socket.
ping iperf.he.net
10 packets transmitted, 10 received, 0% packet loss, time 19ms
rtt min/avg/max/mdev = 58.022/59.300/63.062/1.439 ms
Let's try two sockets.
iperf3 -P 2 -t 15 -R -c iperf.he.net
[ ID] Interval Transfer Bitrate Retr
[SUM] 0.00-15.00 sec 1.25 GBytes 719 Mbits/sec 0 sender
[SUM] 0.00-15.00 sec 1.21 GBytes 695 Mbits/sec receiver
Much better throughput with two simultaneous sockets (-P 2) and well above my firewall's expected throughput.
Let's see if three sockets (-p 3) are better (more is always better right?).
iperf3 -P 3 -t 15 -R -c iperf.he.net
[ ID] Interval Transfer Bitrate Retr
[SUM] 0.00-15.00 sec 1.25 GBytes 717 Mbits/sec 0 sender
[SUM] 0.00-15.00 sec 1.21 GBytes 694 Mbits/sec receiver
Nope, we've reached the limit of something between iperf.he.net and my Linux box, which I believe is my firewall. I could connect my Linux box directly to my cable modem, but I don't feel like making this throughput testing Saturday
Throughput testing is a complex undertaking and all segments end to end must be understood, or you're likely to misinterpret the results. It would have been easy to say that Comcast isn't giving me the 1Gb/s I purchase, but that would be unfair as I can't get more the 730Mb/s through my firewall. All of the above testing was done over wired 1Gb/s Ethernet inside my house.
Just for grins I ran a test to see how much difference adding my WiFi network into the mix would make. My WiFi is Ubiquiti and is very high quality, but it's not the same as a wire.
iperf3 -P 3 -t 15 -R -c iperf.he.net
[SUM] 0.00-15.00 sec 142 MBytes 79.3 Mbits/sec 0 sender
[SUM] 0.00-15.00 sec 135 MBytes 75.4 Mbits/sec receiver
1/10th of the throughput? Yes, add the variable of wifi and it can drastically change the results. I was surprised to see it this low as I can do local transfers and sustain 400Mb/s. You can see though that results can vary wildly.
[edit]
It was bugging me why my local WiFi throughput was so low at 75Mb/s, so I did some poking around and found my office access point got switch to HT40 from HT80 (HT40 is two 20Mhz 802.11ac channels bonded and HT80 is four 40Mhz 802.11ac channels bonded). My workstation had also fallen back to a 2.4Ghz channel. When I run a local throughput test on 5Ghz HT80 I get much better results.
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-15.00 sec 854 MBytes 477 Mbits/sec 0 sender
[SUM] 0.00-15.00 sec 849 MBytes 475 Mbits/sec receiver
Now we'll do another throughput test from iperf.he.net
iperf3 -P 3 -t 15 -R -c iperf.he.net
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-15.00 sec 145 MBytes 80.9 Mbits/sec 0 sender
[SUM] 0.00-15.00 sec 139 MBytes 77.7 Mbits/sec receiver
Strange, not much better than the 75Mb/s before. We'll add more sockets and see what we get.
6 sockets
iperf3 -P 6 -t 15 -R -c iperf.he.net
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-15.00 sec 284 MBytes 159 Mbits/sec 0 sender
[SUM] 0.00-15.00 sec 273 MBytes 153 Mbits/sec receiver
12 sockets
iperf3 -P 12 -t 15 -R -c iperf.he.net
[ ID] Interval Transfer Bandwidth Retr
[SUM] 0.00-15.00 sec 531 MBytes 297 Mbits/sec 52 sender
[SUM] 0.00-15.00 sec 509 MBytes 285 Mbits/sec receiver
As you can see the end to end throughput from iperf.he.net to my WiFi connected Windows box gets better as we add more sockets. We only required three sockets to get max throughput to the wired Linux box, but twelve sockets to the WiFi connected Windows box. In my experience WiFi always has lower throughput than 1Gb/s wired Ethernet. There are several technical reasons this is so.
I think the moral to the story is to be careful how you interpret your throughput results.