title: Aggregated throughput of multiple connections (Linux)
body: <p>Why do multiple connections from the same host achieve better throughput than multiple connections from different hosts?</p>
  
  <p>I suspect is something kernel-related (Linux) but a confirmation would help a lot.</p>
  
  <p>More details I have 1 receiver process, let's call it R. It accepts incoming connections and receives data using select().</p>
  
  <p>I have 3 sender processes S1, S2, S3. They connect to R and send data at a fixed rate, i.e. 200Mbit per second each.</p>
  
  <p>If S1, S2 and S3 are on the same machine, I get better results than having each one of them on a different machine. (R is in both cases on some other machine)</p>
  
  <p>Example: R on host0, S1, S2, S3 on host2, R receives at 600Mbit/s</p>
  
  <p>R on host0, S1 on host1, S2 on host2, S3 on host3, R receives at 480Mbit/s</p>
  
  <p>This looks counter-intuitive for me, I expected the opposite since in the second case senders don't have to share the network card and the processor (Not that expect processor or network card to be bottlenecks...)</p>
  
  <p>[The hosts above are nodes in a linux cluster with a dedicated full-duplex Gigabit switch. They are running 2.6.24-24-generic (latest Ubuntu i guess)]</p>