Subject: Re: [bpf-next V2 PATCH 01/14] xdp: base API for new XDP rx-queue info concept

From: Jesper Dangaard Brouer <[email-masked]>
Date: Sat, 23 Dec 2017 14:13:33 +0100

On Fri, 22 Dec 2017 16:14:43 -0800
Jakub Kicinski <[email-masked]> wrote:

> On Fri, 22 Dec 2017 18:11:39 +0100, Jesper Dangaard Brouer wrote:
> > +struct xdp_rxq_info {
> > +	struct net_device *dev;
> > +	u32 queue_index;
> > +	u32 reg_state;
> > +} ____cacheline_aligned; /* perf critical, avoid false-sharing */  
> 
> I'm assuming this is cacheline_aligned, because of some stuff you will
> add here in the future for the completion path?  (The comment could
> mention that this data is read-mostly.)  Drivers are likely to already
> have a read-mostly (or unused-mostly) section of the rx ring structure.
> Would it be possible to define this in a way that would allow people
> who carefully lay out their data path structures to save cache space?

Please lets keep such struct layout micro-optimization for later.
Having a fixed full cache-line for this struct makes it easier to avoid
any false-sharing day-1.  If we don't do this, then every time we
extend/change this struct, we (you?) have to go through every drivers
RX-ring alignment and make sure things didn't move around.  Also if
some driver developer change his own RX-ring struct layout then we/he
have to verify struct layouts.   The hole plan is this struct need to
be extended, lets help ourselves and keep it simple.  Once the size of
this struct have stabilized, then we can circle back and optimize such
stuff. Fair enough?

-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer