Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 Dec 2001 13:32:24 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Lamont Granquist <lamont@scriptkiddie.org>
Cc:        Richard Sharpe <sharpe@ns.aus.com>, <freebsd-hackers@FreeBSD.ORG>
Subject:   Re: Patch #3 (TCP / Linux / Performance)
Message-ID:  <200112022132.fB2LWO093222@apollo.backplane.com>
References:   <20011202121147.G92925-100000@coredump.scriptkiddie.org>

next in thread | previous in thread | raw e-mail | index | archive | help

:On Sun, 2 Dec 2001, Matthew Dillon wrote:
:> Throughput 47.2446 MB/sec (NB=59.0558 MB/sec  472.446 MBit/sec)  20 procs
:>
:>     It seems to max-out at around 75,000 packets per second (input + output).
:>
:>     I doubt these results could be duplicated on anything but a DELL2550.
:>     It dedicates an entire internal 64 bit 66MHz PCI bus just to the
:>     on-board gigabit ethernet.
:
:What is the remaining bottleneck in these tests?  CPU?  Interrupts?  What
:would you need to do to get that closer to the theoretical limit
:(something around 920 Mbs for GigE IIRC)?
    
    The tbench test is mainly a transactional test (don't ask me why
    it only reports bandwidth).  So the ultimate limiting factor is going
    to be cpu in regards to interrupt processing and transactional latency.

    It is fairly easy to saturated the GigE on the DELL if all you are
    doing is pushing a huge amount of data over a single TCP connection.

    This is connecting to inetd running a dd if=/dev/zero bs=32k on a
    machine with the rfc sysctl's turned on and 262144 byte send and 
    receive buffers, without jumbo frames (my gigE switch doesn't support
    them :-( ).

            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
     82064     0  124238900      41033     0    2215718     0
     82077     0  124263124      41039     0    2216142     0
     82065     0  124244956      41033     0    2215818     0
     82103     0  124302488      41052     0    2216836     0
     82067     0  124247984      41035     0    2215872     0
     81684     0  123668122      40842     0    2205558     0
     82114     0  124319142      41057     0    2217122     0

    Wow. 120,000 packets per second (In+Out)

    If I reduce the mtu to 250 it can sustain around 210,000 pps (In+Out).

    If I write a little program to do one-byte transactions.. i.e. send a
    byte, wait for a byte back, repeat, I get around 16,000 transactions/sec
    over localhost, 7100 transactions/sec over 100BaseTX, and oddly only
    3400 transactions/sec over GigE.

    The minimum round trip over 100BaseTX for a 64 byte packet is around
    0.125 mS, which comes to around 8000 transactions/sec per connection,
    so the 7100 number is reasonable.

    The minimum round trip over my GigE seems to average around 0.230mS,
    resulting in a theoretical transaction rate (per connection) of 4340 t/s.
    The 3400 number seems a little low but looks reasonable.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200112022132.fB2LWO093222>