[Click] 10GE Click performance

Luigi Rizzo rizzo at iet.unipi.it
Fri Jan 20 17:12:24 EST 2012


On Fri, Jan 20, 2012 at 10:21:15PM +0200, Beyers Cronje wrote:
> Hi Luigi,
> 
> Have you guys released the driver for linux yet, or is it still a work in
> progress? How does the libpcap emulation compare performance wise with a
> native netmap driver?

the linux driver is not ready yet, though today we managed to
send the first packets with linux-netmap. I am hoping we can get
something ready for distribution  in 2-3 weeks.

As for native vs libpcap, here are the most recent numbers i have are
for something equivalent to FromDevice -> Queue -> ToDevice :

  1.	pure netmap (zero copy)		14.2 Mpps @ 1.6  GHz
  2.	pcap_dispatch(pcap_inject())	 8.5 Mpps @ 2.93 GHz
  3.	click userspace+netmap/libpcap	 3.95Mpps @ 2.93 GHz
  4.	click userspace+bpf/libpcap 	 0.49Mpps @ 2.93 GHz

In terms of data copies and memory allocations:
#1 is really zero-copy, #2 does one copy, #3 does two copies and
one allocation (and the allocator was the bottleneck, fixed last
summer with Eddie), #4 is copies plus one Packet allocation plus
one syscall plus two mbuf allocations.

cheers
luigi

	

> Beyers
> 
> On Fri, Jan 20, 2012 at 8:54 PM, Luigi Rizzo <rizzo at iet.unipi.it> wrote:
> 
> > On Fri, Jan 20, 2012 at 09:19:43AM -0800, Roman Chertov wrote:
> > > >
> > > > Kinda wonder how prepared click is for the netmap work being done and
> > > > 10Gb performance, and if it will help
> > i

> > > I recall reading on the list that netmap maintains a TX ring and as such
> > > it is not friendly to Click configs that can hold on to some packets for
> > > a while.
> > >
> > > FromDevice(ethX) -> cl::Classifier(...)[0]
> > >                   -> Queue
> > >                   -> DelayShaper(DELAY)
> > >                   -> outQ;
> > >
> > > cl[1] -> outQ;
> > >
> > > Any clarifications from people familiar with netmap?
> >
> > Click uses the libpcap emulation to run on top of netmap,
> > so it doesn't know anything about the netmap rings.
> > Incoming frames are copied into Click's Packets in the callback
> > passed tp pcap_dispatch(), and they
> > can be stored for as long as you like provided there is
> > enough (userspace) memory.
> > When it is time to transmit, pcap_inject() copies the payload
> > from the Packet to the netmap ring and the packet goes out.
> >
> > The two copies are moderately expensive but we are still talking
> > 3-4Mpps for FromDevice -> EtherSwitch -> ToDevice .
> >
> > Anything that takes a timestamp is going to hurt much more
> > than the memory copies.
> >
> > 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