DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ruifeng Wang <ruifeng.wang@arm.com>
Cc: dev@dpdk.org, david.marchand@redhat.com, thomas@monjalon.net,
	bruce.richardson@intel.com, jerinj@marvell.com, nd@arm.com,
	honnappa.nagarahalli@arm.com, ruifeng.wang@arm.com,
	Gavin Hu <gavin.hu@arm.com>, Phil Yang <phil.yang@arm.com>,
	Steve Capper <steve.capper@arm.com>,
	Ola Liljedahl <ola.liljedahl@arm.com>,
	Pavan Nikhilesh <pbhagavatula@marvell.com>
Subject: [dpdk-dev] [PATCH v4 1/3] spinlock: use wfe to reduce contention on aarch64
Date: Wed,  7 Jul 2021 13:43:38 +0800	[thread overview]
Message-ID: <20210707054341.1607419-2-ruifeng.wang@arm.com> (raw)
In-Reply-To: <20210707054341.1607419-1-ruifeng.wang@arm.com>

From: Gavin Hu <gavin.hu@arm.com>

In acquiring a spinlock, cores repeatedly poll the lock variable.
This is replaced by rte_wait_until_equal API.

Running the micro benchmarking and the testpmd and l3fwd traffic tests
on ThunderX2, Ampere eMAG80 and Arm N1SDP, everything went well and no
notable performance gain nor degradation was measured.

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Tested-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
 lib/eal/include/generic/rte_spinlock.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/eal/include/generic/rte_spinlock.h b/lib/eal/include/generic/rte_spinlock.h
index 87ae7a4f18..40fe49d5ad 100644
--- a/lib/eal/include/generic/rte_spinlock.h
+++ b/lib/eal/include/generic/rte_spinlock.h
@@ -65,8 +65,8 @@ rte_spinlock_lock(rte_spinlock_t *sl)
 
 	while (!__atomic_compare_exchange_n(&sl->locked, &exp, 1, 0,
 				__ATOMIC_ACQUIRE, __ATOMIC_RELAXED)) {
-		while (__atomic_load_n(&sl->locked, __ATOMIC_RELAXED))
-			rte_pause();
+		rte_wait_until_equal_32((volatile uint32_t *)&sl->locked,
+			       0, __ATOMIC_RELAXED);
 		exp = 0;
 	}
 }
