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 C71C1A0526; Tue, 21 Jul 2020 01:21:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 199711BFBC; Tue, 21 Jul 2020 01:21:42 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40065.outbound.protection.outlook.com [40.107.4.65]) by dpdk.org (Postfix) with ESMTP id 354E0E07 for ; Tue, 21 Jul 2020 01:21:41 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AlPGyj8wfFctww0Jflo10OBeH7X2hGD36cEOswnP1kemLmcwQrX1yCN66nxnw3n3KE3M/ntLr8Vyk3wx6rRRbIJN/86HSrCxbUbDP48driG3Jeyhz26Rv6HNcCpEq9F/u7D5FE7W6hbQ/T3NQEhIexdAjuuAz3QXIx97BI1lLhTolQvjUVrMR6/DpR3OnUEFzw4ga80LDz6VuauY3WZKDNONHiZvOPb7nesbp+I5E6Q1LMN1HK8rSKJczCR+JHhzY//WmTVL3BA137xrrdXvc5Q8MyBT1QI4ylden5Rl14nh7bse0SNU2hOektwZoS31t/ISHrfRvaQt4O/nGEoM8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hot1rS8fBWBbJ5z0j3ibdgQAam+Qq0rbW4VUBFmSHPQ=; b=mSUR2shMFWBR3b2dcdB3SG6gNm0kfpRLe2y9J9ktyBb7x13iBZW9IPm4PtS3FLjsPF7mjbFAwxYc0h62fDSQZVx1tYjjw3nB3XWiC+BljWmol+qzcw5iKlD73XnqGUsSKRNmVCLr0WsAchelUCFKmLZJJO3GL28pk4ItKPEF15ul49wNaMVtcnTOuB2VtrSOSv6K5OER6wIyFX2ee9OZfZ840Z2xS82oLkCRXu8fHuU5SKjPbjzC10NRvLJb85yRdOmdKi1SFfEIJaqOz2kiUSORmHzRhIl7jJOb2AaVW2lhOKjig8Nvgq+saCByqZ/oPdvvwImXvMquEBvussUkDA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hot1rS8fBWBbJ5z0j3ibdgQAam+Qq0rbW4VUBFmSHPQ=; b=JB5LzvBxivtD8wK400FOS42g7NmsejJWGLWu5snYAbeHwnRjkKnYXylU9ntP3lMhY0Ba9JU6r+8Myjnzqee0+mOi+CDB8c7Tk5uvOEPZYbQ0ZrPZagpxoL96Ax3JvK0ttxpfF79XxjTBjioYQ9ov82RwrTUsQq6M6qnnVcAuqLE= Received: from AM0PR05MB4561.eurprd05.prod.outlook.com (2603:10a6:208:ad::20) by AM0PR05MB6307.eurprd05.prod.outlook.com (2603:10a6:208:145::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.23; Mon, 20 Jul 2020 23:21:39 +0000 Received: from AM0PR05MB4561.eurprd05.prod.outlook.com ([fe80::456:89d0:7f5c:c6c3]) by AM0PR05MB4561.eurprd05.prod.outlook.com ([fe80::456:89d0:7f5c:c6c3%4]) with mapi id 15.20.3195.024; Mon, 20 Jul 2020 23:21:39 +0000 From: Alexander Kozyrev To: Phil Yang , Matan Azrad , Shahaf Shuler , Slava Ovsiienko CC: Honnappa Nagarahalli , "drc@linux.vnet.ibm.com" , nd , "dev@dpdk.org" , nd Thread-Topic: [dpdk-dev] [PATCH v3] net/mlx5: relaxed ordering for multi-packet RQ buffer refcnt Thread-Index: AQHWWMITvRJ6cPOqEEiXXa7L02rE6qkRJjhA Date: Mon, 20 Jul 2020 23:21:39 +0000 Message-ID: References: <20200410164127.54229-7-gavin.hu@arm.com> <1592900807-13289-1-git-send-email-phil.yang@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [2607:fea8:e380:d8e0:cc8e:6267:1dfa:5b55] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: c18cde49-c659-4bcc-03da-08d82d03a7c0 x-ms-traffictypediagnostic: AM0PR05MB6307: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nKZtiHVY0tw8/VRIxz1bShyJnnETb3inVw3PGWlfv5/l1J+/3nGoMDtulXkP8fszTlTWPhq/GCXLVBFXvgQ2k1gy1FenMJcTJHXTySMo0jjDLve3qmB0nuZIgQhu8wxshpRjGWzwuO/GQC/PwYWeawSOEI4fGMz9cADhZDu9rPO820M2YxP9ucFetpkeJf5PZUnbKSQXYfBA+uRmQTmYnYYkSuErZfIv/Nmc2G2xFx9ujIIaCHUIERFnskeLTqlUtuiGwD7/QWrCG03mCGTFMs2Y9WTcwProWE+EdYiiy6vVYbpM/FKbSCRwpG9iZrGj0Hstz/+ldX5HJqWACC3HIVo35I4FhmGadiF8L7wPuzfl+MQKJJyrhKXMNx0HfQU9vapdqF3K3oJqNCZ8t69YP7bjVG1WFFAzWYW8qqEjoQAvKCnp5CA3+LdsU3oajtzB3Be+zK8PzNX8XZTCZ2Vjcqszvf2DeDRJo/r9rZbBWGo= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB4561.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(39860400002)(346002)(136003)(376002)(366004)(2906002)(52536014)(7696005)(316002)(110136005)(5660300002)(54906003)(55016002)(478600001)(83380400001)(45080400002)(9686003)(33656002)(66476007)(66946007)(64756008)(66556008)(966005)(53546011)(86362001)(71200400001)(6636002)(8936002)(83080400001)(6506007)(76116006)(186003)(4326008)(66446008); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: he4XBo3APMu/jkgB3HwFdP1XDUYQs5H273nBk5hhtHdSzWfhzfRqidrHKeil6f6gOW/THXfFfLY7Mnf5psJbj3XcgBuPBnA5/D3D/ESovXMmo6gQxJNFw4dW4gc7WgB3BDnrTzZ10PM7gLQOUUVmj9EPy4xNYy0P+43q7KMHuYB7ZSyzelep4v2WoRtW76kcEcsVYuvE0DTEuBWUuw8Qb1jkDFnk/vgK+oOY/Z9JsQsYUj+SGDGpzT+6jSVMDEFhfG3Qg0sB21W/df6wi37yXO5+bBHW2WTZ458aOMoTEToM4qoplpb67+b5xaVtnTuBQ5AECiGPaR06zqMbx5u8Q5QDAmbyJT8NIA2eqfc4stCKCXABwOMQ9y+XnV2ypd3kua6GQDyCbLsvmPRwY+dNTx13jN42aUncjHrZfg82FHe3/Fpv891QyhvvY7Xfz24vDscPlgWE7LgxKn3Xp7wyzUxhc74FvRNm0d0P2T4LJ0YJ5r/r6b0tAQ/plURObp+nNEpfX/zv/Jl80NHvazVt3UJOSpdsc/3iGSG1dFhIK9JzFsd/b6dkEJiHH6PLR8Gh Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB4561.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c18cde49-c659-4bcc-03da-08d82d03a7c0 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jul 2020 23:21:39.4026 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: URVCpAwK6EQKv5lfnR7BZ6cM32rWzOUkkc0nI3iJTOXapsxvmXrH+L0KVRad/MgITYmsm1mb0YhAv1yA74DqGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB6307 Subject: Re: [dpdk-dev] [PATCH v3] net/mlx5: relaxed ordering for multi-packet RQ buffer refcnt 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" Hi Phil Yang, we noticed that this patch gives us 10% of performance degrad= ation on ARM. x86 seems to be unaffected though. Do you know what may be the reason of th= is behavior? Regards, Alex > -----Original Message----- > From: dev On Behalf Of Phil Yang > Sent: Sunday, July 12, 2020 23:02 > To: Matan Azrad ; Shahaf Shuler > ; Slava Ovsiienko > Cc: Honnappa Nagarahalli ; > drc@linux.vnet.ibm.com; nd ; Phil Yang ; > dev@dpdk.org; nd > Subject: Re: [dpdk-dev] [PATCH v3] net/mlx5: relaxed ordering for multi-p= acket > RQ buffer refcnt >=20 > Hi, >=20 > We are also doing C11 atomics converting for other components. > Your insight would be much appreciated. >=20 > Thanks, > Phil Yang >=20 > > -----Original Message----- > > From: dev On Behalf Of Phil Yang > > Sent: Tuesday, June 23, 2020 4:27 PM > > To: dev@dpdk.org > > Cc: matan@mellanox.com; shahafs@mellanox.com; > > viacheslavo@mellanox.com; Honnappa Nagarahalli > > ; drc@linux.vnet.ibm.com; nd > > > > Subject: [dpdk-dev] [PATCH v3] net/mlx5: relaxed ordering for > > multi-packet RQ buffer refcnt > > > > Use c11 atomics with explicit ordering instead of the rte_atomic ops > > which enforce unnecessary barriers on aarch64. > > > > Signed-off-by: Phil Yang > > --- > > v3: > > Split from the patchset: > > https://eur03.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fpatc= h > > > work.dpdk.org%2Fcover%2F68159%2F&data=3D02%7C01%7Cakozyrev%40m > ellano > > > x.com%7C1e3dc839a3604924fdf208d826d934ad%7Ca652971c7d2e4d9ba6a4d1 > 49256 > > > f461b%7C0%7C0%7C637302061620808255&sdata=3DmRXbgPi6HyrVtP04Vl7 > Bx8lD0 > > trVP7noQlpOD7gBoTQ%3D&reserved=3D0 > > > > drivers/net/mlx5/mlx5_rxq.c | 2 +- > > drivers/net/mlx5/mlx5_rxtx.c | 16 +++++++++------- > > drivers/net/mlx5/mlx5_rxtx.h | 2 +- > > 3 files changed, 11 insertions(+), 9 deletions(-) > > > > diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c > > index dda0073..7f487f1 100644 > > --- a/drivers/net/mlx5/mlx5_rxq.c > > +++ b/drivers/net/mlx5/mlx5_rxq.c > > @@ -1545,7 +1545,7 @@ mlx5_mprq_buf_init(struct rte_mempool *mp, void > > *opaque_arg, > > > > memset(_m, 0, sizeof(*buf)); > > buf->mp =3D mp; > > - rte_atomic16_set(&buf->refcnt, 1); > > + __atomic_store_n(&buf->refcnt, 1, __ATOMIC_RELAXED); > > for (j =3D 0; j !=3D strd_n; ++j) { > > shinfo =3D &buf->shinfos[j]; > > shinfo->free_cb =3D mlx5_mprq_buf_free_cb; diff --git > > a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index > > e4106bf..f0eda88 100644 > > --- a/drivers/net/mlx5/mlx5_rxtx.c > > +++ b/drivers/net/mlx5/mlx5_rxtx.c > > @@ -1595,10 +1595,11 @@ mlx5_mprq_buf_free_cb(void *addr > __rte_unused, > > void *opaque) { > > struct mlx5_mprq_buf *buf =3D opaque; > > > > - if (rte_atomic16_read(&buf->refcnt) =3D=3D 1) { > > + if (__atomic_load_n(&buf->refcnt, __ATOMIC_RELAXED) =3D=3D 1) { > > rte_mempool_put(buf->mp, buf); > > - } else if (rte_atomic16_add_return(&buf->refcnt, -1) =3D=3D 0) { > > - rte_atomic16_set(&buf->refcnt, 1); > > + } else if (unlikely(__atomic_sub_fetch(&buf->refcnt, 1, > > + __ATOMIC_RELAXED) =3D=3D 0)) { > > + __atomic_store_n(&buf->refcnt, 1, __ATOMIC_RELAXED); > > rte_mempool_put(buf->mp, buf); > > } > > } > > @@ -1678,7 +1679,8 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct > > rte_mbuf **pkts, uint16_t pkts_n) > > > > if (consumed_strd =3D=3D strd_n) { > > /* Replace WQE only if the buffer is still in use. */ > > - if (rte_atomic16_read(&buf->refcnt) > 1) { > > + if (__atomic_load_n(&buf->refcnt, > > + __ATOMIC_RELAXED) > 1) { > > mprq_buf_replace(rxq, rq_ci & wq_mask, > strd_n); > > /* Release the old buffer. */ > > mlx5_mprq_buf_free(buf); > > @@ -1790,9 +1792,9 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, struct > > rte_mbuf **pkts, uint16_t pkts_n) > > void *buf_addr; > > > > /* Increment the refcnt of the whole chunk. */ > > - rte_atomic16_add_return(&buf->refcnt, 1); > > - MLX5_ASSERT((uint16_t)rte_atomic16_read(&buf- > > >refcnt) <=3D > > - strd_n + 1); > > + __atomic_add_fetch(&buf->refcnt, 1, > > __ATOMIC_ACQUIRE); > > + MLX5_ASSERT(__atomic_load_n(&buf->refcnt, > > + __ATOMIC_RELAXED) <=3D strd_n + 1); > > buf_addr =3D RTE_PTR_SUB(addr, > > RTE_PKTMBUF_HEADROOM); > > /* > > * MLX5 device doesn't use iova but it is necessary in a > diff > > --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h > > index 26621ff..0fc15f3 100644 > > --- a/drivers/net/mlx5/mlx5_rxtx.h > > +++ b/drivers/net/mlx5/mlx5_rxtx.h > > @@ -78,7 +78,7 @@ struct rxq_zip { > > /* Multi-Packet RQ buffer header. */ > > struct mlx5_mprq_buf { > > struct rte_mempool *mp; > > - rte_atomic16_t refcnt; /* Atomically accessed refcnt. */ > > + uint16_t refcnt; /* Atomically accessed refcnt. */ > > uint8_t pad[RTE_PKTMBUF_HEADROOM]; /* Headroom for the first > packet. > > */ > > struct rte_mbuf_ext_shared_info shinfos[]; > > /* > > -- > > 2.7.4