[Babel-users] us vs ns resolution in babel rtt branch

Jesper Dangaard Brouer jbrouer at redhat.com
Thu Mar 19 03:12:18 UTC 2015


On Wed, 18 Mar 2015 13:46:34 -0700 Dave Taht <dave.taht at gmail.com> wrote:

> There have been many astounding improvements in latency in the linux stack
> of late, jesper (cc'd) has been doing tons of work in this area,
> another is in FIB tables, and there are others
> like low latency udp short circuits that I am not tracking well.
> 
> Jesper, what sort of numbers would you get along the lines' of
> baptiste's benchmark  at 10GigE these days?

I do a lot testing where I try to isolate different parts of the kernel
network stack, in an attempt to reduce latency in different areas.
These tests don't represent what can be achieved full-stack usage-cases.

For more realistic workload, where more of the stack is exercised,
I did some single core IP-forwarding (before the FIB improvements),
which were around 1Mpps (million packets per sec).

1Mpps translates into 1000ns latency
 * 1/1000000*10^9 = 1000 ns

When using bridging (avoiding FIB lookup), and tuning the stack as much
as possible, e.g. compiling out the netfilter bridge hooks.  I could
reach approx 2Mpps (bridge forwarding, single CPU core).

2Mpps transltates into 500ns latency
 * (1/2000000)*10^9 = 500 ns


> On Wed, Mar 18, 2015 at 6:28 AM, Baptiste Jonglez <
> baptiste at bitsofnetworks.org> wrote:
> 
> > On Sun, Mar 15, 2015 at 03:00:12PM -0700, Dave Taht wrote:
> >
> > > I still kind of like getting down to ns resolution here. A single
> > > 64 byte packet at 10gigE takes like 64ns. I have discussed
> > > elsewhere my hopes for using babel messages to determine the
> > > capacity and utilization of a given network interface before,
> > > depending on fq_codel's behavior as a substrate....
> >
> > I still believe other factors dwarf these 64 ns...

It is 67.2ns for 10G smallest packet size (64bytes -> 84bytes due to
Ethernet overhead).

Calc: ((64+20)*8)/((10000*10^6))*10^9 = 67.2ns
See:
  [1]http://netoptimizer.blogspot.co.nz/2014/05/the-calculations-10gbits-wirespeed.html
and
  [2] http://netoptimizer.blogspot.co.nz/2014/09/packet-per-sec-measurements-for.html


> > I had done some measurements with the µs-precision code, on a direct
> > gigabit link between two hosts (no switch):
> >
> >
> > http://files.polyno.me/babel/evalperf/figures/32bits-rtt-ethernet-thinkbad-gilead.svg
> >

Interesting!

> > As you notice, ping6 reports 400 µs, babeld reports 800 µs, while
> > the theoretical latency is 512 ns for a 64-bytes packet and 12 µs
> > for a full 1500-bytes packet.  I am neglecting propagation delays
> > (that would amount to about 50 ns for a 10-meter cable).
> >
> > So, the actual latency (measured either with ping or babel) is 3
> > orders of magnitude higher than the theoretical latency.  Do note
> > that my tests were done with low-end hardware, so it might be
> > better with high-performance NICs.
> >
> > Do you have latency measurements on 10G links?  If so, what tool do
> > you use?  I believe both ping and babel are not very accurate at
> > these timescales.

Wrote some blogpost about the measuring I'm doing [2] and [3].  I'm
basically deriving the latency from the PPS measurements (which
basically the average latency, and it also requires single core
isolation).

Network setup for accurate nanosec measurements:
 [3] http://netoptimizer.blogspot.dk/2014/09/network-setup-for-accurate-nanosec.html

Thanks for the pitch Dave ;-)
-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Sr. Network Kernel Developer at Red Hat
  Author of http://www.iptv-analyzer.org
  LinkedIn: http://www.linkedin.com/in/brouer



More information about the Babel-users mailing list