From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ananyev, Konstantin" Subject: Re: [PATCH] net/i40e: update tx_free_threshold to improve zero copy performance Date: Thu, 12 Apr 2018 13:56:25 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258AE914557@IRSMSX102.ger.corp.intel.com> References: <20180412053226.295226-1-junjie.j.chen@intel.com> <2601191342CEEE43887BDE71AB977258AE9143FC@IRSMSX102.ger.corp.intel.com> <039ED4275CED7440929022BC67E7061153190506@SHSMSX103.ccr.corp.intel.com> <20180412131205.GA49540@bricha3-MOBL.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "Chen, Junjie J" , "Xing, Beilei" , "dev@dpdk.org" To: "Richardson, Bruce" , "Zhang, Qi Z" Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id ECB7D1BBB6 for ; Thu, 12 Apr 2018 15:56:37 +0200 (CEST) In-Reply-To: <20180412131205.GA49540@bricha3-MOBL.ger.corp.intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > -----Original Message----- > From: Richardson, Bruce > Sent: Thursday, April 12, 2018 2:12 PM > To: Zhang, Qi Z > Cc: Ananyev, Konstantin ; Chen, Junjie J ; Xing, Beilei ; > dev@dpdk.org; Chen@dpdk.org > Subject: Re: [dpdk-dev] [PATCH] net/i40e: update tx_free_threshold to imp= rove zero copy performance >=20 > On Thu, Apr 12, 2018 at 12:20:07PM +0000, Zhang, Qi Z wrote: > > Hi Junjie: > > > > > -----Original Message----- > > > From: Ananyev, Konstantin > > > Sent: Thursday, April 12, 2018 7:52 PM > > > To: Chen, Junjie J ; Xing, Beilei > > > ; Zhang, Qi Z > > > Cc: dev@dpdk.org; Chen, Junjie J ; Chen@dpdk= .org > > > Subject: RE: [dpdk-dev] [PATCH] net/i40e: update tx_free_threshold to > > > improve zero copy performance > > > > > > > > > > > > > -----Original Message----- > > > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Junjie Chen > > > > Sent: Thursday, April 12, 2018 6:32 AM > > > > To: Xing, Beilei ; Zhang, Qi Z > > > > > > > > Cc: dev@dpdk.org; Chen, Junjie J ; > > > > Chen@dpdk.org > > > > Subject: [dpdk-dev] [PATCH] net/i40e: update tx_free_threshold to > > > > improve zero copy performance > > > > > > > > From: "Chen, Junjie" > > > > > > > > When vhost backend works in dequeue zero copy mode, nic locks virti= o's > > > > buffer until there is less or equal than tx_free_threshold buffer > > > > remain and then free number of tx burst buffer. This causes packets > > > > drop in virtio side and impacts zero copy performance. So we need t= o > > > > increase the tx_free_threshold to let nic free virtio's buffer as s= oon as > > > possible. > > > > Also we keep the upper limit to tx max burst size to ensure least > > > > performance impact on non zero copy. > > > > > > Ok but why vhost app can't just use tx_queue_setup() to specify desir= ed value > > > for tx_free_thresh? > > > Why instead we have to modify PMD to satisfy needs of one app? > > > Konstantin > > > > I think the commit log could include the explanation that this change i= s proved not impact > > driver's performance and it reduce total memory be locked by PMD Tx, so= basically it benefit > > application that share the same mem pool overall, vhost dequeue zero co= py is one of the example. > > > > > > > > > > > > > Signed-off-by: Chen, Junjie > > > > --- > > > > drivers/net/i40e/i40e_rxtx.c | 2 ++ > > > > 1 file changed, 2 insertions(+) > > > > > > > > diff --git a/drivers/net/i40e/i40e_rxtx.c > > > > b/drivers/net/i40e/i40e_rxtx.c index 56a854cec..d9569bdc9 100644 > > > > --- a/drivers/net/i40e/i40e_rxtx.c > > > > +++ b/drivers/net/i40e/i40e_rxtx.c > > > > @@ -2039,6 +2039,8 @@ i40e_dev_tx_queue_setup(struct rte_eth_dev > > > *dev, > > > > tx_conf->tx_rs_thresh : DEFAULT_TX_RS_THRESH); > > > > tx_free_thresh =3D (uint16_t)((tx_conf->tx_free_thresh) ? > > > > tx_conf->tx_free_thresh : DEFAULT_TX_FREE_THRESH); > > > > + if (tx_free_thresh < nb_desc - I40E_TX_MAX_BURST) > > > > + tx_free_thresh =3D nb_desc - I40E_TX_MAX_BURST; > > > > I think we'd better still allow application to set tx_free_thresh, sinc= e a small tx_free_thresh may still have benefit to let driver handle the > first strike after device restarted > > So, nb_desc - I40E_TX_MAX_BURST can only be set when tx_conf->tx_rs_thr= esh =3D 0 > > > > Regards > > Qi > > > +1 for just changing in this case. >=20 Basically you suggest to change DEFAULT_TX_FREE_THRESH. Are you sure that it wouldn't impact any application on any platform (IA, a= rm, etc.)? As I remember we already had similar conversation few years ago. Again if memory serves me right - one of the contr-arguments about setting = that value too high was that PMD might start to check DD bit inside TXD too often - and will co= llide with HW updating it more often. As I remember it was suggested to use 1/2 or 3/4 of nb_desc as default one. Though I still don't see what is wrong with setting tx_free_thresh vi queue= _setup() for that particular case. In that case we can be sure that no other stuff will be affected. After all - that's why it is configurable. Konstantin