[Click] click userland patches for large speed improvements
Beyers Cronje
bcronje at gmail.com
Thu Jul 7 16:43:25 EDT 2011
Hi Luigi,
Are there any plans to port netmap to Linux? I'm a big fan of pushing
development in Click userlevel and believe netmap would definitely be an
asset.
Beyers
On Fri, Jul 1, 2011 at 7:47 PM, Luigi Rizzo <rizzo at iet.unipi.it> wrote:
> If someone is interest in performance of userland click, i'd suggest
> the following two patches and looking at netmap (i already discussed
> what follows with Eddie, and i am hoping someone more fluent than
> me in C++ can polish the code and add a support for thread-local lists).
>
> To get an idea of what you can get on a single core i7-870 CPU with
> the stock version and with these patches:
>
> 1.8.0 With patches
> InfiniteSource -> Discard 515Kpps 18.56Mpps
> InfiniteSource -> Queue -> Discard 500Kpps 13.41Mpps
>
> pcap netmap
> FromDevice->Queue->ToDevice 420Kpps 3.97 Mpps
>
>
> Click userland performance was never a priority given the high cost
> (until now) of packet I/O. But once packet i/o has become quite fast,
> it turns out that there are to other big offenders:
> - the C++ memory allocator is quite expensive, and replacing it with
> thread-local freelists (Packet objects and data buffers can be made
> all with the same size) gives huge savings -- 100ns per packet or more
> even on a fast machine;
>
> - everytime an element wants a timestamp, it calls a syscall
> (gettimeofday()
> or similar) which consumes another 400-800ns per call. There are many
> elements (e.g. InfiniteSource, Counter, etc.) which timestamp packets.
>
> Attached there are a couple of patches which address these problems:
>
> - patch-pcap makes FromDevice and ToDevice use libpcap properly,
> supporting I/O in bursts to amortize the syscall overhead.
> This has been tested on FreeBSD.
>
> - patch-more
> + introduces a NOTS option for InfiniteSource to remove timestamps.
> This gives a 10x performance improvement in simple apps using
> InfiniteSource
>
> + replaces the allocator for Packet and data buffers with local
> freelists;
> not thread safe, but this is easy to introduce. This gives another
> 1.5-2x
> speed improvement after the 10x gained removing timestamps;
>
> + enables BURST operation in Discard, giving another 2x speed improvement
>
> Using netmap instead of pcap is another big win, as you can see the
> forwarding
> performance of a simple FromDevice->Queue->ToDevice chain goes up by 10x
> You can find netmap at http://info.iet.unipi.it/~luigi/netmap/
>
> cheers
> luigi
>
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>
>
More information about the click
mailing list