[dpdk-dev] [PATCH 0/2] new headroom stats library and example application

Wodkowski, PawelX pawelx.wodkowski at intel.com
Thu Jan 29 18:10:36 CET 2015


> -----Original Message-----
> From: Neil Horman [mailto:nhorman at tuxdriver.com]
> Sent: Thursday, January 29, 2015 2:25 PM
> To: Wodkowski, PawelX
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH 0/2] new headroom stats library and example
> application
> 
> On Thu, Jan 29, 2015 at 12:50:04PM +0100, Pawel Wodkowski wrote:
> > Hi community,
> > I would like to introduce library for measuring load of some arbitrary jobs. It
> > can be used to profile every kind of job sets on any arbitrary execution unit.
> > In provided l2fwd-headroom example I demonstrate how to use this library to
> > profile packet forwarding (job set is froward, flush and stats) on LCores
> > (execution unit). This example does no limit possible schemes on which this
> > library can be used.
> >
> > Pawel Wodkowski (2):
> >   librte_headroom: New library for checking core/system/app load
> >   examples: introduce new l2fwd-headroom example
> >
> >  config/common_bsdapp               |    6 +
> >  config/common_linuxapp             |    6 +
> >  examples/Makefile                  |    1 +
> >  examples/l2fwd-headroom/Makefile   |   51 +++
> >  examples/l2fwd-headroom/main.c     |  875
> ++++++++++++++++++++++++++++++++++++
> >  lib/Makefile                       |    1 +
> >  lib/librte_headroom/Makefile       |   50 +++
> >  lib/librte_headroom/rte_headroom.c |  368 +++++++++++++++
> >  lib/librte_headroom/rte_headroom.h |  481 ++++++++++++++++++++
> >  mk/rte.app.mk                      |    4 +
> >  10 files changed, 1843 insertions(+)
> >  create mode 100644 examples/l2fwd-headroom/Makefile
> >  create mode 100644 examples/l2fwd-headroom/main.c
> >  create mode 100644 lib/librte_headroom/Makefile
> >  create mode 100644 lib/librte_headroom/rte_headroom.c
> >  create mode 100644 lib/librte_headroom/rte_headroom.h
> >
> > --
> > 1.7.9.5
> >
> >
> 
> Whats the advantage of this library over the other tools to preform the same
> function.

Hi Neil,

Good point, what is advantage over perf. Answer is: this library does not 
supposed to be a perf competition and is not for profiling app in the way perf does.
It is an small and fast extension. It's main task is to manage job list to invoke
them exactly when needed and provide some basic stats about application idle 
time (whatever programmer will consider the idle) and busy time.

For example:
application might decide to add remove some jobs to/from LCore(s) dynamically
basing on current idle time (ex: move job from one core to another).

Also application might have some information's about traffic type it handles
and provide own algorithm to calculate invocation time (it can also dynamically
switch between those algorithms only replacing handlers).

>  Perf can provide all the information in this library, and do so
> without having to directly modify the source for the execution unit under test

Yes, perf can provide those information's  but it can't handle the case when 
you are poling for packets too fast or too slow and waist time getting only couple 
of them. Library will adjust time when it execute job basing on value this job
returned previously. Code modifications are not so deep, as you can see comparing 
l2wf vs l2fwd-headroom app.

For example in  application I introduced, when forward job return less than
MAX_PKT_BURST execution period will be increased. If it return more it will decrease
execution period. Stats provided for that can be used to determine if application is
behaving correctly and if there is a time for handling another port (what did for tests).

Pawel


More information about the dev mailing list