12/02/2018 14:13, Jerin Jacob: > The struct rte_eth_dev_data is used in ethdev fastpath routines > and it not aligned to cache line size. This patch fixes the ethdev > data alignment. > > The alignment was broken from the "first public release" changeset > where ethdev data address was aligned only to the first port. > Remaining ports alignment was defined by the size of the struct > (rte_eth_dev_data). This scheme is not guaranteed to be cache line > aligned all the time. > > "ethdev: add port ownership" change set introduced a > rte_eth_dev_shared_data container for port ownership change, > This resulted in rte_eth_dev->data memory for the first port also > as cache unaligned. > > Added a compiler alignment attribute to make sure > rte_eth_dev->data always cache aligned so that CPU/compiler > 1) Avoid sharing the element with another cache line > 2) Can load/store the elements in struct rte_eth_dev_data as > naturally aligned. > > Some platform like thunderX could see performance regression of 1% > at "ethdev: add port ownership" change set with > 1 port/1 queue l3fwd application and this patch fixes that regression. > > example command: > sudo ./examples/l3fwd/build/l3fwd -c 0xff00 -- -p 0x1 --config="(0,0,9)" > > Fixes: af75078fece3 ("first public release") > Fixes: 5b7ba31148a8 ("ethdev: add port ownership") > > Cc: sta...@dpdk.org > > Cc: Matan Azrad <ma...@mellanox.com> > Cc: Thomas Monjalon <tho...@monjalon.net> > Cc: Konstantin Ananyev <konstantin.anan...@intel.com> > > Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> > Signed-off-by: Pavan Nikhilesh <pbhagavat...@caviumnetworks.com> > --- Acked-by: Thomas Monjalon <tho...@monjalon.net>
Applied, thanks