From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Phil Yang (Arm Technology China)" Subject: Re: [PATCH v2 2/3] test/distributor: replace sync builtins with atomic builtins Date: Tue, 2 Apr 2019 03:43:14 +0000 Message-ID: References: <1546508946-12552-1-git-send-email-phil.yang@arm.com> <1553856998-25394-3-git-send-email-phil.yang@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "david.hunt@intel.com" , "reshma.pattan@intel.com" , "Gavin Hu (Arm Technology China)" , nd , nd , nd To: Honnappa Nagarahalli , "dev@dpdk.org" , "thomas@monjalon.net" Return-path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50044.outbound.protection.outlook.com [40.107.5.44]) by dpdk.org (Postfix) with ESMTP id 8BBFF4C8F for ; Tue, 2 Apr 2019 05:43:15 +0200 (CEST) In-Reply-To: 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: Honnappa Nagarahalli > Sent: Tuesday, April 2, 2019 12:24 AM > To: Phil Yang (Arm Technology China) ; dev@dpdk.org; > thomas@monjalon.net > Cc: david.hunt@intel.com; reshma.pattan@intel.com; Gavin Hu (Arm > Technology China) ; Phil Yang (Arm Technology China) > ; nd ; Honnappa Nagarahalli > ; nd > Subject: RE: [PATCH v2 2/3] test/distributor: replace sync builtins with = atomic > builtins >=20 > > > > diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c > > index 98919ec..ddab08d 100644 > > --- a/app/test/test_distributor.c > > +++ b/app/test/test_distributor.c > > @@ -62,9 +62,14 @@ handle_work(void *arg) > > struct worker_params *wp =3D arg; > > struct rte_distributor *db =3D wp->dist; > > unsigned int count =3D 0, num =3D 0; > > - unsigned int id =3D __sync_fetch_and_add(&worker_idx, 1); > > int i; > > > > +#ifdef RTE_USE_C11_MEM_MODEL > > + unsigned int id =3D __atomic_fetch_add(&worker_idx, 1, > > +__ATOMIC_RELAXED); #else > > + unsigned int id =3D __sync_fetch_and_add(&worker_idx, 1); #endif > > + > I suggest we remove the conditional compilation and just keep the > __atomic_xxx calls as this is test code. More over the distributor librar= y does > not have a C11 version of the library (assuming that using __atomic_xxx d= oes > not impact performance on other platforms negatively). This applies to ot= her > instances in this patch. Hi Honnappa, Thanks for your comments. Agree. I don't think __atomic_xxx will cause performance degradation on oth= er platforms. Remove the conditional compilation will make the code more c= lear. Thanks, Phil Yang >=20 > > for (i =3D 0; i < 8; i++) > > buf[i] =3D NULL; > > num =3D rte_distributor_get_pkt(db, id, buf, buf, num); @@ -270,7 > > +275,12 @@ handle_work_with_free_mbufs(void *arg) > > unsigned int count =3D 0; > > unsigned int i; > > unsigned int num =3D 0; > > + > > +#ifdef RTE_USE_C11_MEM_MODEL > > + unsigned int id =3D __atomic_fetch_add(&worker_idx, 1, > > +__ATOMIC_RELAXED); #else > > unsigned int id =3D __sync_fetch_and_add(&worker_idx, 1); > > +#endif > > > > for (i =3D 0; i < 8; i++) > > buf[i] =3D NULL; > > @@ -343,7 +353,13 @@ handle_work_for_shutdown_test(void *arg) > > unsigned int total =3D 0; > > unsigned int i; > > unsigned int returned =3D 0; > > + > > +#ifdef RTE_USE_C11_MEM_MODEL > > + const unsigned int id =3D __atomic_fetch_add(&worker_idx, 1, > > + __ATOMIC_RELAXED); > > +#else > > const unsigned int id =3D __sync_fetch_and_add(&worker_idx, 1); > > +#endif > > > > num =3D rte_distributor_get_pkt(d, id, buf, buf, num); > > > > diff --git a/app/test/test_distributor_perf.c > > b/app/test/test_distributor_perf.c > > index edf1998..9367460 100644 > > --- a/app/test/test_distributor_perf.c > > +++ b/app/test/test_distributor_perf.c > > @@ -111,9 +111,14 @@ handle_work(void *arg) > > unsigned int count =3D 0; > > unsigned int num =3D 0; > > int i; > > - unsigned int id =3D __sync_fetch_and_add(&worker_idx, 1); > > struct rte_mbuf *buf[8] __rte_cache_aligned; > > > > +#ifdef RTE_USE_C11_MEM_MODEL > > + unsigned int id =3D __atomic_fetch_add(&worker_idx, 1, > > +__ATOMIC_RELAXED); #else > > + unsigned int id =3D __sync_fetch_and_add(&worker_idx, 1); #endif > > + > > for (i =3D 0; i < 8; i++) > > buf[i] =3D NULL; > > > > -- > > 2.7.4