-- 
2.25.1


  reply	other threads:[~2021-07-07  5:44 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-24  7:07 [dpdk-dev] [PATCH v1 0/2] Use WFE for spinlock and ring Gavin Hu
2020-04-24  7:07 ` [dpdk-dev] [PATCH v1 1/2] spinlock: use wfe to reduce contention on aarch64 Gavin Hu
2020-04-24  7:07 ` [dpdk-dev] [PATCH v1 2/2] ring: use wfe to wait for ring tail update " Gavin Hu
2020-04-24 13:23   ` Ananyev, Konstantin
2020-04-26  8:41     ` Gavin Hu
2020-04-24 14:46   ` Honnappa Nagarahalli
2020-04-26  8:33     ` Gavin Hu
2020-04-26  8:39 ` [dpdk-dev] [PATCH v2 0/2] Use WFE for spinlock and ring Gavin Hu
2020-05-01  9:47   ` Ananyev, Konstantin
2020-05-03 14:54   ` David Marchand
2020-05-03 21:31     ` Honnappa Nagarahalli
2020-09-25 14:30       ` David Marchand
2021-03-25 14:58         ` David Marchand
2021-04-25  6:06           ` Ruifeng Wang
2021-04-25 15:56             ` Thomas Monjalon
2020-04-26  8:39 ` [dpdk-dev] [PATCH v2 1/2] spinlock: use wfe to reduce contention on aarch64 Gavin Hu
2020-04-28 12:22   ` Jerin Jacob
2020-04-26  8:39 ` [dpdk-dev] [PATCH v2 2/2] ring: use wfe to wait for ring tail update " Gavin Hu
2021-04-25  5:56 ` [dpdk-dev] Use WFE for spinlock and ring Ruifeng Wang
2021-04-25  5:56   ` [dpdk-dev] [PATCH v3 1/2] spinlock: use wfe to reduce contention on aarch64 Ruifeng Wang
2021-04-25  5:56   ` [dpdk-dev] [PATCH v3 2/2] ring: use wfe to wait for ring tail update " Ruifeng Wang
2021-04-26  5:38     ` Jerin Jacob
2021-04-28 17:17     ` Stephen Hemminger
2021-04-29 14:35       ` Ruifeng Wang
2021-04-29 15:05         ` Stephen Hemminger
2021-05-07  8:25           ` Ruifeng Wang
2021-04-28  7:42   ` [dpdk-dev] Use WFE for spinlock and ring David Marchand
2021-04-28  9:30     ` Ruifeng Wang
2021-04-28 11:13       ` Thomas Monjalon
2021-04-29 14:28         ` Ruifeng Wang
2021-04-29 15:20           ` Thomas Monjalon
2021-04-30  9:16             ` Bruce Richardson
2021-04-30 13:41               ` Honnappa Nagarahalli
2021-04-30 14:19                 ` Bruce Richardson
2021-05-07 10:18                   ` Ruifeng Wang
2021-05-07 10:24                     ` Bruce Richardson
2021-07-05  8:51                       ` David Marchand
2021-07-05 10:21                         ` Ruifeng Wang
2021-07-07 14:47   ` Stephen Hemminger
2021-07-08  9:41     ` Ruifeng Wang
2021-07-08 16:58       ` Honnappa Nagarahalli
2021-07-07  5:43 ` [dpdk-dev] [PATCH v4 0/3] " Ruifeng Wang
2021-07-07  5:43   ` Ruifeng Wang [this message]
2021-07-07  5:43   ` [dpdk-dev] [PATCH v4 2/3] ring: use wfe to wait for ring tail update on aarch64 Ruifeng Wang
2021-07-07  5:43   ` [dpdk-dev] [PATCH v4 3/3] build: add option to enable wait until equal Ruifeng Wang
2021-07-07 12:15     ` David Marchand
2021-07-07  5:48 ` [dpdk-dev] [PATCH v4 0/3] Use WFE for spinlock and ring Ruifeng Wang
2021-07-07  5:48   ` [dpdk-dev] [PATCH v4 1/3] spinlock: use wfe to reduce contention on aarch64 Ruifeng Wang
2021-07-07  5:48   ` [dpdk-dev] [PATCH v4 2/3] ring: use wfe to wait for ring tail update " Ruifeng Wang
2021-07-07  5:48   ` [dpdk-dev] [PATCH v4 3/3] build: add option to enable wait until equal Ruifeng Wang
2021-07-07  6:32     ` Thomas Monjalon
2021-07-07  6:46       ` Ruifeng Wang
2021-07-07 12:27         ` Bruce Richardson
2021-07-07 12:36           ` Jerin Jacob
2021-07-08  6:25             ` Ruifeng Wang
2021-07-08  6:32               ` Jerin Jacob
2021-07-08  7:32                 ` Thomas Monjalon
2021-07-08  9:21                   ` Ruifeng Wang
2021-07-08 10:28                     ` Thomas Monjalon
2021-07-09 18:39   ` [dpdk-dev] [PATCH v4 0/3] Use WFE for spinlock and ring Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210707054341.1607419-2-ruifeng.wang@arm.com \
    --to=ruifeng.wang@arm.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=gavin.hu@arm.com \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=jerinj@marvell.com \
    --cc=nd@arm.com \
    --cc=ola.liljedahl@arm.com \
    --cc=pbhagavatula@marvell.com \
    --cc=phil.yang@arm.com \
    --cc=steve.capper@arm.com \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).