[haiku-development] Networking speed

  • From: Oliver Tappe <zooey@xxxxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Thu, 17 Jul 2008 23:40:36 +0200

Hi there,

the last two days I have spent some time doing networking benchmarks with 
netperf on different operating systems in order to get more than just a 
feeling about how our own netstack performs compared to others.

As I believe the localhost interface should be the least complicated to 
analyze (with no hardware to interfere), the results below reflect only the 
tests that were run on that interface.

With a netserver listening on localhost, netperf has been invoked as follows:
  netperf -f M -t UDP_STREAM -- -m 32768 -s 65500,65500 -S 65500,65500
  netperf -f M -t TCP_STREAM -- -m 32768 -s 65500,65500 -S 65500,65500
  netperf -t UDP_RR
  netperf -t TCP_RR

These were the results (please excuse the ascii-art):
=================================================================
Operating          | UDP_STREAM | TCP_STREAM | UDP_RR  | TCP_RR
System             |   (MB/s)   |   (MB/s)   | (req/s) | (req/s)
-------------------+------------+------------+---------+---------
Ubuntu (VM)        |         88 |         52 |    7549 |    7379
-------------------+------------+------------+---------+---------
Zeta (VM)          | send:  182 |        109 |    3256 |    3256
                   | recv:   42 |            |         |
-------------------+------------+------------+---------+---------
OpenSolaris (VM)   | send:  567 |        195 |    2295 |    2653
                   | recv:   49 |            |         |
-------------------+------------+------------+---------+---------
haiku (VM)         |          2 |         29 |    1510 |     911
===================+============+============+=========+=========
OpenSUSE (native)  |        737 |        576 |   41932 |   32091
-------------------+------------+------------+---------+---------
haiku (native)     |          2 |        127 |   15898 |   12216
=================================================================

Well, obviously, there's quite some room for improvement ;-)

AFAICS, the split values for UDP_STREAM (send/recv) mean that the system 
could send much more packets than it could receive (i.e. lots of packets were 
dropped).

During the next days, I would like to dive into the net stack in order to 
find reasons for the pretty poor performance and do something to improve it.

But before I start, I'd like to ask everyone if you already know about 
specific problems/weaknesses in the net stack (or elsewhere in the kernel!) 
that could explain the slowness.

cheers,
    Oliver

Other related posts: