[dpdk-dev] [PATCH v7 0/3] ticketlock: implement ticketlock and add test case
Joyce Kong
joyce.kong at arm.com
Thu Mar 21 10:13:25 CET 2019
v7:
1. Modify trylock to compare both current and next fields to gurantee the lock
being obtained only if tl->current==1(lock is free).
As within the trylock function, suppose next==curr=1, then this thread will
experience really long context switch, and next time it continues its
execution and tl->next wraps around to 1 again and tl_couurent==0(lock
held by another thread),this trylock will return a success, that means
two threads holding the lock. (Suggested by Konstantin Ananyev)
2. Let all archs use generic ticketlock implementation.
v6:
Add rte_ticketlock.h in lib/librte_eal/common/include/arch/arm/.
Sort header inside ticketlock files by alphabetical order.
v5:
Change the variants inside rte_ticket_lock from unint to uint16_t for binary
compatibility with the plain spin lock(suggested by Honnappa Nagarahalli)).
v4:
Change some assignment operation in recursive ticket lock to __atomic.
V3:
1.Update ticketlock intrduction(suggested by Honnappa Nagarahalli).
2.Change the implementation of rte_ticketlock_trylock to CAS(suggested by Honnappa Nagarahalli).
V2:
1.Update commit message(suggested by Jerin Jacob).
2.Add ticketlock test cases(suggested by Jerin Jacob).
V1:
Implement ticket lock to improve lock fairness and prdictability.
As shown on thundex-2 platform:
*** ticketlock_autotest with this patch ***
Core [0] count = 496
Core [1] count = 495
Core [2] count = 498
...
Core [209] count = 488
Core [210] count = 490
Core [211] count = 474
Joyce Kong (3):
eal/ticketlock: ticket based to improve fairness
eal/ticketlock: enable generic ticketlock on all arch
test/ticketlock: add ticket lock test case
MAINTAINERS | 5 +
app/test/Makefile | 1 +
app/test/autotest_data.py | 6 +
app/test/meson.build | 1 +
app/test/test_ticketlock.c | 311 +++++++++++++++++++++
doc/api/doxy-api-index.md | 1 +
lib/librte_eal/common/Makefile | 2 +-
.../common/include/arch/arm/rte_ticketlock.h | 22 ++
.../common/include/arch/ppc_64/rte_ticketlock.h | 18 ++
.../common/include/arch/x86/rte_ticketlock.h | 18 ++
.../common/include/generic/rte_ticketlock.h | 215 ++++++++++++++
lib/librte_eal/common/meson.build | 1 +
12 files changed, 600 insertions(+), 1 deletion(-)
create mode 100644 app/test/test_ticketlock.c
create mode 100644 lib/librte_eal/common/include/arch/arm/rte_ticketlock.h
create mode 100644 lib/librte_eal/common/include/arch/ppc_64/rte_ticketlock.h
create mode 100644 lib/librte_eal/common/include/arch/x86/rte_ticketlock.h
create mode 100644 lib/librte_eal/common/include/generic/rte_ticketlock.h
--
2.7.4
More information about the dev
mailing list