From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH v3] ethdev: fix ethdev data alignment Date: Tue, 13 Feb 2018 16:16:59 +0100 Message-ID: <2314871.4g4HrYFpav@xps> References: <20180212055439.6462-1-jerin.jacob@caviumnetworks.com> <20180212131343.13555-1-jerin.jacob@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev@dpdk.org, ferruh.yigit@intel.com, stable@dpdk.org, Matan Azrad , Konstantin Ananyev To: Jerin Jacob , Pavan Nikhilesh Return-path: In-Reply-To: <20180212131343.13555-1-jerin.jacob@caviumnetworks.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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: stable@dpdk.org > > Cc: Matan Azrad > Cc: Thomas Monjalon > Cc: Konstantin Ananyev > > Signed-off-by: Jerin Jacob > Signed-off-by: Pavan Nikhilesh > --- Acked-by: Thomas Monjalon Applied, thanks