[dpdk-dev] [PATCH v8 0/3] ticketlock: implement ticketlock and add test case

Ananyev, Konstantin konstantin.ananyev at intel.com
Wed Mar 27 12:20:51 CET 2019


> 
> v8:
>     1. Enhance functional test for ticketlock by adding extra verification to ensure correct locking in MT env.
>     2. Amortize the cost of getting time in test case.
>     (Suggested by Konstantin Ananyev)
> 
> 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                         | 319 +++++++++++++++++++++
>  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, 608 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
> 
> --

Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>

> 2.7.4



More information about the dev mailing list