From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 029BBA0613 for ; Tue, 30 Jul 2019 18:06:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D02E91BEF3; Tue, 30 Jul 2019 18:06:03 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 833371BEA7 for ; Tue, 30 Jul 2019 18:06:01 +0200 (CEST) X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Jul 2019 09:06:00 -0700 X-IronPort-AV: E=Sophos;i="5.64,327,1559545200"; d="scan'208";a="165888223" Received: from bricha3-mobl.ger.corp.intel.com ([10.251.80.128]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Jul 2019 09:05:58 -0700 Date: Tue, 30 Jul 2019 17:05:53 +0100 From: Bruce Richardson To: Jerin Jacob Kollanukkaran Cc: Marcin Zapolski , "dev@dpdk.org" Message-ID: <20190730160553.GC1689@bricha3-MOBL.ger.corp.intel.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.11.4 (2019-03-13) Subject: Re: [dpdk-dev] [RFC 19.11 1/2] ethdev: make DPDK core functions non-inline X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, Jul 30, 2019 at 03:45:38PM +0000, Jerin Jacob Kollanukkaran wrote: > > -----Original Message----- > > From: Bruce Richardson > > Sent: Tuesday, July 30, 2019 9:02 PM > > To: Jerin Jacob Kollanukkaran > > Cc: Marcin Zapolski ; dev@dpdk.org > > Subject: [EXT] Re: [dpdk-dev] [RFC 19.11 1/2] ethdev: make DPDK core functions > > non-inline > > > > ---------------------------------------------------------------------- > > On Tue, Jul 30, 2019 at 03:01:00PM +0000, Jerin Jacob Kollanukkaran wrote: > > > > -----Original Message----- From: dev On > > > > Behalf Of Marcin Zapolski Sent: Tuesday, July 30, 2019 6:20 PM To: > > > > dev@dpdk.org Cc: Marcin Zapolski > > > > Subject: [dpdk-dev] [RFC 19.11 1/2] ethdev: make DPDK core functions > > > > non- inline > > > > > > > > Make rte_eth_rx_burst, rte_eth_tx_burst and other static inline > > > > ethdev functions not inline. They are referencing DPDK internal > > > > structures and inlining forces those structures to be exposed to user > > applications. > > > > > > > > In internal testing with i40e NICs a performance drop of about 2% > > > > was observed with testpmd. > > > > > > I tested on two class of arm64 machines(Highend and lowend) one has > > > 1.4% drop And other one has 3.6% drop. > > > > > This is with testpmd only right? I'd just point out that we need to remember that > > these numbers need to be scaled down appropriately for a realworld app where > > IO is only a (hopefully small) proportion of the packet processing budget. For > > example, I would expect the ~2% drop we saw in testpmd to correspond to > > <0.5% drop in something like OVS. > > I see it as bit different view, Cycles saved infrastructure layer, cycles gained in > application. So IMO it vary between end user application need what kind of > machine it runs. > Sure. My thinking more is that to get ABI compatibility involves some tradeoffs and spending one more cycle per-packet when an app workload is typically hundreds of cycles, I believe, is a small cost worth paying. > > > > > I second to not expose internal data structure to avoid ABI break. > > > > > > IMO, This patch has performance issue due to it is fixing it in simple > > > way. > > > > > > It is not worth two have function call overhead to call the driver > > > function. Some thoughts below to reduce the performance impact > > > without exposing internal structures. > > > > > The big concern I have with what you propose is that would involve changing > > each and every ethdev driver in DPDK! I'd prefer to make sure that the impact of > > this change is actually felt in real-world apps before we start looking to make > > such updates across the DPDK codebase. > > I see those changes are NO BRAINER from driver POV. Once we add in one driver, individual > PMD Maintainer can update easily. I think, we can do it once for all. Ok, if it's doable in one go then sure. The issue is that if even one driver is not updated we can't switch over, all have to effectively be done simultaneously. [It would also make backporting fixes trickier, but I wouldn't be concerned about that particularly.] Have you tried out making the changes to a driver or two, to see how large the delta is? [And to verify it doesn't affect performance] > I am sure, you must aware of How hard is make 2% improvement in driver. I can spend time in > This NO brainer to get 2% improvement back. I prefer later. > The other alternative I see is to leave the inline functions there, just disabled by default, and put in a build-time option for reduced ABI compatibility. That way the standard-built packages are all ABI compatible, but for those who absolutely need max perf and are rolling-their-own-build to get it can disable that ABI compatibility. /Bruce