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 CFF16A00E6 for ; Tue, 9 Jul 2019 16:18:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F2DE71B955; Tue, 9 Jul 2019 16:18:57 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 5FAF637A2; Tue, 9 Jul 2019 16:18:56 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Jul 2019 07:18:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,470,1557212400"; d="scan'208";a="156190779" Received: from irsmsx104.ger.corp.intel.com ([163.33.3.159]) by orsmga007.jf.intel.com with ESMTP; 09 Jul 2019 07:18:52 -0700 Received: from irsmsx108.ger.corp.intel.com ([169.254.11.229]) by IRSMSX104.ger.corp.intel.com ([169.254.5.40]) with mapi id 14.03.0439.000; Tue, 9 Jul 2019 15:18:52 +0100 From: "Dumitrescu, Cristian" To: "Wang, Xiao W" , "Singh, Jasvinder" CC: "dev@dpdk.org" , "stable@dpdk.org" Thread-Topic: [PATCH] net/softnic: fix pipeline time calculation Thread-Index: AQHVCyi6w0xS/eE85EuuzvB+iue2J6aFV+2AgALh0wCAOjAR0IAALEwAgAASRyA= Date: Tue, 9 Jul 2019 14:18:52 +0000 Message-ID: <3EB4FA525960D640B5BDFFD6A3D891268E8EBEFB@IRSMSX108.ger.corp.intel.com> References: <20190515135904.81415-1-xiao.w.wang@intel.com> <54CBAA185211B4429112C315DA58FF6D3FD15433@IRSMSX101.ger.corp.intel.com> <3EB4FA525960D640B5BDFFD6A3D891268E8EBDB3@IRSMSX108.ger.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzkyNjU0OTMtYmZiZS00NzJkLWFlZDQtMmI5MGUwNzFhNzkzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoibUlwTXhuQnI3UEZXMVJiTndnUndidUlDcjBhK25WYmdsSHVuYmZ2d3NLcGV0ZElGTzlUc1NsTVNSZU93Y0RGKyJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] net/softnic: fix pipeline time calculation 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" > -----Original Message----- > From: Wang, Xiao W > Sent: Tuesday, July 9, 2019 3:00 PM > To: Dumitrescu, Cristian ; Singh, Jasvinde= r > > Cc: dev@dpdk.org; stable@dpdk.org > Subject: RE: [PATCH] net/softnic: fix pipeline time calculation >=20 >=20 >=20 > > -----Original Message----- > > From: Dumitrescu, Cristian > > Sent: Tuesday, July 9, 2019 6:32 PM > > To: Wang, Xiao W ; Singh, Jasvinder > > > > Cc: dev@dpdk.org; stable@dpdk.org > > Subject: RE: [PATCH] net/softnic: fix pipeline time calculation > > > > > > > > > -----Original Message----- > > > From: Wang, Xiao W > > > Sent: Sunday, June 2, 2019 11:46 AM > > > To: Singh, Jasvinder > > > Cc: dev@dpdk.org; Dumitrescu, Cristian > ; > > > stable@dpdk.org > > > Subject: RE: [PATCH] net/softnic: fix pipeline time calculation > > > > > > > > > > > > > -----Original Message----- > > > > From: Singh, Jasvinder > > > > Sent: Friday, May 31, 2019 10:46 PM > > > > To: Wang, Xiao W > > > > Cc: dev@dpdk.org; Dumitrescu, Cristian > ; > > > > stable@dpdk.org > > > > Subject: RE: [PATCH] net/softnic: fix pipeline time calculation > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > From: Wang, Xiao W > > > > > Sent: Wednesday, May 15, 2019 2:59 PM > > > > > To: Singh, Jasvinder > > > > > Cc: dev@dpdk.org; Dumitrescu, Cristian > > > ; > > > > > Wang, Xiao W ; stable@dpdk.org > > > > > Subject: [PATCH] net/softnic: fix pipeline time calculation > > > > > > > > > > When a new pipeline is added to a thread, the "time_next_min" > value > > > may > > > > > need update, otherwise this pipeline won't get served timely. > > > > > > > > > > Fixes: 70709c78fda6 ("net/softnic: add command to enable/disable > > > pipeline") > > > > > Cc: stable@dpdk.org > > > > > > > > > > Signed-off-by: Xiao Wang > > > > > --- > > > > > drivers/net/softnic/rte_eth_softnic_thread.c | 6 ++++++ > > > > > 1 file changed, 6 insertions(+) > > > > > > > > > > diff --git a/drivers/net/softnic/rte_eth_softnic_thread.c > > > > > b/drivers/net/softnic/rte_eth_softnic_thread.c > > > > > index 855408e98..2b482117d 100644 > > > > > --- a/drivers/net/softnic/rte_eth_softnic_thread.c > > > > > +++ b/drivers/net/softnic/rte_eth_softnic_thread.c > > > > > @@ -337,6 +337,9 @@ softnic_thread_pipeline_enable(struct > > > > pmd_internals > > > > > *softnic, > > > > > tdp->timer_period =3D (rte_get_tsc_hz() * p- > > > >timer_period_ms) > > > > / > > > > > 1000; > > > > > tdp->time_next =3D rte_get_tsc_cycles() + tdp- > >timer_period; > > > > > > > > > > + if (tdp->time_next < td->time_next_min) > > > > > + td->time_next_min =3D tdp->time_next; > > > > > + > > > > > td->n_pipelines++; > > > > > > > > > > /* Pipeline */ > > > > > @@ -522,6 +525,9 @@ thread_msg_handle_pipeline_enable(struct > > > > > softnic_thread_data *t, > > > > > (rte_get_tsc_hz() * req- > >pipeline_enable.timer_period_ms) > > > / > > > > > 1000; > > > > > p->time_next =3D rte_get_tsc_cycles() + p->timer_period; > > > > > > > > > > + if (p->time_next < t->time_next_min) > > > > > + t->time_next_min =3D p->time_next; > > > > > + > > > > > t->n_pipelines++; > > > > > > > > > > /* Response */ > > > > > -- > > > > > 2.15.1 > > > > > > > > > > > > Hi Wang, > > > > > > > > Timer values for pipelines and thread level message handlers are > already > > > > adjusted in runtime function rte_pmd_softnic_run_internal(). In > runtime > > > > function, the values of t->time_next_min is updated as well. IMO, > above > > > > changes not needed. Could you help with the case where timer > > > adjustments in > > > > runtime not working? > > > > > > Hi Jasvinder, > > > > > > the values of t->time_next_min is updated only when the pipeline > message > > > and thread message get handled, but not when the pipeline is added to > > that > > > thread. E.g. when a thread t->time_next_min is ~100ms later, and a ne= w > > > pipeline is added to that thread with timer_period_ms parameter set t= o > > > 10ms, then this pipeline's control message will not be served until 1= 00ms > > > later. > > > > > > BRs, > > > Xiao > > > > > > > > > > > Thanks, > > > > Jasvinder > > > > > > > > NAK > > > > There are no bugs/issues fixed by this patch, but there are side effect= s > > introduced that maybe you did not anticipate. > > > > - Yes, the first message handler for a newly added pipeline might be sl= ightly > > delayed, but this is harmless. >=20 > As the above example shows, the new pipeline handling may get ~90ms > delayed, and > maybe the user wants this newly added pipeline to be real-time and 90ms > delay is too long > for that application. >=20 The example you provide is probably not realistic, as typically the thread = period should be one order of magnitude smaller than the pipeline period, w= hile your example is the other way around. If the pipeline period is smaller than the thread period, the pipeline peri= od is essentially upgraded to the thread period, as the thread is going to = sample for pipeline messages every thread period without ever meeting the h= igher sampling frequency that the pipeline ideally wants, right? So basically set thread period to 10 ms and the pipeline period to 100 ms, = which means once every 10 thread check this pipeline is picked for message = work. > > > > - For a given thread, we periodically iterate through all pipelines the= current > > thread is running and check if there are any pending messages for each > > pipeline (function rte_pmd_softnic_run_internal). We also update the > > deadline for the next message handling session for the thread (thread- > > >time_next_min), which should only be changed by the thread (existing >=20 > Yeah it's about (thead->time_next_min), if current time passes it, then w= e > would > Iteratively check each pipepine, only when pipeline's time_next also pass= es > it, we > handle this pipeline. >=20 > If the thread is running, the softnic_thread_data should only be changed = by > the > thread itself. And this patch doesn't break this. >=20 Yes, it is the thread changing this variable based on configuration of pipe= line periods for each pipeline, but its value needs to be stable during the= thread iteration through the pipelines. If you change this in the middle o= f the for loop (by handling the message to add a pipeline), you are basical= ly changing the behavior of remaining iterations. > > code); if this is changed by the pipeline message handler, then there i= s the > > risk that some pipelines will run their message handler again very soon > after, > > as the deadline had been brought earlier. Makes sense? >=20 > The THREAD_REQ_PIPELINE_ENABLE message is handled in > thread_msg_handle(), > not in pipeline_msg_handle(). >=20 > Thanks for your comments. >=20 > -Xiao Thanks for your proposal and for this discussion! Cristian