I've got two windows PCs connected by gigabit ethernet.
When I use iperf to measure throughput it maxes out at a good 100MBit/s.
When I run iperf using two or three parallel connections, each will get the full 100MBit/s, too.
If I add all the parallel connections there should be a maximum speed of nearly 400MBit/s possible, so I gather that the 100MBit/s per connection is some kind of throttling.
I need maximum speed between these two computers, is there any way to disable this throttling so the full throughput can be used by one single connection instead of being shared between more of them?
By default, iperf uses a TCP connection. It may be backing down on rate due to TCP's congestion control or a window size issue; try a UDP test (
-u
).Also, check on the CPU usage - its generation of data may be saturating a core when there's a single process, while 4 processes can utilize 4 cores.
Gigabit ethernet does not do any throttling in the way that you are surmising. There are many factors that might limit the speed you are able to run iPerf at, including the type of test you are running (TCP or UDP, Window size, packet size, etc. see the iPerf manual for details), the resources available on the testing hosts (e.g. if you are limited by your CPU, a single test might consume a core, while parallel tests use additional cores), and the type of switch(es) you are connected to. Additionally, there may be intermediary devices that ARE throttling you in some way, but that is a policy configuration, not a feature of gigabit ethernet (e.g. are the two hosts under test directly connected via a single switch, or are there firewalls, routers, or other devices in between them?).
You haven't mentioned how you are adding these connections together, but I assume you are talking about Channel bonding or Link aggregation. If that is what you plan on using, then please understand that the bandwidth is not cumulative. What you actually get is more like load balancing, some connections go over one interface, some go over the other interfaces.
Bonding typically will select the interface based on some details about the hardware address of the destination, or some aspect of the network protocol in use. The point being that for a single connection will be limited to a single interface, it will not use the combined bandwidth of all interfaces.