[dpdk-dev] [PATCH] ring: relax alignment constraint on ring structure

Burakov, Anatoly anatoly.burakov at intel.com
Fri May 25 12:59:29 CEST 2018


On 03-Apr-18 2:26 PM, Olivier Matz wrote:
> The initial objective of
> commit d9f0d3a1ffd4 ("ring: remove split cacheline build setting")
> was to add an empty cache line betwee, the producer and consumer
> data (on platform with cache line size = 64B), preventing from
> having them on adjacent cache lines.
> 
> Following discussion on the mailing list, it appears that this
> also imposes an alignment constraint that is not required.
> 
> This patch removes the extra alignment constraint and adds the
> empty cache lines using padding fields in the structure. The
> size of rte_ring structure and the offset of the fields remain
> the same on platforms with cache line size = 64B:
> 
>    rte_ring = 384
>    rte_ring.name = 0
>    rte_ring.flags = 32
>    rte_ring.memzone = 40
>    rte_ring.size = 48
>    rte_ring.mask = 52
>    rte_ring.prod = 128
>    rte_ring.cons = 256
> 
> But it has an impact on platform where cache line size is 128B:
> 
>    rte_ring = 384        -> 768
>    rte_ring.name = 0
>    rte_ring.flags = 32
>    rte_ring.memzone = 40
>    rte_ring.size = 48
>    rte_ring.mask = 52
>    rte_ring.prod = 128   -> 256
>    rte_ring.cons = 256   -> 512
> 
> Link: http://dpdk.org/dev/patchwork/patch/25039/
> Suggested-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
> Signed-off-by: Olivier Matz <olivier.matz at 6wind.com>
> ---

This patch causes eal_flags_autotest to hang on FreeBSD. Root cause at 
this time is unknown, but this is a weird one - the test seems to hang 
while doing read() in bsd/eal_thread.c:59. Reverting this patch on top 
of rc5 results in eal_flags_autotest passing.

-- 
Thanks,
Anatoly


More information about the dev mailing list